-
Posts
3,142 -
Joined
-
Last visited
Content Type
Profiles
Forums
Developer Articles
KSP2 Release Notes
Everything posted by JPLRepo
-
[1.12.x] TAC - Life Support v0.18.0 - Release 19th Sep 2021
JPLRepo replied to JPLRepo's topic in KSP1 Mod Releases
Thanks for all the info folks and a couple of save files. That helps a lot, assuming I can recreate the problem quickly I should be able to fix it quickly. I'll take a look. <Edit> except the save files are full of mods... Yeah so that doesn't help me. I don't have 2 hours to install all the mods you have installed. -
They will be Missions that you can play with the Mission Builder expansion installed. Created with the Mission Builder itself. Using all the other components that are also part of the Expansion (parts,etc).
- 1,169 replies
-
- 1
-
- expansion
- kerbal space program
- (and 3 more)
-
It's not a Scenario either. It's a Mission/s. [edit] and Mission/s are creatable, editable, etc.
- 1,169 replies
-
- 3
-
- expansion
- kerbal space program
- (and 3 more)
-
All that and more.. and it's not contract based. It's a Mission.
- 1,169 replies
-
- 3
-
- expansion
- kerbal space program
- (and 3 more)
-
Yes you can export your mission files and exchange them with other players. and of course, people will need the expansion installed to be able to play your missions.
- 1,169 replies
-
- 2
-
- expansion
- kerbal space program
- (and 3 more)
-
Not sure I get you there? Custom missions? That is the point of the mission builder? Create your own custom misions. If you mean modding the expansion then yes that will be possible. But of course only if the player has the expansion installed. Mods made to work specifically with the expansion will have some requirements around how they can determine if the expansion is installed or not. As per above. The design is that the core will contain the interfaces to any expansions, along with determining if any are installed or not. Interfacing to anything within any expansion may or may not require seperate mod versions depending on what you are doing. Modding specific components of an expansion would in all likelihood require seperate linkage to DLC DLLs. Given the extend of modding that occurs today on stock KSP I'd expect there will be cases of this. But other types of mods that don't go that deep would probably only need to interface via the core expansion Interfaces. It's still heavily in development, so not a lot more details at this point in time. But those details will become available as we get closer.
- 1,169 replies
-
- 7
-
- expansion
- kerbal space program
- (and 3 more)
-
Yes. No.
- 1,169 replies
-
- 7
-
- expansion
- kerbal space program
- (and 3 more)
-
Yup. @Sigma88
-
Check the changelog: But in laymans terms: No. It's just been done differently. Modding questions can go in this sub-forum: http://forum.kerbalspaceprogram.com/index.php?/forum/86-129-pre-release-modding-discussions/
- 167 replies
-
- pre-release
- kerbal space program
-
(and 2 more)
Tagged with:
-
Don't expect it to be fixed then. Without the bug information, no one can look at the problem.
- 167 replies
-
- 16
-
- pre-release
- kerbal space program
-
(and 2 more)
Tagged with:
-
Yes. Please raise bug reports on the public tracker. Link in the Opening post. Attach the logs, crash reports. Without the information, not a lot can be done about it. Thanks.
- 167 replies
-
- 11
-
- pre-release
- kerbal space program
-
(and 2 more)
Tagged with:
-
refresh browser cache. Oh you meant the rover.. lol. sorry long day/night.
- 167 replies
-
- 4
-
- pre-release
- kerbal space program
-
(and 2 more)
Tagged with:
-
Yeah sorry should be good now. Let us know if you hit any that break your rover.
- 167 replies
-
- 5
-
- pre-release
- kerbal space program
-
(and 2 more)
Tagged with:
-
Changelog:
- 167 replies
-
- 12
-
- pre-release
- kerbal space program
-
(and 2 more)
Tagged with:
-
Hi folks, here are the modders notes for KSP 1.2.9/1.3 as they stand for the latest prerelease. Any updates and changes will be posted in this thread. Localisation Localisation is done using a system of tags. The format of these tags is #autoLOC_xxxxxxx. It is suggested you use a similar format so you can easily detect if a tag is not loaded in the system. Tags are used as keys in a dictionary so they should be unique over all .cfg files in a single language, otherwise the first one found will override any other duplicated keys. You will find these tags throughout the cfg files in the Localization folder. The game has a database of tags that it loads on startup from config files. There are two ways these get formatted into the currently selected language. Either via a call to the Localizer class (good idea to do regardless and especially before joining or manipulating strings). The UI TMPro plugin will also call the Localizer format method before displaying text to the screen. In a lot of cases either strings have been converted to use these tags, or additional display versions of strings have been added to modules, etc. (Listed below, but there are probably others we have missed). All fonts are loaded regardless of language selected which allows display of names, etc in different languages where saves are used across different language settings. Lingoona Guidelines When using a tag that includes the characters “{” and “}”, the characters “「” and “」” should be used instead. Lingoona and TMPro support utf-16 and utf-32. So if you need a leading or trailing space in your tag you should use the unicode symbol “\u0020” as <spaces> will be automatically trimmed by the cfg loader. Format of the tag cfg files. You can create as many .cfg files as you like anywhere in GameData and they will be loaded automatically. The Config node name is “Localization” followed by language data inside the first block and then the tags and their values in the second block. Format is: Localization { es-es { #autoLOC_600040 = <b>¡PODEMOS CONSTRUIRLO!</b> } } How to add a language to KSP. Currently there is only one safe way to add a language to KSP. This method allows you to add additional languages to KSP with just a few lines of code. Method Steps: Create a duplicate of all the files located in the folder “GameData/Squad/Localization” to any other folder under the “GameData” folder. Open those files with a text editor. Edit the language tag on each of those files for example you are translating from English to German the file language tag should change from “en-us” to “de”. This is important as this game tag tells the game which translations correspond to which language and if you forget to edit this value you may end up with a mix of languages at the same time. Then edit all the #autoLoc_xxxx entries with the appropriate translated text, preserving the special format strings like <<1>> parameters or style tags <color=orange> untranslated. This special tags are used to give format to the text or inject variable values to dynamic texts. Create a simple mod, that Starts instantly and changes the language settings like in the following code example. The first method in the example updates the localization table to the desired language. The cfg url’s are stored in the game database and using the Localizer.SwitchToLanguage will switch the Localizer to use the appropriate values for that language. The second method in the example changes the font setting for the main menu to a set of characters supported by the stock font sets, keep in mind that if your language is not supported in the stock font set you may need to include a font set mod. Localizer class. The Localizer class is used to format the strings for localization. It reads the localization tags from the cfg files and replaces them with the appropriate translated texts and parses them through the Lingoona Grammar engine as necessary. Public members Instance - This the singleton instance reference allowing static access to non-static class methods and variables. Tags - This is a reference to the internal tags dictionary that is currently loaded. TagsLength - Returns the tags dictionary size. CurrentLanguage - Returns the current language code. Public methods string Format(string, params object) - This method receives a text template that can be either a localization tag or a Lingoona format string and a list of optional parameters of any type that can also be tags or Lingoona format strings, the method returns the processed string by the Lingoona Grammar engine replacing the tags with the appropriate value if found. string GetStringByTag(string) - This method receives a localization tag, the method returns the tag value if found, if the tag value is not found it will throw a KeyNotFoundException. bool TryGetStringByTag(string, out string) - This receives a localization tag and tries to get the value and save it on the out parameter, returns whatever value was found or flalse/null. void TranslateBranch(ConfigNode) - This method translates the config node values that contains either a Lingoona string or a localization tag. string GetLanguageIdFromFile - This method returns the language code from the game build settings, this value is managed by steam or downloaded language. bool SwitchToLanguage(string) - This method receives a language code and reloads the tags dictionary with the appropriate values for the specified language, returns whatever the language switch was performed. Fonts Information on adding fallback fonts and updated Parttools can be found in other posts in this sub-forum. Misc Propellent.displayName = UI display of propellent.name localized. - Is looked up from Resource definition displayName field. Resource definitions now have displayName field. FlightGlobals.GetHomeBodyDisplayName() is the localized equivalent of FlightGlobals.GetHomeBodyName() Vessel & Protovessel displaylandedAt is the localized equivalent of landedAt string. Vessel.SetLandedAt() - now has two new optional input variables, the gameobject that the vessel is landed on and/or a string with the localized version of what the vessel is landed on. Fix reflected KSPModule attribute on PartModule. Added GameEvent onCommandSeatInteractionEnter which fires before a Kerbal enters/leaves external command seat. Added a mod hook in for science values. Add public accessors to MapView MapNodes for modders. Event for Kerbal name change (to match with type/status change events). Some object renames for clashes with Unity classes BaseEventData -> BaseEventDetails BaseEventDataDelegate -> BaseEventDetailsDelegate MaterialProperty -> MaterialPropertyExtensions.MaterialProperty Add public accessor to instance of tutorial dialog CustomParameterNode.LocalizedSection is a string containing the localized tag for the Difficulty settings section you want your mods settings to appear in. Added displayseatName and displayseatIndex to InternalSeat Node. These two fields can be used in combination for the seatname that appears in game. displayseatName will be localized and if displayseatIndex is present will be passed into the localization formatter as a parameter. MultiOptionDialog and PopupDialog - the methods for creating these have been changed to include new dialogName or name fields split from the window title fields. These should contain a string that will be the name of the object in Unity, which needs to be different (and not localised) from the window title string. Atmospheric and Exospheric harvesters can now make use of an optional Intake Transform (this can be set via the ‘intakeTransformName’ field. Fixed costs for Upgrade nodes being applied in TechTree. Fixed upgraded parts to now display upgraded stats in TechTree and Parts picker in VAB/SPH. Fixed upgrade modules not displaying correctly in expanded part tooltips in TechTree and Part picker. Added GameEvent onFairingsDeployed when fairings deploy. Abstract method DisplaySection for GameParameters.CustomParameterNode have been added and need to be implemented, this method returns the localized string while the previous method Section returns the non-localized string used for compatibility. KeyBindings primary and secondary have changed from KeyCode to ExtendedKey so they cannot be used in Input.GetKey, Input.GetKeyUp, Input.GetKeyDown. instead mods should use the methods GetKeyDown, GetKeyUp & GetKey of the KeyBindings class. Added IscalarModule to ModuleJettison and public Enumerator for DragCubeSystem. Added an extra parameter on the GenericAppFrame method to receive a displayName separated from the logic. PartModule.GetModuleDisplayName() should return localized version of PartModule Name which is used extensively in UI components. IModuleInfo requires implementation of GetModuleTitle() - which is the internal/English name and GetModuleDisplayName() - which is the Localized name for UI. AGENT definition nodes should include a title = xxxx field. This is the UI localized version of the name = field and can be the same or set to a localization tag. Contracts TextGen.GenerateBackStories This method generates a contract backstory that consist of 3 sentences an introduction, a problem statement and a conclusion. The values are read from a list of possible predefined sentences that are located in the StoryDefs.cfg file. The logic of this method was modified to be more simple, localization friendly and to generate more consistent backstories. The mindset and motivation parameters have been removed and 4 new parameters have been added instead: contractType: A string containing the contract type value, this is used to read a valid sentence from the config file. allowGenericIntroduction: This value specifies if the contract introduction could be a generic introduction text. allowGenericProblem: This value specifies if the contract problem could be a generic problem text. allowGenericConclusion: This value specifies if the contract conclusion could be a generic conclusion text. Each sentence is generated by the following logic: It starts by looking for the contractType value in the current section (introduction, problem, conclusion) and reads all the possible sentences for that type. Then it does the same for the subject value and reads all the possible sentences. Then it checks if generic sentences are allowed for the current section and if so it will read all the possible generic sentences for the current section. Then using a seed value it will pick a valid sentence from any of the possible values that were read before. After obtaining a valid sentence for each part those are concatenated and then the placeholder values from agency and topic are replaced with the ones supplied in the method. CelestialBody displayName is the Celestial Body name that is used in UI displays. It includes the planets Gender tag for grammar purposes. bodyName is the Celestial Body name. It will always be in English. bodyDisplayName is the localized equivalent of bodyName - With Gender theName is removed. It is now part of the displayName fields. use_The_InName bool is removed. GetDisplayName() returns the displayName. GetName() returns the bodyName. RevealDisplayName() returns the displayName. CBAttributeMapSO contains a two new fields ; localizationTag and displayname which is the localized equivalent of the name field. CBAttributeMap for Biomes has a displayName and localizationTag miniBiome array added containing MiniBiome class of minibiomes for a body. Science ResearchAndDevelopment. - GetExperimentSubject has a new optional displaybiomeID which should be localized string of the biomeID field. ResearchAndDevelopment.GetBiomeTags(CelestialBody cb, bool IncludeMiniBiomes) will return a string list of BiomeTag names for body and optionally minibiomes depending on the value of IncludeMiniBiomes. ResearchAndDevelopment.GetBiomeTagsLocalized(CelestialBody cb) will return a list of BiomeTag names for a body and minibiomes in localized text. (equivalent of GetBiomeTags method). ResearchAndDevelopment.GetMiniBiomedisplayNameByScienceID will return either a localization tag or localized string for a minibiome where a scienceID is passed in. ResearchAndDevelopment.GetMiniBiomedisplayNameByUnityTag will return either a localization tag or localized string for a minibiome where a Unity Tag is passed in. ScienceData.displaytitle is the localized equivalent of ScienceData.title All Science IDs for Experiments and Subjects retain the old format in English. That is why there are many new display* fields and methods. the display* fields are used in UIs and strings (such as science title) that appear in UIs. All Biomes and Vessel Situations - same treatment as they are used in the Science IDs and other internal processing. Science.GetBiomedisplayName returns localized string for a biome (including minibiomes). Science.GetExperimentBodyName will return the BodyName from a science subjectID. The Vessel.landedAt field is usually populated with either the KSC Biome name or the regular Biome names by science experiments when conducted. This still occurs, but the Vessel.displaylandedAt field will be populated with a MiniBiome localization tag field if one is found in contact with the vessel (when landed). Getting the experiment biome. ScienceUtil.GetExperimentBiiome now has optional displayBiome string. You can specify null and the displayBiome will be set to the English-only biome name string. If you want to Localize then the correct process is to get both the biome name and displayBiome name (localized) strings. To do this get the vessel biome name via the Vessel.GetLandedAtString method and the display biome name via the vessel.displayLandedAt string (don’t forget to call Localizer.Format on it though!). You should always check that the landedAt string is not empty, in which case the vessel isn’t landed and you use the ScienceUtil.GetExperimentBiome and ScienceUtil.GetBiomedisplayName methods to get this information for a vessel in flight. Getting the experiment subject also can have the biome name and display biome name (Localized) and it will create subject with the english biome name (which is what the game uses internally) and the subject.title will contain the localized display biome name. If you don’t supply the localized biome name the title will just contain the English biome name.
-
KSP 1.2.9 and 1.3: Localization Update Stationary Train Consist
JPLRepo replied to Whirligig Girl's topic in KSP1 Discussion
Ah ok. That was @Art3misa our PR Manager who was introduced in this KSP Weekly: in fact all our team changes are announced in the KSP Weekly. -
1.3 And More: Confirmed Features
JPLRepo replied to Garrett Kerman's topic in KSP1 Suggestions & Development Discussion
I don't know where your facts are gathered from. But a few of them are wrong. Radial menus are for consoles. Not PCs. And 1.2.9 is a PC pre-release so other talk of consoles here is wrong. KSpedia layout has not changed. super secrets and other speculation - thought this was a 'facts' thread. Coherent contracts - yes. That's already been stated in KSP Weeklies past.- 188 replies
-
- 3
-
- ksp making history
- 1.3
-
(and 1 more)
Tagged with:
-
KSP 1.2.9 and 1.3: Localization Update Stationary Train Consist
JPLRepo replied to Whirligig Girl's topic in KSP1 Discussion
That was me and there aren't any 'ranks' amongst the devs. Just devs. I'll state it again. The pre-release will be 1.2.9 and full release will be 1.3 -
KSP 1.2.9 and 1.3: Localization Update Stationary Train Consist
JPLRepo replied to Whirligig Girl's topic in KSP1 Discussion
I don't expect there's a lot that will impact mods to be honest. And actually.. Yes.. A lot more stuff is potentially moddable. Oh and I gotta say. I'm picking up Spanish and re-learning Japanese. So if you are into learning languages it's pretty handy. -
There won't be the bloat you think. We've done it in such a way as to reduce this as much as possible. Really it's the same files and text as is packaged already for English (almost). Selecting languages will mean the language files for that language will be downloaded and inserted (replacing previous) - if using steam. @kerbiloid is pretty close to the money. KSP Store will be a bit different. More info will be provided on how it works etc as we get closer.
-
[1.12.x] ResearchBodies V1.13.0 (15th May 2022)
JPLRepo replied to JPLRepo's topic in KSP1 Mod Releases
So it could be the database values are not being read correctly/sync'd up with the new difficulty settings integration. I'll have to look into it. Which could also be why it isn't setting up the bodies for Kopernicus packs. If someone can log a valid bug report on github that would be appreciated and I will get to it once the Pre-Release is out. -
[1.12.x] TAC - Life Support v0.18.0 - Release 19th Sep 2021
JPLRepo replied to JPLRepo's topic in KSP1 Mod Releases
Well that shouldn't be happening. TAC LS should be behaving now with both types of rescue contracts. The timer starts for a Kerbal in a part once that part is loaded/in range. As long as you don't swap to their part/vessel it should not start counting. If anyone can provide further details of any situation this is not working, including logs and save files that would be much appreciated. -
Hey. Sorry missed your question. Yeah - Reflection of Dictionaries across binaries in the KSP Unity environment is a bit flakey. So what you can use is the FrozenKerbalsList instead of the Dictionary. Grab a new copy of the wrapper here: https://github.com/JPLRepo/DeepFreeze/blob/master/Source/APIs/DFWrapper.cs
-
[v0.24] Tarsier Space Technology (v4.5c Now with GALAXIES!!!)
JPLRepo replied to tobyb121's topic in KSP1 Mod Releases
and if you click the link on spacedock or curseforge it will take you there as well. -
[1.12.x] ResearchBodies V1.13.0 (15th May 2022)
JPLRepo replied to JPLRepo's topic in KSP1 Mod Releases
Ok I've published an updated Development version. Only available on GITHUB here: https://github.com/JPLRepo/ResearchBodies/releases/tag/V1.9.1-Develop Changes since last Dev version.: Repositioned Observatory models. Fixed TST integration. Added SAS, hibernation mode and ModuleDataTransmitter to the TB-75 telescope. Fixed Obstruction code for TB-75. Fixed GUI for researched bodies. Began adding Contract Configurator integration for contracts. - NOTE: ResearchBodies now REQUIRES Contract Configurator V1.22.2 Two Basic contracts available, but are not properly integrated. Testing feedback much appreciated. Make the debugging settings option dynamically update from the in-game mini-settings. Lots of CC integration changes started (WIP)... Added Observatory Ranges and allow old researchin career mode settings to Database file. Increase screen msg timeouts. Change colour of green in Observatory for text to something more readable. Balance Science and research costs. For all those having issues with finding bodies, etc. Please try this release.