-
Notifications
You must be signed in to change notification settings - Fork 9
Saving and Loading
When playing the game saving and loading is automatic! Simply press the start button on the main menu to play and the game will automatically save. When you exit the game the "Load game" button will no longer be grey and pressing that will resume your current saved game. Pressing start again will override your current save file.
We save the current game area using the PlanetScreen.saveGame()
method. This writes the current state of all entities and the GameState
into .json files. The outline of how this method works is shown in the UML Representation.
The saving is implemented by having a file directory ("save/") that replicates the normal "levels/" file directory. If the game is every trying to load a game area or level it will attempt to load first from the save folder, but if that doesn't exist it will load the regular files from "levels/". The only difference in the actual contents is how entities are stored. In the normal "levels/" folder entities are stored in a folder, with each entity seperately stored. This makes it more readable but is uneccessary for saving, so the entities are all simply stored in a single "entities.json" file.
To save the game state we make use of the SaveableComponent
. This is implemented for all entities and allows an easy implementation of saving where we use the EntityService
to collate the saved config files and return a single file for the whole game area. The only additional step required is to save the gamestate from the GameStateObserverService
. This is a simple map that can just be saved to a .json file.
Here we can see the sequence diagram of saving the game.
Escape Earth Game
Interaction Controller and Interactable Components
Game and Entity Configuration Files
Loading Game Configuration Files