Overview
This codebase implements the game's rendering, user input, game logic, and resource management. It uses a combination of custom C++ classes and the Microsoft DirectX 5 API for 3D graphics and sound.
The code follows a component-based architecture with separate modules for rendering, input, game logic, and resource management. The LegoOmni
class acts as the central hub, coordinating the different subsystems.
The architecture combines event-driven programming (for input and notifications) with a tick-based update loop (for game logic and animation). It makes heavy use of the retained mode features of Direct3DRM for scene management.
Terminology
- Script: SI File (originally intended for scripting functionality, but most game logic ended up hard-coded)
- ROI (Real-time Object Instance): Base class for any object placeable in the 3D world. Handles visibility, world bounding volumes (box and sphere), intrinsic importance (for LOD), and contains a list of LOD objects.
- Mx (Mindscape): Prefix for general utility classes provided by Mindscape (the developer), like
MxString
, MxMatrix
, MxList
, etc.
- Omni: Name of the game engine.
Core Features
- Tickling: MxCore objects can be registered with the MxTickleManager to receive regular updates at set intervals. This mechanism is used for loading video frames, updating 3D sound positions, and other time-based functionality.
- Presenter: Everything you see/hear is a descendant of MxPresenter. The presenter normally receive their data directly from the MxStreamer in chunks during streaming.
- World: Every part of the game (info center, gas station, race etc.) is a world. Also the 3D island is a world, but each act is a separate one.
Documentation Navigation