Clean separation between game mechanics and graphics …
Each screenshot was captured from a different version of the Fuze Creek Game:
- FCConsole, which renders the game using “ASCII graphics” (very retro!)
- FC2D, using top-down 2-D graphics
- FC3D, which renders the game in 3-D with perspective, shading, animated clouds, reflective water, animated ripples, and fog
Note: all 3 games are in the exact same state.
Isolating game mechanics from graphics (i.e., the scene graph) has many advantages:
- Mechanics and graphics can be debugged independently.
- It simplifies saving/restoring game state at runtime.
- State updates can be asynchronous: they need not take place on the render thread.
- It simplifies implementing multiple views, such as for a mini map or radar display.
- It simplifies conversion to a client-server and/or multi-player game.
- It simplifies porting games between engines.