Thomas P.

Members
  • Content Count

    354
  • Joined

  • Last visited

Community Reputation

2,011 Excellent

About Thomas P.

  • Rank
    Version Locked on 0.90

Contact Methods

  • Website URL tmsp.io

Profile Information

  • Location Germany

Recent Profile Visitors

11,345 profile views
  1. Thomas P.

    [Kopernicus] Interstellar Consortium

    Hello, as you might know, in the past weeks and months @Pkmniako and myself have been working on creating a plugin for Interstellar Consortium. At first this plugin was supposed to be a bare orbit calculator, that transforms a stars position into an orbit the star has in-game. But now, after some experiments and various changes merged into Kopernicus itself to support our usecases, the plugin is ready for a first release and quite powerful. The basic goals of Interstellar Consortium are the following: Allow for a static star map Seamless integrate planet packs with minimal mod-dev interaction Allow users to install multiple planet/star packs with little disruption Interstellar Positioning The plugin is able to calculate static orbits for the stars based on their position. The position value is relative to the center of the universe, so as per the spreadsheet from @Pkmniako the stock sun is located at 10,0,0. You define the position like this: Body { name = My Star InterstellarConsortium { position = 20, 0, 0 } } The orbits the plugin generates are static (i.e. have a very high orbital period so they don't move), and have invisible orbit lines. That way it looks like you really have a star cluster / galaxy and not multiple stars orbiting another star at the center of the universe. The automatically generated orbits completely replace most of the contents from the Kopernicus Orbit node, which means that your star can work in standalone mode and together with IC without additional ModuleManager magic. If you are not satisfied with the automatically generated orbits, you have the ability to adjust them manually using a Orbit node inside of the InterstellarConsortium node. It's contents are applied after the autogenerated orbit was calculated. Since stars in IC might have different SOIs than in standalone, the InterstellarConsortium node includes an SOI parameter that you can use. Unlike the builtin sphereOfInfluence it isn't specified in meters but in KI, the custom distance unit the spreadsheet uses. Homeworld Switching The nature of IC, and the fact that we already wanted to write a plugin for the orbit calculations anyway, made it hard to not explore the possibility of being able to dynamically set your starting point to a different planet / star system. In a recent Kopernicus release we added the possibility of having any world that is named Kerbin be the homeworld, as opposed to depending on the homeworld actually having a Kerbin template. This feature makes it possible that the IC plugin dynamically assigns the name Kerbin to whichever world is defined as the homeworld. In the InterstellarConsortium node of your star config you can include a home parameter set to the name of the body that serves as the homeworld around the star. If your star has no homeworld, don't include the parameter. If you open the file GameData/InterstellarConsortium/InterstellarConsortium.cfg you will find a value home, you can change this to point at the star you want to start at. You can override the default home planet using the homePlanet option as well. What happens when you set those values is, that the IC plugin first searches every body called Kerbin or Sun and assigns them a randomly generated name. Then it assigns the name Sun to the selected home star and the name Kerbin to the associated home planet. The positioning system now shifts all positions by the position of the selected home star, so that the home star is at 0, 0, 0, i.e. the center of the galaxy. All other calculations now use the shifted positions, which means all other stars orbit the selected home star now. The bodies will keep their original names for the user, since their displayName isn't changed, only the internal name changes. However, the dynamic names impose one problem: Every mod that references a body by it's internal name will break as soon as the names of that body change. Take for example an EVE cloud configuration that targets Kerbin. As soon as you change your home world to, let's say, Gael from GPP that Kerbin configuration would suddenly target Gael because internally, it would be named Kerbin. The same applies for lots of other things, mainly mods like Scatterer etc., but also features like Kopernicus referenceBody tracking (which used the internal name). When you switch the homeworld all moons that orbit it would move. The solution to that is simpler than it sounds, a system / standard we called UBI - Unique Body Identifier. It is basically an overlay over the naming that is imposed by KSP without it's restrictions. As you might know, in KSP the central body has to be named Sun and the home body has to be named Kerbin to prevent KSP from failing horribly. That also implies that we have to change those names dynamically to allow for homeworld switching. UBI doesn't have those limitations. In fact, one body can even implement multiple UBIs and therefor be targeted through multiple names. A UBI is composed by a system / author name and a body name. You can set the main UBI of a body through the identifier value in the Body node, like this: Body { name = Kerbin identifier = Squad/Kerbin } All UBIs have to follow that format, to a) make their structure more clean and b) make it almost impossible to confuse them with the internal name. All values that accepted body names in Kopernicus were changed to support UBI, with a fallback to the internal name. This means, that if a body should orbit around a body with the UBI Squad/Sun, their referenceBody would be Squad/Sun not Sun A body can implement multiple UBIs through the implements value in the Body node. You can have multiple implements values. This is especially useful for dynamically assigning "roles" to one body or another. For example, let's take OPM. If it was compatible with IC, there could be a configuration option to decide, whether it should add itself to the stock system, or whether it should spawn around another star in the IC galaxy. The idea is, that the OPM bodies could be configured to orbit around a OPM/Sun body, and that depending on the settings, this UBI would be either assigned to the stock sun (additionally to Squad/Sun) or to a different star that is spawned for that purpose. That way, the amount of ModuleManager magic that is required is minimal. At the point of writing, Kopernicus already fully supports UBI. It includes a small helper class that can be copied by other mods to implement UBI support themselves. If time and motivation allows it we will probably patch some of the more common mods ourselves as some kind of reference implementation. Configs for those mods could then switch to the UBI syntax as well and full support IC, while having the same fallback to the internal name that Kopernicus has. Making a planet pack compatible The general idea of making a planet pack compatible with IC is porting it to the UBI syntax and adding the InterstellarConsortium config to your star. If your planet pack doesn't include a star, you have to decide whether it should stay in the stock system, move around it's own star, or have that part of it be configurable (more about that later). You can use the perviously mentioned tricks with UBI to limit the amount of ModuleManager magic you have to use. If you edit planets it becomes a bit more tricky, but not much. Basically what you have to do is copy the planet if you have IC installed, and still edit it if it isn't. But instead of changing it's properties, the only thing you do is assing an identifier to it. That means, if you have IC installed the copied body gets the identifier, if you haven't, it gets added to the stock body. What you can do now is change your main editing config to not target the body using it's name, but using the identifier value. @Body[Sun]:NEEDS[!InterstellarConsortium] { @identifier = GPP/Sun } +Body[Sun]:NEEDS[InterstellarConsortium] { @identifier = GPP/Sun } @Body:HAS[#identifier[GPP/Sun]] { // Your edits here } In that example, all the GPP planets would use GPP/Sun as their referenceBody, so that they automatically reparent themselves when IC is installed and the edited body changes into a copied one. Overall the system, while being rather simple, turned out to be quite powerful and pretty useful for IC as whole. Configuring planet packs Previously I mentioned that a user could choose between multiple modes for their planet packs (whether OPM spawns around the stock sun or a custom one in my example). This is possible because of another feature we have added. In the InterstellarConsortium.cfg you can add those options into a node called Settings. The IC plugin will take those values, and convert them into :FOR nodes. This means you can target them using :NEEDS in your configs. For example: InterstellarConsortium { Settings { Test = False OPM { SpawnAroundStock = True } } } would produce the following :FOR tags: IC-Test IC-Test-False IC-OPM-SpawnAroundStock IC-OPM-SpawnAroundStock-True Although it is not a technical requirement, it is recommended to only use Boolean values, since thats how you will use them anyways. If you have any questions about integrating IC compatiblity into your mod, feel free to ask them here or post them in the #interstellar-consortium channel on the Kopernicus Discord server. The download link for the plugin: https://github.com/Kopernicus/interstellar-consortium/releases Simply extract it into GameData and you should be ready to start using it. P.S: Please note that IC at the moment is not compatible with ScienceDefs since those don't support UBI. We are working on a solution for that, but it needs some testing and explaining it here would probably cause total brain input overflow.
  2. Thomas P.

    [1.6.1-1 + Backports] Kopernicus & KittopiaTech

    What was released: - Kopernicus 1.6.1-1 - Kopernicus 1.5.1-3 - Kopernicus 1.4.5-8 - Kopernicus 1.3.1-17 - KittopiaTech 1.6.1-1 Changelog: - Fix buggy sunflares from 1.6.0-1 - Collect all required logs and zip them up when the game closes. If people ask for logs, ask for that .zip file and you get all of them. - Update to KSP 1.6.1 ==== Kittopia ===== - Fix some of the value editors like the color editor - Add an editor / selector for enum values - Remove the task manager window, since you can now close windows directly - Improve the number editors The links are in the OP
  3. Thomas P.

    [1.6.1-1 + Backports] Kopernicus & KittopiaTech

    Generally this is true and for most mods it works just fine. However, since the Kopernicus community is not as monolithic as other community, and scattered across various planet packs threads etc. it can happen that different planet authors judge differently on how well Kopernicus works on new KSP versions (see the link I posted above). Combine that with how much hacks I had to put into Kopernicus to get certain features working, and how much a failing Kopernicus can impact your savegame (vessels vanishing from the orbits of unloaded planets). The version lock makes sure that the question to "Does it work on the new KSP version?" is clear: No, it doesn't. There is less room for speculation, experiments and misinformation. Basically, I rather take the flak for locking Kopernicus (and therefor definitly giving everyone a reason to not touch their saves) than being responsible for breaking savegames because of not reacting fast enough to KSP updates.
  4. Thomas P.

    [1.6.1-1 + Backports] Kopernicus & KittopiaTech

    Thanks for taking over the full support for any version your unlocked .dll runs on. Which is, uh. every version. (See how that sounds? Another reason for a version lock - you only support the versions you feel comfortable supporting. Totally aside from making sure that in the fragmented support-eco system where planet makers are mostly the first station when asking for help, the state of Kopernicus on a new KSP version is clear.) But hey, this means I can use my weekend for actually working on the university stuff I'm supposed to do, instead of working on Kopernicus. ¯\_(ツ)_/¯ Snarking aside, dammit at least you could just ask me before you put that out. I literally even wrote when I will update Kopernicus before. But hey, I can't stop you and certainly won't try to do it either so do what you want.
  5. Thomas P.

    [1.6.1-1 + Backports] Kopernicus & KittopiaTech

    I still love how Squad can wait a month to release a bugfix to a version that has serious problems with modding and noone says anything, but if they update Kopernicus apparently should become sentinent and autoupdate itself. Not just the case for 1.6.0 as well, but as it seems Squad gets infinite patience in releasing updates without complains (even with weekly(?) teasers). Just saying. -------------------------------------- Kopernicus updates when I have time. Which is likely the weekend, maybe even earlier. It also contains a bugfix to the star flare issue (lets try the teaser method - I have a feeling it doesn't work. Lol)
  6. Because KSP's loading system ignores any files inside of a PluginData folder. If you want to load it from there, you should use ConfigNode.Load
  7. Thomas P.

    [1.6.1-1 + Backports] Kopernicus & KittopiaTech

    Release time! What was released: - Kopernicus 1.6.0-1 - Kopernicus 1.5.1-2 - Kopernicus 1.4.5-7 - Kopernicus 1.3.1-16 - KittopiaTech 1.6.0-1 What was changed: - Reworked some of the code to allow a plugin for Interstellar Consortium - Fix the Sun shining through Jool - Fix Kittopia Normal Map Generation - Fix Kittopia not being able to edit bodies who use AtmosphericExtra - Allow to add multiple HazardousBody configs - Allow to controls HazardousBody using a greyscale map for heat distribution - Fix the .version file - Added the ability to recolor the editor grass - Spawning a Kopernicus asteroid triggers the stock onAsteroidSpawned event now - Kittopia windows include a close and a minimize button in their headers now. (This causes some jittering, I hope thats ok) -> Links are in the OP
  8. Thomas P.

    [1.6.1-1 + Backports] Kopernicus & KittopiaTech

    This should be fixed with the next Kopernicus release, I figured out that Kopernicus was overriding a part of the stock code. This code contains the fix that 1.5 already ships for this bug, so I just removed the (useless) override for it Thanks for the research!
  9. Thomas P.

    [1.6.1-1 + Backports] Kopernicus & KittopiaTech

    Kopernicus has it's own logs inside the folder "<KSP dir>/Logs/Kopernicus", which include more information about the loading and the errors occuring. In your case you would want to check the file Vall.Body.log, since thats where the loader fails, according to KSP.log
  10. Thomas P.

    [1.6.1-1 + Backports] Kopernicus & KittopiaTech

    You somehow copied your GameData folder into your GameData folder, so you have this: Loading assembly at D:\Steam\steamapps\common\Kerbal Space Program\GameData\GameData\Kopernicus\Plugins\Kopernicus.dll That means you have two Kopernicus installations which won't work.
  11. Thomas P.

    [1.6.1-1 + Backports] Kopernicus & KittopiaTech

    There might be a release on GitHub. You should probably check it out (yes I am the only one who makes stupid git jokes on my release notes) Changelog: - Updated to KSP 1.5.1 - Fixed a bug where BiomeMap OnDemand Loading would lag a lot in MapView. BiomeMap OD is now disabled by default. - Fixed the Kittopia planet thumbnails, thanks to Sigma Expect Squad to release 1.5.2 out of nowhere tomorrow and completely screw with my life
  12. Thomas P.

    [1.6.1-1 + Backports] Kopernicus & KittopiaTech

    Would y'all at least gracefully allow me to sleep one night after a day of university before I have to make a release instantly after a KSP update releasing, before you turn the thread and my mailbox into a firestorm? Thank you. marks snarky reply as done, now to some serious answers Kopernicus is going to update to 1.5.1, unless Squad releases 1.5.2 instantly after me writing this message. That "brain-damaged checker" has prevented lots of people from blindly loading their saves just to discover that Kopernicus failed to load and everything that orbited a custom body was gone, or stuck inside of a hill due to terrain incompatiblities, and and and That "brain-damaged checker" has prevented me from lots of stress and headaches because of having to rush out updates because the old version breaks other peoples installs, or reading the posts of people (rightfully) accusing me of causing their hard work getting deleted after an (potentially automatic) ksp release That "brain-damaged checker" has motivated me to test and rebuild Kopernicus on new KSP versions and not leaving it in health support for multiple releases That "brain-damaged checker" has allowed me to read some funny email threads on my phone while in school when Squad released an update overnight. that "brain-damaged checker" made it possible that I can still joke about that (see above) For more reasons about why the checker exists and it won't go for the foreseeable future, check out this GitHub comment: https://github.com/Kopernicus/Kopernicus/issues/299#issuecomment-406890108 And to be clear, I am not going to give support for any version that has been version-unlocked. If someone publishes such a tool, they agree that I send everyone who plays on a version that can be unlocked to them for support. If you think that I have fun doing updates and version locking Kopernicus, you are completely wrong. I hate doing it. I really do. If the world was an ideal one I would just autocompile every commit on the github and people could go nuts with that, but thats not how it works. I tried doing releases without the version lock, and bad things happened. Version-locking and explicit release upgrades are the system that works for me. If it was for me I would have stayed on 1.3.1 forever (and I really considered that as an option when all that EULA/Analytics crap happened before 1.4). But I fear that me staying on one version will cause someone else forking (which is not bad at all!) Kopernicus, which could add incompatibilities to the already existing chaos of planet modding (see: my example from the github comment above). Instead I am doing backports, which adds even more time to the pile because you have to check if they compile against their respective KSP version at all, and if not rewrite the code or add switches that disable those parts. (I realize that I am not always good at testing the backports on their KSP versions though, which is why have been a bit buggy in the past) TL;DR: I don't have fun creating release updates for Kopernicus. But I understand why people want it so badly that my mailbox regulary explodes and moves every mail from the forum to the spam folder. I don't have much time to do release upgrades. But I will take the time as soon as I notice an update has been released. I don't notice release updates instantly. They either release at night when I sleep or at midday when I am at school / university. So give me some time to realize that Kopernicus needs an update I don't know that Squad doesn't allow you to downgrade to 1.5.0, therefore I don't know that an updated Kopernicus is probably even more urgent to you. So just show some patience and give me 2 or 3 days to update my build stuff, test Kopernicus a bit if I think it might fail, and then publish the release (or rather the 4 releases if you count both backports and Kittopia (which is btw. the perfect example of me leaving a mod in limbo and letting it decay until nothing works anymore)) You usually wait weeks or months (or a year for good old 1.1) for KSP updates, with weekly teasers. Just do the same for the 2 or 3 days it takes me to push out a proper release. (I bet I forgot a thing I wanted to say because of that wall of text, oh wait I wanted to stay serious. Dammit.) KSP (and by extension Kopernicus) use 9 (Atmosphere), 10 (Scaled Space) and 15 (Local Space - Terrain) for planets yes. Kopernicus doesn't do much of the rendering assignment itself, in fact it just uses the instanced Stock prefabs wherever possible, and otherwise applies the same settings Squad would apply.
  13. Thomas P.

    [1.6.1-1 + Backports] Kopernicus & KittopiaTech

    Are you in the Kopernicus Discord? I posted an explanation there some time ago, if you are there just ping me. If not I can PM it to you.
  14. Thomas P.

    [1.6.1-1 + Backports] Kopernicus & KittopiaTech

    Probably better to pose that question to the CKAN team since I have no control over that.
  15. Thomas P.

    [1.6.1-1 + Backports] Kopernicus & KittopiaTech

    I would prefer to keep UBI secret for the moment, since not everything about it is ironed out, and its main usecase (IC) is not even finished. It might just break more than it gives you at this point. (Now look away! You have seen nothing ) KSC transformation is as easy as changing the template of Kerbin to the body you want to start from (and deleting that body from the system / transforming it into a Kerbin clone). I am sure I can work with Gregrox (or whoever maintains Alien Space Program these days) to set it up with them. I would appreciate a writeup on Orbit Icons if you want to do that.