Class Reference

The classes and components a developer meets first, grouped by layer (as of 2026-11-10).

This is a selection, not a complete API listing: the pages cover the types that carry the design. Each page gives the header and source location, the purpose, the collaborators, the public members that matter and the tests that cover it. A few entries (HubDoors, DemoReplay, CustomWorldStorage) are components made of free functions and records rather than one class. The headers, with their long comments, are the full reference.

World data model (engine-independent)

Namespaces GalaxyEggbert::Worlds and GalaxyEggbert; no CNA dependency.

ClassHeaderPurpose
Worldinclude/GalaxyEggbert/Worlds/World.hppThe 100×100×100 voxel world: chunks, sparse metadata, the block change journal, .vwr load and save.
Chunkinclude/GalaxyEggbert/Worlds/Chunk.hppA 10×10×10 block cell with a local palette, adaptive bit packing and per-block extra metadata.
Blockinclude/GalaxyEggbert/Worlds/Block.hppOne voxel: a 16-bit value of 12 bits of type (the block icon number) and 4 bits of metadata.
BlockMetadatainclude/GalaxyEggbert/Worlds/BlockMetadata.hppA helper for the 4-bit metadata part of a block. The bits' meaning is left to the game.
VoxelConfiginclude/GalaxyEggbert/Worlds/VoxelConfig.hppCompile-time limits and default dimensions of the voxel world format, and its format version.
BlockDefinitionRegistryinclude/GalaxyEggbert/BlockDefinitionRegistry.hppThe single source of truth for every block icon: render mode, collision, animation and role flags.
MoveObjectRecordinclude/GalaxyEggbert/MoveObjectRecord.hppThe stored form of a moving or interactive object (the original's MoveObject), and its sibling record codecs.
HubDoorsinclude/GalaxyEggbert/HubDoors.hppHub logic: mission doors, gold doors, world signs and where Blupi arrives.

Game

Namespace GalaxyEggbert::Game (src/GalaxyEggbert/Game/), except the host.

ClassHeaderPurpose
GalaxyEggbertGamesrc/GalaxyEggbertCNA/GalaxyEggbertGame.hppThe XNA Game subclass: phases, input capture, the per-tick update, loading missions, drawing.
WorldRuntimeWorldRuntime.hppThe loaded world at run time: the voxel world, the objects as MobileObjSpecs, the animation clock.
BlupiControllerBlupiController.hppBlupi's movement, collision and animation state, engine-independent.
InteractionSystemInteractionSystem.hppObjects, enemies, hazards, pickups, lifts and projectiles. It reports events and has no controller, camera or graphics dependency.
ObjectDefinitionRegistryObjectDefinitionRegistry.hppThe single source of truth for every object type: kind, visuals and capability flags.
HudHud.hppThe heads-up display in the original's 640×480 layout.
InputPadInputPad.hppMenus and their hit-testing, the on-screen touch pad, typed cheats and the help overlay.
SoundSound.hppThe 93 sound channels with the original's volume and pitch table, positioned relative to Blupi.
SaveDataSaveData.hppSettings and per-player progress in savedata.txt.
ResumeLogResumeLog.hppResuming an interrupted mission by replaying its recorded input.
DemoReplayDemoReplay.hppThe .gdemo recordings behind the main menu's demos and the player's recordings.
AutoplayAutoplay.hppThe scripted-playthrough harness used for QA.

Rendering

ClassHeaderPurpose
TerrainRendererTerrainRenderer.hppBuilds and patches the terrain meshes from the world.
TileAtlasTileAtlas.hppMaps block icons to UV rectangles in the original's tile sheet.
WorldRendererWorldRenderer.hppDraws a frame's SceneFrame draw list with the effects the game loaded.

Editor

Namespace GalaxyEggbert::Editor (src/GalaxyEggbert/Editor/).

ClassHeaderPurpose
WorldEditorWorldEditor.hppOne editing session: camera, ray-cast placement, palette, undo/redo, box fill, copy/paste, save and play-test.
CustomWorldStorageCustomWorldStorage.hppThe players' world slots, backups, export and import, and their galaxies on disk.

Renamed and removed classes

Older versions of this site documented classes under names that no longer exist:

Former nameNow
GalaxyEggbertCnaGameGalaxyEggbertGame
GEWorldRuntimeWorldRuntime
GEBlupiControllerBlupiController
GETerrainRendererTerrainRenderer
GETileAtlasTileAtlas
Easy3D::CubeMesh, Easy3D::CubeMeshRendererRemoved with easy-3d on 2026-10-20. Terrain meshes are built with cna-engine's MeshBuilder and drawn as GpuMeshes (TerrainRenderer).