Converts Legends of Idleon Steam save files to and from JSON with a friendly GUI that makes it easy to export your save data to Idleon Companion, Cogstruction, and other tools.
- Run Steam, since Legends of Idleon won't run without Steam.
- Download IdleonSaver.exe from Assets in the latest release.
- Run IdleonSaver.exe from your download folder.
- If you get a "Windows protected your PC" popup window, click "More info" then "Run Anyway".
- Follow the instructions displayed in the app.
- On the export screen, click "Show Files" to open the folder containing your exported data.
Use at your own risk.
MAKE BACKUPS before using and DO NOT USE THE ENCODER ON YOUR REAL SAVE DATABASE!
I do not endorse using this tool to edit your live save files. This tool is for educational and investigative purposes only.
Use either poetry install
(recommended) or pip install .
to install dependencies.
If using poetry, replace python
with poetry run python
in this document (or run from a poetry shell
).
If using leveldb scripts, copy your database to a test location (default is ~/dev/leveldb
). For example:
cp -r ~/AppData/Roaming/legends-of-idleon/"Local Storage"/leveldb ~/dev/leveldb
If idleon-saver/idleon-data/
is empty, make sure to run the following command from your project root:
git submodule update --init --recursive
To launch the GUI, run python idleon_saver/gui/main.py
.
The first iteration of this project used scripts that interact with the leveldb directly instead of launching the game. The flakiness of plyvel on Windows has prompted me to abandon that route, which is why the GUI doesn't use the leveldb scripts.
However, these scripts are still available for use if desired.
You can pass --help
to any script to see the arguments it takes.
If your paths don't match the defaults, you'll need to pass your paths to the scripts.
Script arguments:
Argument | Description | Default |
---|---|---|
-n , --idleon |
Legends of Idleon install path | C:/Program Files (x86)/Steam/steamapps/common/Legends of Idleon |
-l , --ldb |
Path to the leveldb to work with | ~/dev/leveldb |
-w , --workdir |
Working directory where files will be created | <package directory>/work |
-i , --infile |
Input filename | Varies by script |
-o , --outfile |
Output filename | Varies by script |
python idleon_saver/scripts/decode.py
will decode leveldb data into 2 JSON files:
decoded_plain.json
, which is easier to read, anddecoded_types.json
, which contains all the information required to re-encode the data back into the leveldb.
python idleon_saver/scripts/encode.py
will encode the data in decoded_types.json
back into the database.
After you've obtained your decoded_plain.json
, you can export it into formats used by community tools with python idleon_saver/scripts/export.py
. This script takes two additional arguments:
Argument | Description | Default | Choices |
---|---|---|---|
-t , --to |
Community tool format to export your data to | idleon_companion |
idleon_companion , cogstruction |
-s , --source |
The save data's origin, which determines its structure | firebase |
firebase , local |
The idleon_companion
option produces idleon_companion.json
for import into Idleon Companion.
The cogstruction
option produces cog_datas.csv
and empties_datas.csv
for use with Cogstruction.
Data obtained from inject.py
(or the GUI) is in the firebase
format, while data obtained via decode.py
is in the local
format.
Feedback, suggestions, and contributions are welcome!
Use poetry install --with dev,test
to install the optional dependencies. Run tests with pytest
. Please run Black before submitting a PR; I have it configured to run on save. Thanks for reading!
- Windows plyvel wheels from https://github.com/synodriver/plyvel/actions