# Game Save Editing

> Edit PC game save files to change values (money, XP, resources). Locate saves, decompress, edit JSON/binary, recompress, and know what's editable vs hardcoded.

- Skill: `wcpaka-lgtm/game-save-editing` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add wcpaka-lgtm/game-save-editing`
- Raw SKILL.md: https://api.skillmd.com/api/skills/wcpaka-lgtm/game-save-editing/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: wcpaka-lgtm (https://skillmd.com/u/wcpaka-lgtm)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/wcpaka-lgtm/game-save-editing

---


# Game Save Editing

Edit single-player game saves to change stored values (money, XP, resources, unlocks). This is for the user's OWN offline single-player saves — not multiplayer, not anti-cheat bypass.

## Core workflow

1. **Locate the save.** It is rarely in the game install folder. Check (in order):
   - `%USERPROFILE%\AppData\LocalLow\<DevName>\<GameName>\` — **Unity games default here**
   - `%USERPROFILE%\AppData\Local\<DevName>\<GameName>\`
   - `%USERPROFILE%\AppData\Roaming\<DevName>\<GameName>\`
   - **Windows Registry**: `HKCU\Software\<DevName>\<GameName>` — some Unity games store saves as registry values (e.g. Revolution Idle uses `REG_BINARY` values like `game_data_h1843190820`). Check with `reg query "HKCU\Software\<DevName>" /s`. If values are encrypted/encoded binary blobs, direct editing is usually infeasible — fall through to code patching.
   - `%USERPROFILE%\Documents\` and `Documents\My Games\`
   - Steam userdata: `<Steam>\userdata\<steamid>\<appid>\`
   - The game install dir itself — some Unity games store saves under `<Game>_Data/UserData/<steamid>/save.json` (e.g. Wireworks). Check here if AppData paths are empty.
   - Use `find "$USERPROFILE/AppData/LocalLow" -maxdepth 2 -iname "*<keyword>*"` to discover the dev/game folder name.

2. **Back up before touching anything.** `cp SAVE.X SAVE.X.bak`. Always. Tell the user you did.

3. **Identify the format.** Common cases:
   - Plain JSON / XML — edit directly.
   - Gzip (`.GZ`, or magic bytes `1f 8b`) — `gunzip -c SAVE.GZ > work.txt`, edit, `gzip -c work.txt > SAVE.GZ`.
   - Binary / proprietary — needs a hex editor or a community save-editor; often not worth it.

4. **Find the field by keyword.** Don't guess the field name — grep for likely keys:
   `money|cash|currency|coin|gold|credit|balance|fund|wallet|xp|experience|level|resource`
   Then read the surrounding context to confirm it's the right one (and note sibling fields like `startOfDayMoney` that must change in lockstep or the value reverts).

5. **Edit + recompress + clean up** the temp decompressed file.

6. **Verify** by re-grepping the recompressed file (decompress → grep → confirm new value).

## Pitfalls

- **Sibling/mirror fields.** Many games store a value AND a checkpoint copy (e.g. `money` + `startOfDayMoney`). Edit only one and the game reconciles back to the other on load. Change all copies to the same value.
- **Escaped JSON.** Unity saves often nest JSON-as-string, so quotes are escaped (`\"money\":2070`). Your `sed` pattern must include the backslashes: `sed -i 's/\\"money\\":2070/\\"money\\":10000000/g'`.
- **Checksums/hashes.** Some saves embed a CRC or hash; editing breaks the load. If a save won't load after editing, a checksum is likely the cause — search for a community tool.
- **Game must be closed** while you edit, or it overwrites your change on next autosave/exit.

## Hard limit — what save editing CANNOT do

Save files only store **state**, not **mechanics**. Values that live in the game's compiled code are NOT editable via the save:

- Drop rates / ore yield / "how much I get per action"
- Mining/crafting/build speed multipliers
- Damage, movement speed, physics constants

For **Unity IL2CPP** games (look for `GameAssembly.dll` + `UnityPlayer.dll` in the install dir), these mechanics are baked into `GameAssembly.dll`. Changing them requires memory editing (Cheat Engine) or DLL modding (BepInEx/MelonLoader) — a different technique, not save editing. See `references/unity-il2cpp.md`.

For **Unity Mono** games (look for `<Game>_Data/Managed/Assembly-CSharp.dll`, NO `GameAssembly.dll`), mechanics are in standard .NET assemblies and can be patched at runtime with **BepInEx 5 + Harmony** — much easier than IL2CPP. Full workflow (dnfile inspection → BepInEx install → Harmony plugin → csc.exe compile) in `references/unity-mono-bepinex.md`.

**Tell the user this boundary honestly instead of pretending the save can do it.** But then immediately offer to do the modding path — for Mono games it's very achievable.

## Honesty rule

When the user asks for something the save can't hold (a gameplay multiplier), say so plainly and offer the real alternatives (in-game upgrades, Cheat Engine, mods). Never fabricate a "done" for a change you didn't actually make.

