Last verified: 2026-07-25. Update this file whenever a change alters the current state, a known
limitation, a supported build, or the actionable backlog. Keep historical detail in NEXT.md and
plan.md, not here.
Galaxy Eggbert is a faithful 3D remake of mobile-eggbert / Speedy Blupi. The sole game target
is GalaxyEggbertCNA, built directly on CNA with Easy3D as a small helper library. The retired
pre-CNA implementation was removed from the live tree on 2026-07-25 and remains available in git
history at commit 4afd53e.
The in-game 3D world editor is the one approved exception to the faithful-remake rule: it may add content-authoring UX, but not new gameplay mechanics.
- Playable 3D worlds: terrain, animated tiles, objects, enemies, hazards, pickups, vehicles, doors, switches, bridges, teleporters, HUD, sound, menus, save/progress, and hub progression.
- The canonical game implementation lives in
src/GalaxyEggbert/Game/underGalaxyEggbert::Game, without legacyGEprefixes on game-owned components; the CNA-specific source tree now contains only theGalaxyEggbertGameapplication host/platform wiring. - Block and MoveObject type metadata are centralized in backend-independent
BlockDefinitionRegistryandObjectDefinitionRegistrytables. Rendering, collision, imported world support, editor validation, animation, texture-sheet selection, and shared declarative MoveObject interaction capabilities consume these definitions instead of maintaining parallel icon/type classification lists. - All approved world-editor milestones and follow-ups through
EDITOR-130are complete: per-gamer custom worlds, Eggbert-ordered palette, raycast editing, object editing, undo/redo, box fill, functional touch deletion, verified Inverter/crate/Overcraft entries, menu-based sky-region thumbnails, save and play-test loop, unsaved-change protection, correctly sourced BigDecor scenery, a visible/Escape return from the editor browser to the main menu, and a backend-neutralGalaxyEggbert::Editornamespace/source tree without legacyGEprefixes on editor components. - Linux native, Vulkan native, and the debug build are maintained. A MinGW-w64 cross-build of
GalaxyEggbertCNA.exe(SDL_Renderer) is confirmed. Its output now stages SDL3 and MinGW thread runtime DLLs beside the executable while statically linking GCC/C++. A Wine launch reaches window creation and asset/world loading, then correctly exposes the current blocker: CNA'sSDL_RENDERERbackend is 2D-only and throws onCreateVertexBuffer. The Web/Emscripten build has been verified manually, but is not part of CI or a release pipeline. - Linux provides a reproducible
GalaxyEggbertCNA-linux-x86_64.tar.gzruntime bundle through CMake'spackagetarget. It contains source-tracked assets and bundled SDL libraries; actual desktop launch remains a host-environment check, not a CI/release gate. - GitHub Actions CI builds and tests the CNA target from a clean sibling-checkout layout. It excludes
one known, unrelated
easy-gltest failure.
As of the date above, rebuilding and testing the current source succeeds on all native builds:
| Build | Result |
|---|---|
build-cna (EasyGL) |
91 tests pass when the known external easy-gl-resource-smoke-tests is excluded |
build-cna-vulkan |
79/79 pass |
cmake-build-debug |
81 tests pass when the known external easy-gl-resource-smoke-tests is excluded |
The deterministic golden-frame and behavioral-trace harnesses are manual xvfb-run checks, not
default CTest cases. Full commands and sibling-repository pins live in NEXT.md §2 and §7.
- Blupi has no finished faithful 3D model; first-person uses an invisible collision point and third-person uses a temporary placeholder. A real model/rig needs user input.
easy-gl-resource-smoke-testsfails inside theeasy-glsibling repository, not here; CI excludes it. A different test failure is a regression signal.- Vulkan
BasicEffectdraws withAlpha < 1were last recorded as an upstream CNA issue; recheck only when Vulkan work otherwise needs a live run. - The packaged Windows
SDL_RENDERERbuild cannot run the 3D game yet: Wine reaches real startup, then CNA throwsSDL_Renderer does not support 3D: CreateVertexBuffer. Choose and verify a real Windows 3D backend before calling this platform supported. - Editor text is deliberately limited to functional readouts/notices (XYZ coordinates, background ids, and the temporary not-implemented message); the main tool palette remains icon-driven.
- Intermittent window-focus/input loss has occurred under Xvfb/live verification. It has not been reproduced as a Galaxy Eggbert code defect.
- None. The approved editor menu completion work is finished.
AscenseurVertigoplatform geometry,ThinMechanicalgeometry, water treatment, architectural kit assembly, and residual seam-line transparency.- The real Blupi model/rig and its target presentation.
TILE-005: author the remaining full 3D worlds. This is valid but sizeable content work.
- None.
INFRA-006's final ObjectType audit is complete: pure type membership and parameter rules are registry-backed, while the retained branches are distinct state machines or explicitly scoped cheat commands. Choose a new feature or content task before changing gameplay architecture.
- Never modify
../mobile-eggbert; treat it as read-only reference and test data. - Do not transcribe its code, tables, enum values, or byte formats without explicit user approval.
- Do not invent gameplay mechanics; confirm every gameplay feature against the reference first.
- Keep
InteractionSystemindependent ofBlupiController, camera, and graphics. Use its established event/request boundary for cross-system behavior. - Keep the engine-agnostic
include/GalaxyEggbert/world/data model free of CNA/Easy3D dependencies.
| Document | Use it for |
|---|---|
CURRENT.md |
Current status, tested baseline, active limitations, and actionable work |
NEXT.md |
Commands, architecture notes, recent chronological write-ups, detailed constraints |
plan.md |
Historical implementation log, research evidence, and the complete task inventory |
README.md |
Project introduction and onboarding; it links here for current status |
When an entry here conflicts with old prose elsewhere, treat this file as the status source and correct the stale document in the same change when practical.