Savegame

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  file.

Version 0.8.2 has a savegame bug on MacOS and Linux. The Windows exclusive Environment variable  is used. Version 0.8.2-2 replaced this with.

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} }

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  and is base64 encoded. The decoded result is a AES-256 (CBC mode) encrypted JSON. The password used to encrypt and decrypt the data has been known since May 2016.

The game is using CryptoJS to encrypt and decrypt the data.

There are multiple ways to decrypt a Savestring:

Import and Export Savestrings
The menu to import and export Savestrings can be opened by pressing F10. Imported saves will be stored on the last savegame slot.

Switch version savegame differences
A key change between the PC and Switch savegames is the latter being saved in plaintext.

Instances of multiple language data have mostly been replaced with just the one chosen language.