AnthonyMichaelTDM / DRG-Save-Editor

Rock and stone!
GNU General Public License v3.0
106 stars 17 forks source link

[Proposal] - Add cosmetic overclocks #94

Closed wahlp closed 1 month ago

wahlp commented 1 month ago

it could be in the same UI element as the weapon OCs. currently, that element looks like this:

.
├── Dwarf1
│   ├── Weapon1
│   │   ├── Overclock1
│   │   ├── Overclock2
│   │   └── Overclock3
│   ├── Weapon2
│   └── Weapon3
├── Dwarf2
├── Dwarf3
└── Dwarf4

and after implementing:

.
├── Weapon
│   ├── Dwarf1
│   │   ├── Weapon1
│   │   │   ├── Overclock1
│   │   │   ├── Overclock2
│   │   │   └── Overclock3
│   │   ├── Weapon2
│   │   └── Weapon3
│   ├── Dwarf2
│   ├── Dwarf3
│   └── Dwarf4
└── Cosmetic
    ├── Overclock1
    │   ├── Dwarf1
    │   ├── Dwarf2
    │   ├── Dwarf3
    │   └── Dwarf4
    ├── Overclock2
    └── Overclock3

bearing in mind that each cosmetic is unlocked separately for each dwarf. https://deeprockgalactic.wiki.gg/wiki/Accessory_Shop#Matrix_Core_Cosmetics https://deeprockgalactic.wiki.gg/wiki/Weapon_Skins

kagrith commented 1 month ago

This has been a problem for a long time, everyone wants it solved, there doesn't seem to be an easy / quick way, which is why i suspect its been on the back burner for so long.

Only thing i've come up with would be to start with an empty save file.

Now that all the weapons overclocks are done for S5 again, add the weapon cores in an unforged state to this new file Don't bother forging them.
Then set the level of each season to 100, and the exp of that season to like... 4999, i think. Then grab the sandbox mod that forces events like crates and such.

From there haz1 your way through the mission till you find the event, do the event... i am unsure if aborting the mission will give the new unlock, if it does, then just abort the mission after that. Otherwise, only grab missions like aquarks and have bosco bring you all the mission materials with your laser pointer, engineer with two turrets probably best for this.

After every cosmetic core, open up the updated save file, find the anomalous new hex value, label it. As soon as you get the same item on two different classes, compare their hexes to see how they differ. Hopefully its just an offset of some kind. Once you have the same item on each class, compare their hex values again, see how they differ, confirm / bust offset suspicions.

Skip all the treasure chest unlocks for now, and just focus on the core grinder type events, kursite and the bomb carrying event should be the easiest to do alone.

Go ham till every cosmetic is in the save file. Share cosmetic guid's mappings so that they can be integrated.

Once thats done, claim all the season rewards. Then rinse/repeat the cosmetic hunt process for the treasure chest events, find those guids, and then those can be integrated too as a whole "unlock cosmetics button"

Once every cosmetic is known, we can borrow a save from someone with the streamer cosmetics, find those mappings too.

This should be "easy" but it will be tedious, which is why i suspect this problem has been unsolved for so long, as time went on, the cosmetic core list and the cosmetic treasure chest were being swamped by the updates and seasons.

But it should finally be less time consuming now that unclaimed season rewards have been removed from the drop pool and are now back in their season unlock menu.

kagrith commented 1 month ago

While i was typing that i did come up with another idea, but that one was already getting long in the tooth.

One option, would be to make a mod for the game that adds the core selector to the space rig, it would have to be a sandbox mod, but making such a mod falls outside the scope of this save editor.

Then we could just add a thousand blank cores, shove them into the selector until every unlock is added. Still gotta inspect the save file after each core is selected, but it might be faster to make such a mod than grind haz1

wahlp commented 1 month ago

I think I've found a method to get the Cosmetic OC GUIDs. I have been researching using other tools.


FModel to view the game's internal data. After exporting, we now have all data for all weapons/cosmetics/etc as JSON. These JSON files can be searched to identify the right GUID. The exported data takes up about 1 GB, and not all of it is relevant, so we will need some way of quickly searching through it.

uesave to convert .sav to JSON and vice versa. Removes the concern of having to correctly write data sizes. For the purpose of quickly adding extra overclock GUIDs to confirm their validity ingame, I think it's safer than operating directly with hex.


My general process:

  1. Use FModel to export the data
  2. Open the folder where the data was exported in VS Code
  3. Using VSC's search function, lookup known names or GUID values to find where they live in the directory structure. I eventually found a single file that looked like it contained all the GUIDs we were looking for. Cross referencing this "master copy" file with our guids.json, the weapon OCs in this extracted data were correct.
  4. Use uesave to convert a (preferably not very progressed) save file to JSON.
  5. Taking the GUIDs for the Cosmetic OCs from the "master copy", insert them under OwnedSchematics, following the existing format of the values already there. Unfortunately, the exported data and uesave use different representations of GUIDs, and I had to write a script to convert from the former to the latter.
  6. Convert this modified JSON back to a save file to try ingame. No fuss over the number of bytes occupied by all the new additions or where to update this number, uesave handles it for us.
  7. Launch DRG with this modified save file. Check the forge to confirm if the expected OCs appeared. Not all values found worked on the first try. Some might be labelled with the wrong name, requiring extra trial and error.

From this process, I have compiled a cosmetic-guids.json. cosmetic-guids.json

I checked ingame using a few of these discovered GUIDs, but did not test every single one. There are far more Cosmetic OCs than Weapon OCs. However, I did take these values and try to identify Cosmetic OCs in existing save files, which seem to work.

wahlp commented 1 month ago

i think the ideas presented in my last comment have far reaching implications.

they could help us understand where the data is stored and how to manipulate it, for the cosmetics that are not overclocks, from seasonal event assignments, maybe even the streamer cosmetic.

the exported game files also reveal a lot about assignments, perks, milestones, and statistics

kagrith commented 1 month ago

That's awesome! Hopefully we can get this integrated soon!

I'm happy to test and confirm / troubleshoot, but unfortunately I don't have much time for integration these days.

On Fri, Jul 19, 2024, 13:54 wahlp @.***> wrote:

i think the ideas presented in my last comment have far reaching implications.

they could help us understand where the data is stored and how to manipulate it, for the cosmetics that are not overclocks, from seasonal event assignments, maybe even the streamer cosmetic.

the exported game files also reveal a lot about assignments, perks, milestones, and statistics

— Reply to this email directly, view it on GitHub https://github.com/AnthonyMichaelTDM/DRG-Save-Editor/issues/94#issuecomment-2239920063, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACIBQWGEJOVTDG6HFDBPX7LZNFOFVAVCNFSM6AAAAABLBTDHYWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMZZHEZDAMBWGM . You are receiving this because you commented.Message ID: @.***>

AnthonyMichaelTDM commented 1 month ago

i think the ideas presented in my last comment have far reaching implications.

they could help us understand where the data is stored and how to manipulate it, for the cosmetics that are not overclocks, from seasonal event assignments, maybe even the streamer cosmetic.

the exported game files also reveal a lot about assignments, perks, milestones, and statistics

yeah this is huge, great job

wahlp commented 1 month ago

thanks, i'd love to start implementing it after #89 or maybe the full refactor expected by #75

LordFoogThe4rd commented 1 month ago

IIRC in the experimental branch on steam there is a cheat menu that lets you add all cosmetics to your save