KerBalloons - Reinflated

KerBalloons - Reinflated

10.2k Downloads

f_001: Resolve Compatibility Issues with KSP v.1.10

hoovler opened this issue ยท 8 comments

commented

I've always wanted to use a balloon mod for KSP, but I never managed to find a good mod that was compatible with the version of KSP I was running. So rather than complain about it, I'd like to try my hand at KSP modding by bringing Kerballoons---Reinflated up-to-date with the latest KSP release (v.1.10).

Several things need to happen for full compatibility to occur such that it can reach the widest audience of players:

  1. The target framework should be updated from .NET Framework 3.5 to .NET Framework 4.5
    • while consideration should be given to keeping the mod backwards, it shouldn't be at the expense of taking advantage of new functionality
    • a stable release for each major KSP version would be the ideal solution, but not the target of this specific issue.
  2. Kerballoons---Reinflated should be refactored / rewritten in such a way as to make it compatible with KSP v.1.10.
  3. All necessary CKAN metadata and delivery requirements should be likewise updated to ensure users of CKAN may find and install the mod.

I nominate myself to take this issue and resolve it... Just sayin'...

commented

Mission accomplished! I've gotten Kerballoons to work perfectly with KSP.v.1.10! This build should actually work with KSP.v.1.8+, as that is when the .NET framework KSP compiled against was updated. Here are the steps I took:

  1. KSP.v.1.7 and below used .NET Framework 3.5, but KSP.v.1.8+ is built with .NET Framework 4.5. I updated the target framework accordingly, which resolved most of the compilation errors.
  2. I updated the existing reference libraries and added new ones to cover certain objects had been refactored out of the original libraries.
  3. I ran the DEBUG build, then:
    • copied Kerballoons.dll to the expanded directory from the Kerballoons_v0.4.3.zip release currently in the repository (replacing theGameData\KerBalloons\Plugins\KerBalloons.dll from that build),
    • moved the GameData directory (with the newly-built `KerBalloons.dll from above) to my KSP sandbox instance, and;
    • fired up the game!

Screenshot of Visual Studio 2019 with changes made to get Kerballoons to work with lasted KSP

All libraries I updated and added came from the latest built and released version of Kerbal Space Program, KSP.v.1.10. I took them from <ksp.v.1.10-installation-dir>\KSP_x64_Data\Managed, which is the same as <ksp.v.1.10-installation-dir>\KSP_Data\Managed for non-64-bit installations.


KSP.log Loading Information

What follows are excerpts of the KSP.log file were it pertains to the new build of Kerballoons being loaded as a plugin for KSP.v.1.10. I snip out the longer bits to reduce the massive size of this comment:

Loading the Assembly

[LOG 13:45:07.448] Load(Assembly): KerBalloons/Plugins/KerBalloons
[LOG 13:45:07.448] AssemblyLoader: Loading assembly at A:\dev\000-personal\ksp\ksp-v.1.10_sandbox\GameData\KerBalloons\Plugins\KerBalloons.dll

General Environment Info

Environment Info
Win32NT 7FFFFFFFFFFFFFFF  Args: KSP_x64.exe 

Mod DLLs found:
Stock assembly: Assembly-CSharp v0.0.0.0
HolaKerbin v1.0.0.0
KerBalloons v1.0.0.0
Stock assembly: KSPSteamCtrlr v0.0.1.35

Folders and files in GameData:
HolaKerbin
KerBalloons
Stock folder: Squad

Loading Sounds

[LOG 13:45:08.127] Load(Audio): KerBalloons/Sounds/burst
[LOG 13:45:08.260] Load(Audio): KerBalloons/Sounds/deflate
[LOG 13:45:08.278] Load(Audio): KerBalloons/Sounds/inflate

Loading Textures

[LOG 13:45:08.994] Load(Texture): KerBalloons/Flags/KerBalloonsFlag
[LOG 13:45:09.010] Load(Texture): KerBalloons/Flags/KerBalloonsFlagAlpha
[LOG 13:45:09.023] Load(Texture): KerBalloons/Parts/DunaBalloons/KBTexDuna
[LOG 13:45:09.069] Load(Texture): KerBalloons/Parts/EveBalloons/KBTexEve
[LOG 13:45:09.113] Load(Texture): KerBalloons/Parts/KerbinBalloons/KBTexKerbin
[LOG 13:45:09.154] Load(Texture): KerBalloons/Parts/LaytheBalloons/KBTexLaythe
[LOG 13:45:09.197] Load(Texture): KerBalloons/Parts/Parachutes/KerBalloonsChuteTex
[LOG 13:45:09.205] Load(Texture): KerBalloons/Plugins/Kerballoons_off
[LOG 13:45:09.210] Load(Texture): KerBalloons/Plugins/Kerballoons_on

Loading Models

[LOG 13:45:44.177] Load(Model): KerBalloons/Parts/DunaBalloons/balloon0625
[LOG 13:45:44.252] Load(Model): KerBalloons/Parts/DunaBalloons/balloon125
[LOG 13:45:44.280] Load(Model): KerBalloons/Parts/DunaBalloons/balloon25
[LOG 13:45:44.307] Load(Model): KerBalloons/Parts/DunaBalloons/balloon375
[LOG 13:45:44.337] Load(Model): KerBalloons/Parts/EveBalloons/balloon0625
[LOG 13:45:44.364] Load(Model): KerBalloons/Parts/EveBalloons/balloon125
[LOG 13:45:44.391] Load(Model): KerBalloons/Parts/EveBalloons/balloon25
[LOG 13:45:44.418] Load(Model): KerBalloons/Parts/EveBalloons/balloon375
[LOG 13:45:44.444] Load(Model): KerBalloons/Parts/KerbinBalloons/balloon0625
[LOG 13:45:44.471] Load(Model): KerBalloons/Parts/KerbinBalloons/balloon125
[LOG 13:45:44.498] Load(Model): KerBalloons/Parts/KerbinBalloons/balloon25
[LOG 13:45:44.526] Load(Model): KerBalloons/Parts/KerbinBalloons/balloon375
[LOG 13:45:44.553] Load(Model): KerBalloons/Parts/LaytheBalloons/balloon0625
[LOG 13:45:44.579] Load(Model): KerBalloons/Parts/LaytheBalloons/balloon125
[LOG 13:45:44.607] Load(Model): KerBalloons/Parts/LaytheBalloons/balloon25
[LOG 13:45:44.634] Load(Model): KerBalloons/Parts/LaytheBalloons/balloon375
[LOG 13:45:44.661] Load(Model): KerBalloons/Parts/Parachutes/model

Compiling Part Configs

[LOG 13:46:08.775] Compiling Configs:
[LOG 13:46:08.775] Config(PART) KerBalloons/Parts/DunaBalloons/heavyPayload0625/duna625BalloonHP
[LOG 13:46:08.776] Config(PART) KerBalloons/Parts/DunaBalloons/heavyPayload125/duna125BalloonHP
[LOG 13:46:08.776] Config(PART) KerBalloons/Parts/DunaBalloons/heavyPayload25/duna25BalloonHP
[LOG 13:46:08.776] Config(PART) KerBalloons/Parts/DunaBalloons/heavyPayload375/duna375BalloonHP
[LOG 13:46:08.776] Config(PART) KerBalloons/Parts/DunaBalloons/highAltitude0625/duna625BalloonHA
[LOG 13:46:08.776] Config(PART) KerBalloons/Parts/DunaBalloons/highAltitude125/duna125BalloonHA

<snip> .... </snip>

[LOG 13:46:08.779] Config(PART) KerBalloons/Parts/Parachutes/chute0625/KBChute0625
[LOG 13:46:08.779] Config(PART) KerBalloons/Parts/Parachutes/chute125/KBChute125
[LOG 13:46:08.779] Config(PART) KerBalloons/Parts/Parachutes/chute25/KBChute25
[LOG 13:46:08.779] Config(PART) KerBalloons/Parts/Parachutes/chute375/KBChute375
[LOG 13:46:08.779] Config(PART) KerBalloons/Parts/ServiceBays/ServiceBay_0625/ServiceBay_0625
[LOG 13:46:08.779] Config(PART) KerBalloons/Parts/ServiceBays/ServiceBay_375/ServiceBay_375

Adding New Parts to Database

[LOG 13:46:08.949] GameDatabase: Assets loaded in 68.843s
[LOG 13:46:08.986] PartLoader: Loading part database
[LOG 13:46:08.988] PartLoader: Compiling Part 'KerBalloons/Parts/DunaBalloons/heavyPayload0625/duna625BalloonHP'
[LOG 13:46:09.014] EffectList: Created 15 effect types
[LOG 13:46:09.062] PartLoader: Part 'KerBalloons/Parts/DunaBalloons/heavyPayload0625/duna625BalloonHP' has no database record. Creating.
[LOG 13:46:09.062] [DragCubeSystem]: Drag cubes not found or cannot be read for part Part. Generating New drag cubes.
[LOG 13:46:09.067] DragCubeSystem: Creating drag cubes for part 'duna625BalloonHP'
[LOG 13:46:09.128] PartLoader: Compiling Part 'KerBalloons/Parts/DunaBalloons/heavyPayload125/duna125BalloonHP'
[LOG 13:46:09.135] PartLoader: Part 'KerBalloons/Parts/DunaBalloons/heavyPayload125/duna125BalloonHP' has no database record. Creating.
[LOG 13:46:09.135] [DragCubeSystem]: Drag cubes not found or cannot be read for part Part. Generating New drag cubes.
[LOG 13:46:09.136] DragCubeSystem: Creating drag cubes for part 'duna125BalloonHP'
[LOG 13:46:09.197] PartLoader: Compiling Part 'KerBalloons/Parts/DunaBalloons/heavyPayload25/duna25BalloonHP'
[LOG 13:46:09.203] PartLoader: Part 'KerBalloons/Parts/DunaBalloons/heavyPayload25/duna25BalloonHP' has no database record. Creating.
[LOG 13:46:09.203] [DragCubeSystem]: Drag cubes not found or cannot be read for part Part. Generating New drag cubes.
[LOG 13:46:09.206] DragCubeSystem: Creating drag cubes for part 'duna25BalloonHP'

<snip> .... </snip>

[LOG 13:46:13.135] PartLoader: Compiling Part 'KerBalloons/Parts/Parachutes/chute0625/KBChute0625'
[LOG 13:46:13.154] PartLoader: Part 'KerBalloons/Parts/Parachutes/chute0625/KBChute0625' has no database record. Creating.
[LOG 13:46:13.158] PartLoader: Compiling Part 'KerBalloons/Parts/Parachutes/chute125/KBChute125'
[LOG 13:46:13.164] PartLoader: Part 'KerBalloons/Parts/Parachutes/chute125/KBChute125' has no database record. Creating.
[LOG 13:46:13.165] PartLoader: Compiling Part 'KerBalloons/Parts/Parachutes/chute25/KBChute25'
[LOG 13:46:13.175] PartLoader: Part 'KerBalloons/Parts/Parachutes/chute25/KBChute25' has no database record. Creating.
[LOG 13:46:13.176] PartLoader: Compiling Part 'KerBalloons/Parts/Parachutes/chute375/KBChute375'
[LOG 13:46:13.181] PartLoader: Part 'KerBalloons/Parts/Parachutes/chute375/KBChute375' has no database record. Creating.
[LOG 13:46:13.183] PartLoader: Compiling Part 'KerBalloons/Parts/ServiceBays/ServiceBay_0625/ServiceBay_0625'
[LOG 13:46:13.204] PartLoader: Part 'KerBalloons/Parts/ServiceBays/ServiceBay_0625/ServiceBay_0625' has no database record. Creating.
[LOG 13:46:13.204] [DragCubeSystem]: Drag cubes not found or cannot be read for part Part. Generating New drag cubes.
[LOG 13:46:13.207] DragCubeSystem: Creating drag cubes for part 'ServiceBay.0625'
[LOG 13:46:13.313] PartLoader: Compiling Part 'KerBalloons/Parts/ServiceBays/ServiceBay_375/ServiceBay_375'
[LOG 13:46:13.320] PartLoader: Part 'KerBalloons/Parts/ServiceBays/ServiceBay_375/ServiceBay_375' has no database record. Creating.
[LOG 13:46:13.320] [DragCubeSystem]: Drag cubes not found or cannot be read for part Part. Generating New drag cubes.
[LOG 13:46:13.322] DragCubeSystem: Creating drag cubes for part 'ServiceBay.375'

Loading Kerballoons Add-on

[LOG 13:46:48.648] [AddonLoader]: Instantiating addon 'KBFilter' from assembly 'KerBalloons'

In-Game Action

Some screenshots showing my build of Kerballoons for KSP.v.1.10 in action!

  1. Here's the detailed build information for my specific sandbox instance of KSP.v.1.10 that shows on the KSP title screen upon application launch:
    detailed build info on KSP launch screen
  2. This is the display of the Kerballoons category within the VAB construction mode:
    Kerballoons category in VAB
  3. And here's a balloon launch from the pad, demonstrating the successful flight of a Kerballoon part, and showing the KSP version information in the bottom-left of the screen:
    balloon launch from the pad with version information
commented

All the changes made to resolve this issue have been committed to a local branch. I'll make a pull request whenever I can make contact with the author / repo owner and figure out how he/she wants to handle this.

commented

@hoovler did you ever manage to resolve this issue about forking?

commented

Since @hoovler hasn't responded, and @Fengist is not around, I'll probably be adopting this soon

commented

Since @hoovler hasn't responded, and @Fengist is not around, I'll probably be adopting this soon

Feel free.

commented

Thank you! Could you upload the 4.4 code to github? I've been able to get by decompiling the 4.4 release, but would prefer to get the original
Thanks

commented

Thank you! Could you upload the 4.4 code to github? I've been able to get by decompiling the 4.4 release, but would prefer to get the original
Thanks

I'll do one better. www.twistedvoid.com/Kerballoons.zip That includes all of the new models I created in Wings 3D, some testing I did, etc. I'll leave that up for a few weeks.

commented

Thank you!!!!