Savegame: Difference between revisions
(update openssl examples to explicitly use md5 digest; in newer versions of openssl the default has changed to sha256 digest) |
Streetclaw (talk | contribs) m (save file name added) |
||
Line 16: | Line 16: | ||
|- | |- | ||
|<code>Windows 10 (Microsoft Store/Xbox Game Pass)</code> | |<code>Windows 10 (Microsoft Store/Xbox Game Pass)</code> | ||
|<code>%LOCALAPPDATA%\Packages\DECK13.CrossCodePC_rn1dn9jh54zft\LocalCache\Local\CrossCode</code> | |<code>%LOCALAPPDATA%\Packages\DECK13.CrossCodePC_rn1dn9jh54zft\LocalCache\Local\CrossCode\cc.save</code> | ||
|- | |- | ||
| <code>Linux</code> | | <code>Linux</code> |
Revision as of 22:08, 21 October 2019
CrossCode has two save systems. The old system (before 0.8.2) stores all Saves in localstorage. Due to size limitations this was changed to a file based save system. This new System stores save data in the cc.save
file.
0.8.2 has a savegame bug on MacOS and Linux. The Windows exclusive Environment variable appdata
is used. Version 0.8.2-2 replaced this with nw.App.dataPath
.
Location
Save File (since 0.8.2-2)
System | Path |
---|---|
Windows
|
%LOCALAPPDATA%\CrossCode\cc.save
|
Windows 10 (Microsoft Store/Xbox Game Pass)
|
%LOCALAPPDATA%\Packages\DECK13.CrossCodePC_rn1dn9jh54zft\LocalCache\Local\CrossCode\cc.save
|
Linux
|
~/.config/CrossCode/Default/cc.save
|
MacOS
|
~/Library/Application Support/CrossCode/Default/cc.save
|
Localstorage saves (old system)
System | Path |
---|---|
Windows
|
%LOCALAPPDATA%\CrossCode\Local Storage\
|
Linux
|
~/.config/CrossCode/Default/Local Storage/
|
MacOS
|
~/Library/Application Support/CrossCode/Default/Local Storage/
|
Savefile and Localstorage format
The format of the Save storage is a JSON:
Format overview:
{ "slots": [ {savestring_slot1}, {savestring_slot2}, ..., {savestring_slotX} ], "autoSlot": {savestring}, "globals": {savestring}, "lastSlot": {slot_number} }
Element | Description |
---|---|
"slots"
|
Array (List) containing all saves, starting with Slot 1 |
"autoSlot"
|
Containing the Autosave |
"globals"
|
Containing all global data |
"lastSlot"
|
Example:
{ "slots": [ "[-!_0_!-]U2FsdGVkX1+K8a2HlAKS...5329sQ69bTU5quQ0UGjIt6DG45kxwJZD", "[-!_0_!-]U2FsdGVkX1/sl4dQyBgHx...jbIn4tmVHPt0ZCxi9ElniMHI13xGxQk", "[-!_0_!-]U2FsdGVkX19zOTWR9ynkq...HZczzbAOZZuyviB4nzTKAdqYcaBEbIU" ], "autoSlot": "[-!_0_!-]U2FsdGVkX19qIZAUL2kZ...Ox8t/0yfkRouUdgaCFWrMT8jup", "globals": "[-!_0_!-]U2FsdGVkX19YItQieykUU...xuFzHg4oeyhlJRR5/CRA/NBE8o", "lastSlot": 0 }
Savestring
A savestring containing the actual save data. Every String starts with [-!_0_!-]
and is base64 encoded. The decoded result is a AES-256 (CBC mode) encrypted JSON. The password that is used to encypt and decrypt the data is already known since May 2016.
The game is using CryptoJS to encrypt and decrypt the data.
There are multiple ways to decrypt a Savestring:
Method | Info |
---|---|
Openssl
|
Remove [-!_0_!-] from the String
Encrypt: Decrypt: |
CryptoJS
|
Remove [-!_0_!-] from the String
Encrypt: Decrypt: |
Editor from Omegalink12
|
Online Editor (Sourcecode) |
Editor from Streetclaw
|
Download (savegameEdit.html) |
Import and Export Savestrings
The Menu to Import and Export Savestrings can be opend by pressing F10. Imported Saves will be stored on the last savegame slot.
Decrypted Savestring (JSON)
Savegame
Element | Description |
---|---|
"map"
|
Current Map |
"vars"
|
Map, Game and Event Storage |
"position"
|
|
"bgm"
|
Background Music |
"gui"
|
|
"version"
|
Game version |
"saveVersion"
|
Savegame version |
"timers"
|
Timer data |
"playtime"
|
Full playtime in seconds |
"stats"
|
Game stats |
"message"
|
Last messages |
"options"
|
(empty) |
"area"
|
Area (Load- / Savescreen) |
"floor"
|
Floor (Load- / Savescreen) |
"specialMap"
|
Special Map (Load- / Savescreen) |
"visitedAreas"
|
Visited Areas |
"landmarks"
|
Reached Landmarks |
"lories"
|
Lore marker |
"tradersFound"
|
Trader found |
"menuNewEntries"
|
Tracks new menu entries |
"logs"
|
Game log |
"drops"
|
Botanic data |
"player"
|
Player data |
"saveBlock"
|
Save disabled |
"forceCombatMode"
|
Combat mode |
"highscore"
|
|
"highscore-obs"
|
|
"permaTask"
|
Current Main Task |
"quests"
|
Quests |
"party"
|
Party / Contact data |
"commonEvents"
|
Event data (Combat Art tutorial flags) |
Global
Element | Description |
---|---|
"feats"
|
Trophies |
"options"
|
Game options |