Project Overview
What Galaxy Eggbert is, where it comes from, and where it is going.
Lineage
| Project | Description |
|---|---|
| Speedy Blupi (original) | C#/XNA Windows Phone platformer, 2013 |
| mobile-eggbert | C++ port: ILSpy decompile → MonoGame → CNA (SDL3). Read-only reference for Galaxy Eggbert. |
| GalaxyEggbertSimple3D | Current playable 3D remake, built on Simple3D (wraps U3D/Urho3D). Kept as reference until CNA reaches parity. |
| GalaxyEggbertCNA | Long-term target. Built directly on CNA + Easy3D. This documentation's focus. |
The Current Direction Lock
The project's CLAUDE.md records an explicit, binding direction:
Galaxy Eggbert
-> CNA directly
-> Easy3D beside CNA (small helpers only — cameras, texture atlas, billboard/cube batching)
-> mobile-eggbert used read-only as reference / asset / data source
This supersedes an older long-term direction (Galaxy Eggbert -> Simple3D -> U3D / Urho3D / Nova3D -> (CNA someday)).
GalaxyEggbertSimple3D is not being removed — it remains the only
fully playable target and stays in the repository as a historical/reference implementation
until GalaxyEggbertCNA reaches feature parity with it.
Type of Project
Galaxy Eggbert is a faithful game remake — not an emulator, not a generic engine demo.
The rule from CLAUDE.md is explicit: "Galaxy Eggbert is a faithful 3D remake of
mobile-eggbert. Nothing more." Before any feature is implemented or suggested, its existence
in mobile-eggbert must be verified first. Forbidden inventions include coins, time bonuses/star
ratings, coyote time/wall jump/double jump, combo multipliers, or any other mechanic not present
in the original. The only allowed additions are the natural technical consequences of moving to
3D: a perspective camera, billboard sprites, shadows, and step-up traversal.
What GalaxyEggbertCNA Does Today
- Builds clean via
-DGALAXY_EGGBERT_BUILD_CNA=ON(opt-in, default OFF). - Loads a genuinely 3D, hand-authored
.vwrvoxel world (worlds3d/world001.vwr) — not a flat mobile-eggbert layout. - Renders real, textured terrain across all Y layers: one cube per non-air world cell, textured from
object-m.pngviaEasy3D::CubeMesh/CubeMeshRenderer. - Animates hazard/special tiles (lava, crusher, saw, spike, water, fan, marine, temp) at 6 fps, matching mobile-eggbert's original rate.
- Moves an invisible, collision-only Blupi placeholder: arrow keys + Space, grid collision with 1-block step-up traversal and gravity — no sprite yet.
Easy3D::BillboardBatch and
DebugDraw have no CPU-side vertex builder or CNA renderer adapter yet — that is the
main blocker for rendering Blupi and objects. See Known Issues.
Key Facts (verified from source, 2026-07-04)
- World: 100×100×100 blocks, arranged as 10×10×10 chunks (
include/GalaxyEggbert/Worlds/— engine-agnostic, shared by Simple3D and CNA). worlds3d/world001.vwr: 2729 non-air blocks, Y range [0, 13] — ground floor, a 10-step staircase, a raised platform, a walled room, two pillars.- All gameplay enums (
ObjectType0–203,SoundChannel0–92,BlupiAction, etc.) are numerically frozen to match mobile-eggbert's level/save format exactly. - mobile-eggbert's assets (sprite sheets, sounds, world files) are directly reused by file path / build-time copy; its code (Decor.cpp, Tables.cpp, GameData.cpp) is reference-only and may not be copied or linked without explicit approval.