Settings only
- Use
- ConfigFile or small JSON
- Best for
- Volume, fullscreen, language, accessibility options, input preferences.
- Watch out
- Do not mix settings with game progress unless the game is very small.
Separate durable save data from live nodes, scene paths, and temporary runtime state.
Choose a save approach, write files through FileAccess, serialize safe JSON,
version your data, and avoid the common mistakes that corrupt progress late in development.
The right save system depends on how much state you need to restore. Start with the smallest approach that can survive a real export and a failed load.
Use FileAccess plus JSON for what Unity projects often solve with
PlayerPrefs, JsonUtility, or custom file IO. Godot does not force a SaveGame
class; you own the format.
For most solo 2D and small 3D projects, use one JSON save file first. Add slots, autosaves, and encryption only after the basic load path is reliable.
Before jumping to the next page, turn the idea into one tiny scene or script. That is where the Godot habit sticks.
PlayerPrefs is not a full save architecture.
SaveGame-style data still needs stable IDs and migration habits.
Use user://, plain dictionaries or Resources, and validate loaded data.
Add a save_version field before the save file grows.