Systems
Each game system, the code that implements it, and the page that explains it.
A "system" here is a behaviour the player sees, such as swimming or hub doors. Most of them are
spread over a few files rather than owned by a single class. The tables name the main code; paths
are relative to src/. In the play phase the systems run in a fixed order once per
1/60 s tick (Game Loop).
One boundary to keep
InteractionSystem knows nothing of BlupiController, the camera or the
graphics. It reports events (Blupi died, a pickup was taken, a voyage to another world is
requested), and the host applies whatever needs the controller, camera, HUD or sound. Most
systems below are wired through that boundary (Architecture).
Play
| System | Main code | Read |
|---|---|---|
| Movement, jumping, gravity, ledges, hanging on bars | Game/BlupiController, Game/BarRows.hpp |
BlupiController |
| Collision with blocks, models and big decor | Game/BlupiController, Game/SolidBox.hpp, BlockDefinitionRegistry |
Collision |
| Swimming and diving | Game/BlupiController |
Gameplay |
| Vehicles: jeep, tank, helicopter, skateboard, and others | Game/BlupiController (driving), GalaxyEggbertCNA/GalaxyEggbertGame.cpp (entering, leaving, wrecking, motor sounds), Game/TankShot.hpp |
Gameplay |
| Objects, enemies and hazards | Game/InteractionSystem, Game/EnemyBlupi.hpp, Game/FanGeometry.hpp, Game/LavaHeight.hpp |
InteractionSystem, Object Lifecycle |
| Pickups: treasure, eggs, keys, drinks, dynamite, ammunition, lives | Game/InteractionSystem, Game/ReusablePickup.hpp |
Gameplay |
| Crates (push and pull) | Game/CratePush.hpp, Game/InteractionSystem |
Gameplay |
| Lifts and moving platforms | Game/InteractionSystem (patrols), Game/LiftVisual.hpp |
ObjectDefinitionRegistry |
| Switches, bridges, doors and teleporters | Game/InteractionSystem, Game/WorldRuntime, GalaxyEggbertCNA/GalaxyEggbertGameUpdate.cpp; block changes patch the terrain through the world's change journal |
World, TerrainRenderer |
| Hubs, mission doors and progression | HubDoors.cpp, GalaxyEggbertCNA/GalaxyEggbertGameMissions.cpp, Game/SaveData |
HubDoors, Campaign & Worlds |
| Chase camera and camera shake | Game/ChaseCameraYaw, Game/CameraShake, cna-engine's Camera |
Game Loop |
Presentation
| System | Main code | Read |
|---|---|---|
| World drawing | GalaxyEggbertCNA/GalaxyEggbertGameScene.cpp → Game/SceneFrame.hpp → Game/WorldRenderer |
Rendering |
| Terrain and reliefs | Game/TerrainRenderer, Game/TerrainRelief, Game/TileAtlas |
TerrainRenderer |
| 3D effects (Off to Ultra) | Game/WorldEffects.cpp, Game/SceneShaders, Game/PostProcess, Game/UltraFinish, Game/EffectParticles |
3D Effects & Graphics |
| HUD, training hints, compass | Game/Hud, Game/TrainingHints, Game/ObjectiveHint.hpp, HintZoneRecord |
Hud |
| Sound and music | Game/Sound; music and vehicle motors in GalaxyEggbertCNA/GalaxyEggbertGame.cpp |
Audio & Music |
Around the game
| System | Main code | Read |
|---|---|---|
| Phases, menus and Setup | Def/GamePhase.hpp, Game/InputPad, GalaxyEggbertCNA/GalaxyEggbertGameUpdate.cpp |
GalaxyEggbertGame, Input |
| Input devices | Game/ControlInput.hpp, Game/GamepadInput.hpp, Game/InputPad |
Controls, Input |
| Settings and progress | Game/SaveData, Game/UserFolder |
Save Data & Resume |
| Resuming an interrupted mission | Game/ResumeLog, GalaxyEggbertCNA/GalaxyEggbertGameDemo.cpp |
ResumeLog |
| Demos and recordings | Game/DemoReplay, GalaxyEggbertCNA/GalaxyEggbertGameDemo.cpp |
Demos & Recordings |
| Cheats and diagnostics | Game/InputPad (typed words), GalaxyEggbertCNA/GalaxyEggbertGame.cpp (ApplyCheat, ApplyTypedCheat), Game/DebugOverlay.hpp, Game/CheatConfig.hpp |
Cheats & Diagnostics |
| 3D world editor | Editor/ |
3D World Editor, WorldEditor |
| The player's galaxy | Editor/GalaxyBrowserScreen, Editor/CustomWorldStorage, GalaxyEggbertCNA/GalaxyEggbertGameMissions.cpp |
Your Own Galaxy |
| Scripted playthroughs (QA) | Game/Autoplay, tools/autoplay/ |
Testing & QA |