I currently have a crude save system in my game.
When my game is first launched after download, it checks for three directories in a certain location on the client computer, user://save1
, user://save2
, and users://save3
.
If these directories don't exist, they are created with some empty files player_data.save
, level_data.save
, persistence_data.save
and meta_data.save
.
Then, at periodic points in my game, these files are updated. (Which base directory is used depends on which save slot the player chose when they selected a new game, or loaded.)
I have read a lot about the importance of versioning to protect compatibility with saves (for example, here and here).
So, how I can implement versioning into this save system to protect myself from incompatibilities when I inevitably release updates and patches to the game?
For example, is it advisable to create different save directories per game version, so that on boot you check if you have a save directory corresponding to your current game version? Or is it advisable to just have a single save directory and merely save a text file with the version number in the sub directories?
A structure like:
version_1_saves
save1
save2
save3
version_2_saves
save1
save2
save3
Or a structure like:
saves
save1
version.txt
save2
version.txt
save3
version.txt
And what do the checks look like when you do release an update and need to check for compatibility when a player boots the game or tries to load an old save?