Startup Sequence
From process start to the first rendered terrain frame.
Sequence
OS: exec GalaxyEggbertCNA
└─ main() [src/GalaxyEggbertCNA/main.cpp]
├─ game = new GalaxyEggbertCnaGame()
│ └─ constructor sets window title: "Galaxy Eggbert (CNA)"
├─ game->Run() [CNA's Game::Run() — owns the loop]
│ ├─ LoadContent()
│ │ ├─ worldRuntime_.LoadFromVwrFile("worlds3d/world001.vwr")
│ │ │ └─ Worlds::World::loadFromFile(...) — parses VWR1 header,
│ │ │ chunk table, VCH1 payloads (see VWR Format)
│ │ ├─ terrainRenderer_ = GETerrainRenderer(world, GETileAtlas(...))
│ │ │ └─ builds static CubeBatch → Easy3D::BuildCubeMesh → CubeMeshRenderer
│ │ ├─ texture_ = Texture2D("Content/icons/object-m.png")
│ │ ├─ terrainEffect_ = BasicEffect(textured, no vertex color, bound to texture_)
│ │ └─ blupi_.SetPosition(0, 1, 0)
│ │
│ │ ... engine runs its internal frame loop ...
│ │
│ ├─ Update(gameTime) [every frame]
│ │ ├─ worldRuntime_.Update(dt) — advance 6fps anim phase
│ │ ├─ read Keyboard::GetState()
│ │ ├─ blupi_.Step(world, dx, dz, jump, dt)
│ │ └─ camera_.SetTarget(blupi_.GetPosition()); camera_.Update(dt)
│ │
│ └─ Draw(gameTime) [every frame]
│ ├─ device.Clear(sky blue)
│ ├─ set View/Projection/World on terrainEffect_
│ └─ terrainRenderer_->Draw(device, *terrainEffect_)
└─ delete game
Key Observations
- No
#ifdefguards appear anywhere in this path — CNA is called directly. - There is no phase/menu system —
LoadContent()goes straight into rendering the terrain. - The world path is relative (
"worlds3d/world001.vwr"), so the working directory must be the build output directory. GEBlupiController's spawn position(0, 1, 0)is hard-coded, not read from the world file (the.vwrformat carries no spawn header, unlike mobile-eggbert's.txtformat).