Jump to content

[0.90]Kerbal Isp Difficulty Scaler v1.4.2; 12/16/14


ferram4

Recommended Posts

Ferram, this is very interesting and could make me switch to FAR for good, but I would respectfully make a suggestion: why don't you increase atmospheric density instead of killing Isp?

We (well, at least me) got used by now to Kerbin being a planet different from Earth, with its own balance of gravity and aerodynamics losses which is different from what we experience here. All the other planets are also inspired by the Solar System but not really copies. Why not trying to mantain that experience in FAR by embracing the fact that yes, we are flying through pea soup? Kerbin's atmosphere IS seven times taller than Earth's in proportion, after all.

It would also make spaceplanes comparatively more efficient, which should be good for people like us who install FAR in the first place ;)

Link to comment
Share on other sites

While I understand the reasoning behind increasing the atmospheric density, I myself have always thought of that as the single worst part of stock KSP The worst of part of rocket launches (for me at least) was always the 10km straight climb, which would come back with that higher atmospheric density; I can't be the only one who hated it with a passion. Yes, it does add a measure of difficulty to launches by requiring a specific flight path and adding more delta-V requirements, but when the source of the difficulty is so in-your-face obnoxious every single launch you become aware of just how arbitrary it is; a player who is aware that he is fighting through a stupidly thick atmosphere simply so that it is harder to reach orbit isn't going to have much fun. I switched to MechJeb when it came out solely to get out of doing that boring part of the game and get to the fun space maneuvering. Yes, the nerfed-to-hell Isps are arbitrary, but you don't spend an entire minute every launch having the lowness of the number mashed into your face like you do with the high density atmosphere.

Then there are the unintended consequences for FAR users, which would include:

  • Rockets will flip more easily or go full lawn dart (depending on their stability), depending on how stable the rocket is and how much the engine gimballing can counteract the increased forces; this gets worse with larger rockets that may flex significantly at liftoff and would have to be corrected incredibly quickly.
  • Planes suddenly need a lot less wing to get in the air.
  • Larger, quickly varying aerodynamic forces cause really nasty things to happen at higher timewarps / higher velocities, making the simulation less stable and the game less fun.

Finally, this doesn't leave me the option to make the game even more difficult, since I like to make things more difficult.

With that in mind, version 1.1 is out, which includes a thrust corrector, making Arcturus Thrust Corrector obsolete. When the thrust corrector is active, engines can either be vac-rated (makes rated thrust in vacuum) or atm-rated (makes rated thrust on the pad); by default engines with unscaled Isps below 385 s and max thrusts above 300 kN will be atm-rated; all others will be vac-rated.

Link to comment
Share on other sites

Hey ferram... I know this seems a bit sudden, but I love you. :blush:

I literally cannot play anymore without FAR and now I feel like that's going to be the same with KIDS as well. Thanks so much for your dedicated work on these plugins.

(P.S. ~ The 1.1 update looks awesome, thanks for incorporating Thrust Corrector, really happy about that.)

Link to comment
Share on other sites

I have what I believe is a minor bug report on version 1.1 of this mod.

When the VAB is loaded with this mod installed, the log continuously fills with

[EXC 20:18:15.934] NullReferenceException: Object reference not set to an instance of an object

errors.

As soon as a part is placed in the VAB the errors stop scrolling and everything works as expected as best I can tell.

I'm assuming there is something being done to vessel parts in the VAB and a simple check for the presence of no parts needs to be added.

This does only qualify as an annoyance level bug, but I was working on a mod of my own and noticed the log filling with the errors so I figured I would let you know.

D.

Edited by Diazo
Link to comment
Share on other sites

version 1.1 is out, which includes a thrust corrector, making Arcturus Thrust Corrector obsolete.

"Thrust Varies with Isp"

Does this option alone yield the effects of Project Arcturus Thrust Corrector? Is there any additional cutoff? Just wondering if it's worth adding a preset for it.

Great mod, Ferram4.

Link to comment
Share on other sites

@Diazo: Found the bug and squished it; fix will be in next release.

@velusip: It can add the same exact effects as Arcturus Thrust Corrector if you shut off the "Isp Cutoff" and "Thrust Cutoff" options, which will cause every engine to produce its rated thrust in vacuum, and less in atmosphere. The cutoffs are simply so you can add some real-world sanity to the function: why would the Mainsail (a heavy lift engine) be rated in vacuum? It would be rated for 1 atm since you'd care more about how much it can lift at takeoff than you would about how it does in space.

Link to comment
Share on other sites

No(t yet). My old hard drive started dying, so I spent today fixing that (and then having my desktop out of commission as the drive imaged over) rather than adding the support ferram needs, apologies again (and to you, ferram!). I will have it up tomorrow for ferram, and then he can implement the other side on his end.

Link to comment
Share on other sites

Is the thrust corrector working with the B9 SABRE engines? That is the ONLY reason why I quit using the Arcturas version was because of the issues with the SABREs making them near useless for the rocket ability.

Link to comment
Share on other sites

Not currently; I'll look into adding support for the B9 SABRE engines when NathanKell gets his updated version of ModuleFuels up. Some legacy ModuleFuels engine code is very similar to the module used by the B9 engines, so I should be able to add support for those at the same time.

Link to comment
Share on other sites

I'm having the strangest of problems with KIDS... I also use Lazor mod for the external camera part, but I noticed something rather funny. The Lazor Powered interface overlaps with the KIDS interface in the main screen of mission control. (When you see and can select all the buildings.) I tried to look if there were window coordinates in both but the coordinates seem to be hard coded within the plugin, just wondering if there is something that I could do to make this work lol.

Thoughts?

Link to comment
Share on other sites

Some things I'm pleased to see fixed here, But I don't get some people saying "1 stage to orbit is just wrong" It is somewhat feasible with advanced enough engines in real life, and just very large amounts of propellant. The big thing making orbit so much easier in KSP is the fact that the velocity differences for orbit between real life and KSP are so large, and the main thing making them as close as they are is the atmospheric treacle and poor drag modelling that FAR is intended to fix (making it even easier still to get to orbit).

As far as making "KSP to real life" goes, is that just reducing the ISP significantly so you need a lot more fuel or stages?

Link to comment
Share on other sites

Not currently; I'll look into adding support for the B9 SABRE engines when NathanKell gets his updated version of ModuleFuels up. Some legacy ModuleFuels engine code is very similar to the module used by the B9 engines, so I should be able to add support for those at the same time.

Thanks, thats good to hear. As soon as thats fixed I may start a new save, install Ioncross, and KIDS... if only the Comm Tech plugin worked perfectly too.

Link to comment
Share on other sites

Speaking of jet engines, they have huge isp, but it won't make sense for them to be rated for vacuum. Solid boosters also are used on the low stages, and the default cutoff values seem to ignore the starting level SRB.

Link to comment
Share on other sites

@MedievalNerd: Noted; I'll move the button somewhere else, probably the top right corner.

@Touhou: The "to real life" versions are "realistic" in the sense that getting from the launch pad to orbit requires realistic amounts of fuel. Since the delta V requirements are so low, it nerfs the Isps so that realistic mass ratios are necessary to reach orbit. Basically, it's intended to making SSTO possible, but only if you use a ton of fuel to do it.

@a.g.: Yeah, I set the thrust cutoff to 300kN by default rather than 200kN like I intended; that's been fixed in my build now. I also successfully fixed the "losing Isp data" problem, but it may fail on modded engines with absurdly complicated Isp curves, primarily because I can't access the actual points in a FloatCurve (which is very frustrating) so I have to use a limited number of points to avoid swallowing RAM like crazy. Also, jet engines won't be thrust-corrected, since it results in dramatic changes in thrust that don't seem to make any logical sense (at least to me; I don't think that engine thrust should double because you went up a few km).

Link to comment
Share on other sites

Version 1.2 is out, which moves the button to the top right corner of the space center screen so it doesn't conflict with Lazor, accounts for more-complex-than-stock-rocket-engine Isp curves, exempts jet engines from the thrust corrector for balance reasons, and tweaks the default presets.

Link to comment
Share on other sites

Hey ferram, I'm finally up and running with .22 and a new hard drive.

But now that you're sampling over a bunch of points...why not just do

ConfigNode temp;

e.atmosphereCurve.Save(temp)

and then pull the keys from the node? Change them in-place and do e.atmosphereCurve.Load(temp)

Let's say you have a function correctKeys(), even. This will help.

As to handling integration, here's my idea. I looked again, and I _think_ you can actually do it all on your end.

public static Dictionary<string, List<FloatCurve>> TLTIsps;

It was private, is now public. You can change all the floatcurves in it however you want.

As I gradually make all engines use this system, that will work for everything. But just to be sure you also get the ones I haven't hit yet, check for modules[whatever] field public List<ConfigNode> configs. Trawl through that to find all atmosphereCurve nodes and do correctKeys(). That will handle any ModuleEngineConfigs or ModuleHybridEngine that aren't using my techlevel system yet.

Finally, to deal with ModuleHybridEngines, instead of a List<> you just have two ConfigNodes:

public ConfigNode primaryEngine;

and secondaryEngine.

In any of these three cases, you need to not touch thrust; MFSC also has thrust correcting, and because I detect vac- or atmo-rating based on a field engineType, I'd rather not have KIDS guessing how to correct it and override. :)

Now, if you still want me to add extra stuff I'm _way_ more than happy to (I owe you big for FAR!), just say the word; but you expressed an interest in doing at your end so I offer this explanation above. :)

Edited by NathanKell
Link to comment
Share on other sites

Yeah, that would work. I'll switch the Isp adjustment system over to using a "CorrectKeys()" method and I'll look into trying to get MFSC to work. I already have an exception to the thrust corrector for jet engines, so it shouldn't be difficult to rig it up to handle MFSC engines as well. I'll look into adding it tomorrow.

Link to comment
Share on other sites

Raw reduces Isp so that a rocket that makes 9 km/s with stock will make 4.5 km/s, allowing it to just barely reach orbit. If that was enough to account for the differences between KSP and real life, that would be it. However, there are hidden complications:

There's a ratio that isn't often talked about in KSP, called the structure ratio which is the fraction of the booster (note: no payload here) that is not fuel; this is the tank's dry mass, engine mass, decouplers, fins, separatrons, etc; the higher the number is, the less dV you can get out of the rocket. For math reference, the rocket equation, written in terms of structure ratio and another ratio, the payload ratio, is:

dV = Isp * g0 * ln((1 + p) / (e + p))

p = m_payload / (m_structure + m_fuel) -- payload ratio; ratio of payload mass to mass of entire booster

e = m_structure / (m_structure + m_fuel) -- structure ratio; ratio of structure mass to mass of entire booster

In real life, it's not too difficult to get structure ratio down to 0.1; the best I've found is the Saturn V first stage, which was just under 0.06.

In KSP, the lowest structure ratio possible is 0.1111111... assuming that your rocket is all fuel tanks and the engine weighs nothing; for it to practical it has to at least have a TWR of 1 on Kerbin, and the lowest you can get that is ~0.14666666... which is a Mainsail pushing nothing but fuel tanks, no decouplers on top, no payload (read: totally useless as a booster), which puts a rather high lower limit on the structure ratio in KSP.

So the Adjusted preset tries to finagle away the obvious differences in dV that will result from a booster that has a structure ratio of 0.1 and one that has a structure ratio of 0.146666.... with a payload ratio of 0.05. Of course, this is technically wrong, since it's trying to use a single linear factor to account for a nonlinear difference, but it's close enough for Kerbal engineering.

TL;DR: KSP rockets are less fuel by percent mass than real life rockets, making them less efficient; Raw doesn't try to fix it, Adjusted tries to finagle the difference away.

What would be a realistic fuel tank fuel mass to dry mass ratio for KSP? Do you know?

Link to comment
Share on other sites

If memory serves, engine mass should be reduced to 1/6th what it is, and tank mass reduced to 1/3.

Also, ferram, for "raw real" I support a vac Isp multiplier of 0.3333; that leads to realistic mass ratio requirements for Mun, Duna, and Jool (as Jupiter) transfers (since those in RL are approx 3x the dV requirement).

Link to comment
Share on other sites

@MAKC: Go with NathanKell's numbers, I think. That should be close enough.

@NathanKell: I'm tempted to do that, but then we'll get the fun of rockets that will have similar Isp at the surface and in vacuum, so that might be a problem (particularly for aerospikes). I can do some math out and see if I can find a scalar that makes sense in the context that Isps in atmosphere should be lower than in vacuum by a noticeable amount.

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...