ResidualVM logo Main website - Forums - BuildBot - Doxygen - Contact us Log in curved edge

TLJ Design notesTLJ Design notes

Design notes

The engine was designed trying to follow the Single Responsibility Principle.

Parts

The engine is split in high level parts :

  • The game world: The resources used to assemble the scenes
  • The user interface: The screens presented to the player in the menus and in game
  • The services: Globally available singleton, and mostly stateless objects used to manage the game state.
  • The file format readers
  • The rendering code

Services

Some notable services are :

  • GameInterface: Facade object exposing high level operations to manipulate the game world from the other parts of the engine. Example: Using an inventory item on a scene item, or telling April to move to a set of coordinates.
  • UserInterface: Facade object exposing high level operations to manipulate the user interface from other parts of the engine. Example: Opening the inventory, or Playing a Full Motion Video.
  • StateProvider: Used to store the state of the game resources while they are not currently loaded in memory.
  • ResourceProvider: Used to make sure the currently loaded resources are those required by the current level and location.
  • Global: Used to access global state data such as the current level, the inventory, ...

 

curved edge   curved edge