Freaky / elite_shield_tester

A Rust port of Down To Earth Astronomy's Elite Dangerous shield tester
https://hur.st/shieldtester/
8 stars 2 forks source link

Export to coriolis #4

Open Thurion opened 5 years ago

Thurion commented 5 years ago

I just finished work on the newest version of the Python port and I added a feature to open the current loadout on Coriolis, including engineered modules. But I chose to only do this for the shield generator and shield boosters. Everything else can be done on Coriolis.

It would be nice if you would add such a feature as well. For that to work, I built a completely new data source in form of a single JSON file which contains all the required information.

Freaky commented 5 years ago

Nice work!

I've been doing something similar myself using Coriolis data, but I'm working off the standard schema, you appear to have built a custom one?

Thurion commented 5 years ago

Yes and I just pushed it to GitHub: https://github.com/Thurion/Shield-Tester-Data The code is not pretty and it just does what I need it to do and nothing else.

Thurion commented 5 years ago

I also noticed that you added extra files containing all shield generator variants for a specific ship type. I thought of doing the same but decided to do it on the fly at runtime. If you want to do the same, this might help:

Freaky commented 5 years ago

Yup, that's the idea. Manually adding a few was just an easy way to add a bit of variety.

Once I have Coriolis interfaced I'll add the ability to select different booster ratings and engineering grades as well - you don't always want to spend the resources, mass, or energy on maxing out absolutely everything.

Freaky commented 5 years ago

While you're here, what are your thoughts on #1? Yours has the same issue as the Go version, picking the heaviest shield it can to tank the lightest of damage. I'm quite sure you want a high-regen shield in such cases, not one that regenerates just barely faster than you take damage.

Thurion commented 5 years ago

I only calculate those stats to get a proper loadout event to use that for the Coriolis link because they look like this for each module (taken from the journal):

{
    "Slot": "TinyHardpoint7",
    "Item": "hpt_shieldbooster_size0_class5",
    "On": true,
    "Priority": 0,
    "Health": 1.0,
    "Engineering": {
        "Engineer": "Didi Vatermann",
        "EngineerID": 300000,
        "BlueprintID": 128673794,
        "BlueprintName": "ShieldBooster_Resistive",
        "Level": 5,
        "Quality": 1.0,
        "ExperimentalEffect": "special_shieldbooster_kinetic",
        "ExperimentalEffect_Localised": "Force Block",
        "Modifiers": [
            {
                "Label": "Integrity",
                "Value": 42.239998,
                "OriginalValue": 48.0,
                "LessIsGood": 0
            },
            {
                "Label": "PowerDraw",
                "Value": 1.5,
                "OriginalValue": 1.2,
                "LessIsGood": 1
            },
            {
                "Label": "DefenceModifierShieldMultiplier",
                "Value": 18.800009,
                "OriginalValue": 20.000004,
                "LessIsGood": 0
            },
            {
                "Label": "KineticResistance",
                "Value": 18.660004,
                "OriginalValue": 0.0,
                "LessIsGood": 0
            },
            {
                "Label": "ThermicResistance",
                "Value": 17.000002,
                "OriginalValue": 0.0,
                "LessIsGood": 0
            },
            {
                "Label": "ExplosiveResistance",
                "Value": 17.000002,
                "OriginalValue": 0.0,
                "LessIsGood": 0
            }
        ]
    }
}

For Coriolis I only use some basic data for the engineering node, including the changed values.

As for #1: Honestly I have no idea. Because for the simulated fight the one with the highest hitpoint pool and the one with a high regeneration are sufficient. I think the user should experiment with different values.

Thurion commented 4 years ago

It just came to mind that I forgot to tell you how to import data into Coriolis, in case you don’t know: https://coriolis.io/import?data= accepts a base64 encoded gzipped loadout event.

Freaky commented 4 years ago

That much is obvious. Is the "loadout event" schema documented anywhere?

Thurion commented 4 years ago

There is the Journal Manual. But you don't need all information to import a loadout into Coriolis. Here is an example of what my program generates.

You could ask ask the devs on the EDCD Discord in the Coriolis channel if you need more information.

Freaky commented 4 years ago

Thanks :)

Thurion commented 4 years ago

I found a bug of some mismatch between the ship names of Coriolis and what's in the fdev CSV list: https://github.com/Thurion/Shield-Tester-Data/commit/0427a49d1c4d64b25b1729e4546f58a9fc2660f5

I'm posting this here so that you are aware in case you still use the that script to some extent.