goatfungus / NMSSaveEditor

No Man's Sky - Save Editor
1.62k stars 227 forks source link

Not Saving Custom Ships Correctly. #981

Open curlymoe opened 2 months ago

curlymoe commented 2 months ago

When I export a custom built ship, and then restore it, I don't get the same ship back, just a random ship of the same group ie hauler. I have tried using the json editor to copy the custom ship and paste it into another slot, and I still get another random ship. I have tried comparing json from a custom ship, and a standard one, and they look the same to my untrained eye. But obviously there is something different about the custom ships in the save that the Editor is not picking up.

Many thanks for all your work on this Editor, and for updating so quickly.

Ymmit34 commented 2 months ago

Having the exact same problem; whenever I export and later import a custom ship it gives me a random one and resets to being an "authenticated" ship.

goatfungus commented 2 months ago

I think there's something new in the ship data that isn't present in the backups. Not sure what it is yet, but working on it.

Nobere commented 2 months ago

I changed the seed of a created ship and it was the same when I reloaded into the game.

I think the custom-built ships no longer use a seed to determine how they look. I’m betting there is something on the save file that saves their appearance.

EdVenture2025 commented 2 months ago

When I import any sentinel ship it looks like the same plain orange ship. If I edit a constructed ship it changes to authenticated, but looks different. I'm guessing it either the seed thing Nobere mentioned or the authentication bit needs to be left off.

curlymoe commented 2 months ago

When I import any sentinel ship it looks like the same plain orange ship. If I edit a constructed ship it changes to authenticated, but looks different. I'm guessing it either the seed thing Nobere mentioned or the authentication bit needs to be left off.

Yes, I think this may be the key. We need to find out how a ship gets authenticated or not.

boldfish commented 1 month ago

Can I add here that once you have exported and reimported a custom built ship it can then make a muddle of your other ships, they change to something they weren't. I have had shuttles change shape and color, exotics become a completely different type and solar ships change color and type too. I've imported the same saved non custom ship twice on one save and with the same seed get two different models of shuttle, so whatever is happening when you export and re-import a custom ship it affects more than the custom ship and messes up the entire save.

I've scrapped all imported custom ships, reimported normal saves and seem to have my save back.

So beware of export and import on custom ships!!!

tana-second commented 3 weeks ago

Custom ships appear to save additional information in BaseContext/PlayerStateData/CharacterCustomizationData for a non-Expedition save. This is a 23-object array where objects 3-8 govern ship slots 1-6 and objects 17-22 govern ship slots 7-12. I could copy the Iron Vulture from one save file to another via copying the ship data normally, then using the raw JSON editor and manually copying the contents of object 7 (the Vulture was the fifth ship acquired) from the first save and replacing the contents of object 17 (the imported ship was the seventh ship) in the destination save. I was able to repeat the same type of operation using a customized Explorer, so it's not specific to the Vulture.

For reference, this was in the array object corresponding to the Vulture:

{
    "SelectedPreset":"^",
    "CustomData":{
        "DescriptorGroups":[
            "^DROPS_COCKS13",
            "^DROPS_ENGIS13",
            "^DROPS_WINGS13"
        ],
        "FCx":"^SHIP_METALLIC",
        "Colours":[
            {
                "Palette":{
                    "Palette":"Paint",
                    "ColourAlt":"Primary"
                },
                "Colour":[
                    0.4572489857673645,
                    0.4572489857673645,
                    0.4572489857673645,
                    1.0
                ]
            },
            {
                "Palette":{
                    "Palette":"Paint",
                    "ColourAlt":"Alternative3"
                },
                "Colour":[
                    1.0,
                    1.0,
                    1.0,
                    1.0
                ]
            },
            {
                "Palette":{
                    "Palette":"Undercoat",
                    "ColourAlt":"Primary"
                },
                "Colour":[
                    0.8558139801025391,
                    0.5949479937553406,
                    0.4502660036087036,
                    1.0
                ]
            }
        ],
        "TextureOptions":[
            {
                "TextureOptionGroupName":"^SHIP_FIGHT",
                "TextureOptionName":"^METALBOLT"
            }
        ],
        "BoneScales":[],
        "Scale":1.0
    }
}

I suspect that if you try to copy a ship into a slot with customization information, weird or bad things can happen if there's a ship type mismatch. You will need to reset the customization data in that case with default data:

{
    "SelectedPreset":"^",
    "CustomData":{
        "DescriptorGroups":[],
        "FCx":"^",
        "Colours":[],
        "TextureOptions":[],
        "BoneScales":[],
        "Scale":1.0
    }
}
boldfish commented 3 weeks ago

Thank you.

The issue I believe, is that when deleting a custom ship using the save editor, the customisation on the slot is not removed.

I can confirm that setting slots back to defaults after deleting custom ships does fix the problem.

Deleting custom ships and importing new ships, or adding new ships in game to those previously customised slots breaks everything.

So

  1. don't delete a custom ship in the save editor, unless you also edit the JSON to remove the customised bits above and set it back to default.
  2. don't rely on the ship order in the save editor drop down to know which slots to edit in the JSON - you need to check ship ownership section in the JSON to get the correct slot numbers. (and ships are numbered 0 - 11)
  3. Due to slot numbers starting at 0, Your first ship is in slot 0 and is controled by object 3; slot 1 is object 4 etc... the ship in slot 6 is controlled by object 17
boldfish commented 3 weeks ago

I think there's something new in the ship data that isn't present in the backups. Not sure what it is yet, but working on it.

As tana-second points out there is extra data for custom ships in BaseContext/PlayerStateData/CharacterCustomizationData

Current exports don't include it, so you can't import a custom ship, you just get the unskinned base model

Deleting a custom ship using the save editor, leaves it behind and will corrupt the ship that later occupies that slot, either in game or imported.

Interestingly it might open up opportunities to reskin existing ships?

@goatfungus I've joined your patreon subs in the hope that you might find a way...

:O)

SalemDarling commented 3 weeks ago

I was having this problem too, I figured it must be in some other data but I forgot about the Character CustomizationData. It used to be that changes to that section only showed for yourself but not to other players. Maybe they changed it now? In which case you can put in any RGB values you want. At least I hope they changed it, it would bad if we are the only ones who can see the correct colours on our custom ships lol

SalemDarling commented 3 weeks ago

I suspect that if you try to copy a ship into a slot with customization information, weird or bad things can happen if there's a ship type mismatch. You will need to reset the customization data in that case with default data:

{
  "SelectedPreset":"^",
  "CustomData":{
      "DescriptorGroups":[],
      "FCx":"^",
      "Colours":[],
      "TextureOptions":[],
      "BoneScales":[],
      "Scale":1.0
  }
}

Interesting that those colours are 117 grey, white, and orange, and I accidentally got that data onto a custom fighter of mine. It didn't crash anything, even with the hauler parts listed, it just totally changed the cockpit, wings, and engine configuration to another fighter type but still with the grey, white, and orange custom colours lol