class hgame.HGame(object)
In a Humerus-based game there is exactly one instance of HGame or one of its subclasses. This object acts as a central junction
point between the internal state of the game and the user interface,
implemented by an HShell.
The
HGame keeps track of the game state, and provides facilites to help
with saving the state of progress of the game in a file, and restoring
it from a previously saved file.
Game States
The game state is kept in a state object attached to the state
attribute of the HGame. This object can be of any class, although if
you want to take advantage of the default game saving machinery, it
must be pickleable. You will need to provide a new_state() method that creates and returns a new state object of the appropriate type.Saved Game Files
By default, HGame writes the following information to a saved game file:
- Magic numbers identifying the file as belonging to the game application and as being a saved-game file.
- A version number identifying the format of the saved-game data.
- The version number of the application that saved the file.
- A pickled version of the game state object.
The
filename suffixes, magic numbers and version numbers can all be
customized using class attributes. You can also provide information
about which data formats are understood by earlier versions of the
game, so that if a user tries to open a saved game file with the wrong
version of the game, he can be given an error message indicating which
version he needs to use.
Class Attributes
- app_version = (1, 0, 0)
- Version number of the game application.
- app_magic = "????"
- Magic "number" identifying the game application. Traditionally a 4-character string, but this is not a requirement.
- save_file_version = 1
- Version number of the saved-game data format written by this version of the application (an integer).
- save_min_version = 1
- Minimum data format version understood by this version of the application.
- save_app_version = (1, 0, 0)
- Earliest application version that understands the saved-game data format written by this version of the application.
- save_version_ranges = {}
- Information
about application versions that understand saved-game data versions
earlier than save_min_version. A mapping from data versions to pairs of
application versions (min_app_version, max_app_version).
- save_file_magic = "SAVE"
- Magic "number" identifying the file as a saved-game file. You probably won't need to change this.
- save_file_default_name = "SavedGame"
- Default filename for saved-game files.
- save_file_suffix = ".gam"
- Filename suffix for saved-game files.
- default_save_dir_name = "Saves"
- Default directory for saved-game files, within the directory two levels up from the Albow Resources directory.
Attributes
- save_dir
- Directory of the saved-game file last loaded or saved.
- save_name
- Filename (last pathname component) of the saved-game file last loaded or saved.
- unsaved_progress
- True
if there is game progress that has not been saved. You will need to set
this flag to true whenever something happens in the game that warrants
saving.
- state
- Object holding state to be saved in a saved-game file.
Abstract Methods
- new_state()
- Should
create and return a new object holding the state to be saved
in a saved-game file, initialised as for a new game.
- game_is_completed()
- Should return a true value if the game is completed. The value returned will be passed to the game_completed()
method of the HShell, and can be used to distinguish between different
completion states, such as winning or losing. The default implentation
always returns false.
- begin_frame()
- Called once per frame from the HShell when the playing screen, or some other screen that should run the game, is active. Whether a given screen runs the game is determined by the HShell's screen_runs_game() method.
Methods
You
will probably not need to call any of these methods yourself, as they
are called at the appropriate time from the HShell. They are documented
here in case you want to know about them for customization purposes.- game_in_progress()
- Returns true if a game has been started and not yet completed. HShell uses this to determine whether it makes sense to execute the Save Game or Save Game As command.
- play_in_progress()
- Returns true if it is appropriate to show the playing screen. (For HShell this is the same as game_in_progress(), but HLShell defines them differently.)
- new_game()
- Starts a new game by creating a fresh state object.
- load_game(path)
- Restores
a game from the specified saved-game file.
- save_game(path)
- Saves the state of the current game in the specified saved-game file.
- get_save_dir()
- Returns the full pathname of the directory last used to load or save a game.
- get_save_path()
- Returns the default pathname that should be used for saving a game.
---