KSP-RO / RealSolarSystem

Changes KSP's solar system to make it like the real one.
130 stars 92 forks source link

Seismic sensor readings infinitesimally small #249

Closed WarpPrime closed 2 years ago

WarpPrime commented 2 years ago

I'm playing an RSS career game and set up a seismic sensor on the moon. I crashed a 1.3 ton spent stage into the Moon on the other side of the moon relative to the seismic sensor, and only got ~1e-28 data. Did this at other locations on the moon and the same thing happened: Almost no data. Is there a fix or a bug in the program?

screenshot208 screenshot209 screenshot211 screenshot210

siimav commented 2 years ago

Is that the Breaking Ground experiment? If so, then it definitely isn't configured for the real-life scale. No idea if that can be done.

pehvbot commented 2 years ago

For what it's worth it gets defined in GameData/SquadExpansion/Serenity/Resources/DeployedScience.cfg:

DEPLOYEDSCIENCE
{
    SEISMICENERGY
    {
        ENTRY
        {
            BodyName = ...
            Energy = ...
        }
    }
}

I think you can just add the BodyName for various RSS bodies and... some value(?) for the Energy.

Back of the envelope math says it's roughly MASS / 1.25e12 for the three bodies I checked (Kerbin, Eve, Mun) so if that holds the Moon would have an Energy of about 5.88e10, so you would patch it with:

@DEPLOYEDSCIENCE
{
    @SEISMICENERGY
        {
        ENTRY
        {
            BodyName = Moon
            Energy = 5.88e10
        }
      }
}

The big caveat is that I have no idea where the original numbers come from. This is just extrapolating from the three quick and dirty checks I did. There may very well be some deeper math involved here. Well, you can try it and see what happens I guess.

WarpPrime commented 2 years ago

@pehvbot I tried doing the 5.88e10 value but it still is around 1E-29. I tried e20 and got E-5. When I tried 5.88e33 and smashed 4.5 tons onto the other side of the Moon, I got 3 science (1% of total). Could you please help a bit more for such numbers?

See this Desmos graph to see my experimental values.

pehvbot commented 2 years ago

If I had to guess I would say the DEPLOYEDSCIENCE patch isn't working correctly. You should be getting reasonable numbers using the 5.88e10 value.

I did a quick test using a small 2.55t craft impacting on the far side of an experiment using the 5.88e10 number and got what I think is a reasonable 3.84 science. If you look in the KSP.log you should see an entry that looks something like this:

LOG 20:01:19.970] [Vessel Bomb 2]: Vessel was destroyed.
[LOG 20:01:19.993] [DeployedScienceExperiment]: Cluster 1313975524 on Moon Processing Seismic Event Data
[LOG 20:01:19.993] [DeployedScience]: Seismic Event Detected on Moon - Impact of 5657338441.36676J. Total Mass 2.55. Initial Velocity 2106.449. Distance 4582661.42687873. Distance Multiplier 0.5
[LOG 20:01:19.993] DeployedScience]: Diminishing Multiplier: 1 SolarPanel Multiplier 1 DataScale 1 Science Limit 240 Impact Percentage 0.09621324 Placement Trait Modifier 1
[LOG 20:01:19.993] [DeployedScience]: Impact Science Data Generated 3.84853
[LOG 20:01:19.995] [DeployedScienceExperiment]: Surface Deployed Seismic Sensor from of The Moon surface generated 0.000 science.
Sensor Readings affected by Impact Energy: 10%

Dropping the same mass at nearly the same velocity right on top of them gave me 7.4, so distance attenuates from 100% (close!) to 50% (the rest of the body). It won't be less than this.

[LOG 20:10:13.746] [Vessel Bomb 2]: Vessel was destroyed.
[LOG 20:10:13.768] [DeployedScienceExperiment]: Cluster 1313975524 on Moon Processing Seismic Event Data
[LOG 20:10:13.768] [DeployedScience]: Seismic Event Detected on Moon - Impact of 5503712320.32041J. Total Mass 2.55. Initial Velocity 2077.652. Distance 58472.5280818896. Distance Multiplier 0.995970129966736
[LOG 20:10:13.768] DeployedScience]: Diminishing Multiplier: 1 SolarPanel Multiplier 1 DataScale 1 Science Limit 240 Impact Percentage 0.09360055 Placement Trait Modifier 1
[LOG 20:10:13.768] [DeployedScience]: Impact Science Data Generated 7.457868
[LOG 20:10:13.770] [DeployedScienceExperiment]: Surface Deployed Seismic Sensor from of The Moon surface generated 0.000 science.
Sensor Readings affected by Impact Energy: 9%
Distance Attenuation: 100%

It looks like Impact Energy is the key derived value here. Dropping a 30t mass gave me an impact energy of 112% and science of 42-76 depending on how close I got.

[LOG 19:48:05.671] [Vessel Bomb 1]: Vessel was destroyed.
[LOG 19:48:05.695] [DeployedScienceExperiment]: Cluster 1313975524 on Moon Processing Seismic Event Data
[LOG 19:48:05.695] [DeployedScience]: Seismic Event Detected on Moon - Impact of 65599921356.137J. Total Mass 29.58387. Initial Velocity 2105.907. Distance 208407.557867361. Distance Multiplier 0.851851940155029
[LOG 19:48:05.696] DeployedScience]: Diminishing Multiplier: 1 SolarPanel Multiplier 1 DataScale 1 Science Limit 240 Impact Percentage 1.115645 Placement Trait Modifier 1
[LOG 19:48:05.696] [DeployedScience]: Impact Science Data Generated 76.02914
[LOG 19:48:05.701] [DeployedScienceExperiment]: Surface Deployed Seismic Sensor from of The Moon surface generated 0.000 science.
Sensor Readings affected by Impact Energy: 112%
Distance Attenuation: 85%

Look at your 'Impact Energy'. You should be getting impact energy of around 15-20% and science of something like 5-10 for that mass depending on distance.

One thing I did do was create a complete seismic MM patch using the values above. It nukes the stock bodies and puts in RSS bodies instead. I wanted to say thanks! Your question prompted me to dig into this stuff. I wanted to do this for a while but never got around to it.

https://github.com/pehvbot/LRTR/tree/master/GameData/LRTR/settings/breakingGround.

If you take the seismic.cfg file and edit out the :NEEDS part, that may work.

One important note: The savegame.sfs file (eg persistent, quicksave, etc) keeps a copy of seismic data for some reason. Updating the main MM patch won't update your save file even on restart. You need to also edit the current save file or start a new game. I discovered this while running these tests. It explains a lot of frustrations I was having earlier :-)

WarpPrime commented 2 years ago

Thanks so much! I realized the patch that I created was useless because the game keeps values in the .sfs file, like you noticed. I also found that I was getting science by smashing 8 tons which gave me 40 science (I missed, unfortunately). I don't know if this is because I installed the newest RSS instead of an older one (the last 1.11.x release).

DRVeyl commented 2 years ago

@pehvbot A few things of interest, since I happened across this.

https://www.kerbalspaceprogram.com/api/class_expansions_1_1_serenity_1_1_deployed_science_1_1_runtime_1_1_deployed_science.html where you might tweak the values in the SCENARIO.

In https://github.com/pehvbot/LRTR/blob/master/GameData/LRTR/settings/breakingGround/seismic.cfg you might want to use MM math operations after collecting the mass of the bodies instead of hardcoding each one. If you're expecting Kopernicus, you can do something like

// set in separate patch because of MM parsing order: the nodes will be parsed first before the keys.
@DEPLOYEDSCIENCE:NEEDS[LRTRBreakingGround,RealSolarSystem]
{
    @SEISMICENERGY 
    {
                scale = 5.88e10
        }
}
@DEPLOYEDSCIENCE:NEEDS[LRTRBreakingGround,RealSolarSystem]
{
    @SEISMICENERGY 
    {
        -ENTRY,* {}
        ENTRY
        {
            BodyName = Mercury
            Energy =#$@Kopernicus/Body[Mercury]/Properties/mass$
                        @Energy /= #$../scale$
        }

The values you're setting for energy are the "goal" in Joules to gather maximum science from an impact. So the constant you're dividing mass by [5.88e10] is strictly a game-balancing value.

pehvbot commented 2 years ago

Good info! That is a much cleaner approach. Honestly I didn't even think about using the Kopernicus values directly.

Note I used 1.25e12 for the scale. 5.88e10 was the derived value for the Moon.

DRVeyl commented 2 years ago

@pehvbot See #260. RSS implements this on its own now. You can adjust our balance scaling if you like, but won't need to include your own setup anymore.