Known Issues & Roadmap
What GalaxyEggbertCNA can do today (2026-07-04), what's next, and the full E3D-MIG task list.
What Works Today
- Opt-in CMake build (
-DGALAXY_EGGBERT_BUILD_CNA=ON), builds clean. - Loads a genuinely 3D, hand-authored
.vwrworld (worlds3d/world001.vwr). - Renders real, textured terrain across all Y layers — one cube per non-air block, via
Easy3D::CubeMesh/CubeMeshRenderer. - Animated tiles (lava/crusher/saw/spike/water/fan/marine/temp) at 6 fps.
- Invisible, collision-only Blupi placeholder: arrow keys + Space, grid collision, 1-block step-up traversal, gravity.
Not Yet Implemented
| Area | Status | Blocked on |
|---|---|---|
| Blupi sprite rendering | Planned | Easy3D BillboardBatch vertex builder + CNA renderer adapter (E3D-MIG-061/062) |
| Object/pickup rendering | Planned | Same billboard blocker, plus billboard-vs-cube design decision |
| HUD | Planned | CNA SpriteBatch usage (E3D-MIG-090…093) |
| Sound | Planned | Sound wrapper around CNA audio (E3D-MIG-080…083) |
| Real gameplay (hazards, enemies, pickups, exit) | Planned | E3D-MIG-100…107 |
| Save/load | Planned | Save-format reuse decision, not yet made |
| Chunk-radius streaming / face culling | Planned | E3D-MIG-057; not urgent until worlds get denser |
Known Bugs / Limitations
- Relative asset paths (
"worlds3d/world001.vwr","Content/icons/object-m.png") only work when run from the build output directory. - No face culling — every non-air block draws a full cube even where fully occluded by neighbors.
- Clean-exit-on-window-close path is only tested via forced kill so far, not verified end-to-end.
- 128 of 129 animated reference GIFs in
mobile-eggbert-reference/images/were found corrupted (frame-ghosting from a missing GIF disposal method); the tool is fixed but only 1 GIF has been regenerated so far — a documentation gap, not a code bug. - Background
region=→ filename mapping is unresolved for most values (mobile-eggbert-reference/05-backgrounds.md, only 3 of 38 characterized).
Near-Term Roadmap (from NEXT.md)
- Continue the mobile-eggbert-reference documentation rework (regenerate remaining animated GIFs, then sounds/backgrounds docs).
- Chunk-radius world streaming once denser hand-authored worlds exist.
- Author more
.vwrworlds beyond the single proof-of-concept. - Add face-culling/occlusion to
GETerrainRenderer. - Render Blupi as a billboard — requires the Easy3D billboard vertex builder + renderer adapter first.
- Verify
GalaxyEggbertCNA's clean-exit-on-window-close path.
Full E3D-MIG Task List (plan.md)
| Range | Status | Covers |
|---|---|---|
| E3D-MIG-000…005 | Done | Docs/analysis/direction-lock write-up |
| E3D-MIG-NEXT-001…006 | Done | Build option, skeleton tree, executable target, minimal clear-color loop |
| E3D-MIG-010…014 | Done | CNA/Easy3D/mobile-eggbert CMake inspection, asset-copy strategy decided |
| E3D-MIG-020…026 | Done | Option added, skeleton files, minimal Game subclass verified via smoke run |
| E3D-MIG-030…043 | Done | Asset build-time copy, shared sources, world file loads end-to-end, minimal GEWorldRuntime |
| E3D-MIG-050…055 | Done | CNA draw-path decision, CubeMesh, CubeMeshRenderer, GETileAtlas, GETerrainRenderer, animated tiles |
| E3D-MIG-058…060 | Done | .vwr as default load path, GEBlupiController invisible movement + VerifyBlupiMovement tool |
| E3D-MIG-015 | Pending decision | Whether to request a mobile-eggbert add_library() target |
| E3D-MIG-056 | Standing constraint | Do not add a MeshCraft/mesh-import path |
| E3D-MIG-057 | Planned | Chunk-radius streaming |
| E3D-MIG-061…066 | Planned | Billboard vertex builder, CNA billboard adapter, render Blupi as billboard, Blupi state-machine port |
| E3D-MIG-070…074 | Planned | Render pickups/enemies as billboards, faithfulness checks |
| E3D-MIG-080…083 | Planned | Sound wrapper, 93-channel playback parity |
| E3D-MIG-090…093 | Planned | HUD via CNA SpriteBatch |
| E3D-MIG-100…107 | Planned | Gameplay porting: pickups, hazards, enemy stomp, respawn invincibility, exit gate, save/load |
| E3D-MIG-110…112 | Standing constraint | Keep Simple3D until CNA reaches parity, retire only then |
| E3D-MIG-120…124 | Out of scope | Optional items: 3D Blupi model, camera modes, Lua, renderer polish |
Source of Truth
NEXT.md and plan.md in the source repository root are authoritative
and change frequently — check them directly before starting new work.