NathanKell / RealSolarSystem

Changes KSP's solar system to make it like the real one.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Career Mode building limits are unreasonable for RSS

cherrydev opened this issue · comments

So, other parts of career mode seem fairly reasonable when used with RSS and RO, but the default limits on ship mass (in particular) make it impossible to, for example, send missions, even only to the Moon, until the launch pad is fully upgraded. For example, not that far into the tech tree, you have all the technology you need for a manned Moon mission (and are getting most of your contracts involving the Moon), but even upgrading your launch pad half way, you have a 180T and 36m launch craft limit. A Saturn 5 rocket is 110m long and 3000T, a difference of 3x and 17x. In stock KSP, you can easily get a manned lander to the moon and back with a 180T craft.
Now (as a developer myself), I've been poking around for a few hours trying to find where these stock values are stored, but haven't found them yet. If I (or somebody else who might already know this) can find and manipulate these values, would you be interested in adding this to RSS to help the career mode balance?

Ahh, these are defined in GameVariables, hard-coded, rather than stored in any fields. Does this pretty much make this untouchable from a modding point of view or is there a well-understood way of modding this? Please excuse my ignorance, I'm a very experienced developer, but have never really done much in regards to KSP modding.
I suppose the alternative is something like NoMoreGrind, but all that would really do would make it easy to upgrade the buildings to the max limits, but I think it would be better to scale the building limits where appropriate.

I found that there's already a discussion about this exact thing when I went searching for ways to patch "GameVariables": http://forum.kerbalspaceprogram.com/threads/105741-0-90-Modding-Facilities-and-their-Upgrades
So, it looks like this isn't possible except by binary patching Assembly-CSharp.dll (which would not be hard, but is not practical for releasing a mod to the public).
Please close this issue if you feel like you don't have anything to add to it.

I created a modified dll which I'm happy to share with you (as you mention, can't be done over the forums). I also looked into runtime injection (which, unlike pre-runtime injection, would not explicitly break the rules) but was unable to find a cross-platform method. @AlexanderDzhoganov has also been looking into that.

Well, I'm glad that I'm not the only person that sees this as a balance problem. No need to send me the modified .dll, I know I can do it if I want to with my copy of JustDecompile, but for now I'm just biting the bullet and using NoMoreGrind to effectively eliminate the upgrade costs.
1000 curses on Squad for not taking the extra 5 minutes of effort to make this mod-able by putting these values in a field.
I feel like simply distributing a patcher externally, and then including, in the RSS mod, a piece of code that checks to see if the patch has been applied, and if not, notifies users that there's a patcher available and gives instructions on how to obtain it, would be preferable to runtime injection, since I feel that providing a hands-off method of essentially breaking the mod "sandbox" is just a sneaky way of violating the spirit of the rule anyway. But that's just my $0.02 on the subject.

The modifications I made (if you want to standardize your experience with the other RP-0 players who have this dll) were:

  1. Action groups available from the start
  2. Weight limits 40t / 350t / 1000t / 3500t / unlimited
  3. Size limits comparable (Juno / R-7 / Saturn Ib MLV/ Saturn V MLV / unlimited
  4. Unlimited part counts always

That's still, IMO, against forum rules (wearing my moderator hat): the problem is the rule specifically prohibits modifying the dll file. Hence the quest for runtime injection, which merely modifies code in memory.

Well, in that case, maybe I will take the .dll file if you can somehow get it to me. I'm reachable by my github username at gmail. Thanks!