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

SystemMain codeRead
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

SystemMain codeRead
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

SystemMain codeRead
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