Getting Started
Everything you need before your first build.
Prerequisites
Common (all platforms)
- CMake ≥ 3.21 — build system
- C++23-capable compiler — GCC 13+ or Clang 16+
- Git — for cloning and submodule management
Linux native build (EasyGL backend)
- OpenGL development libraries (
libgl-devor equivalent) - Pre-built U3D library at the configured path (see below)
Windows cross-build from Linux (MinGW)
mingw-w64package:sudo apt install mingw-w64- Windows-target SDL3 libraries (supplied via
CNA_WINDOWS_DEPENDENCIES_ROOT)
Web (Emscripten) — Nova3D path only
- Emscripten SDK installed and activated (see Web Build)
- Nova3D engine backend (
-DGALAXY_EGGBERT_ENGINE=NOVA3D)
Clone the Repository
git clone https://github.com/openeggbert/galaxy-eggbert.git
cd galaxy-eggbert
Initialize Submodules
The Nova3D engine backend is a git submodule (../nova-3d relative to the project root).
Even if you only plan to use U3D, run submodule init to avoid CMake warnings:
git submodule init --recursive
git submodule update --recursive
Set Up the U3D Engine (default backend)
Galaxy Eggbert defaults to the U3D engine backend.
U3D must be pre-built and available as a static library (libUrho3D.a) plus headers.
The default expected path, hard-coded in CMakeLists.txt, is:
/rv/data/library/github.com/u3d-community/U3D/cmake-build-debug
You can override this via:
- CMake option:
-DU3D_HOME=/path/to/urho3d/build - Environment variable:
URHO3D_HOME=/path/to/urho3d/build
Warning
The CMake configuration will fail with a fatal error if it cannot find the U3D library. Pre-building U3D from source is required before building Galaxy Eggbert with the U3D backend.
Verify the Asset Files
Game assets are committed in the repository under Content/ and worlds/:
Content/
backgrounds/ ← sky/menu background PNGs
icons/ ← sprite sheets (blupi.png, element.png, object-m.png, …)
sounds/ ← WAV files (sound000.wav … sound092.wav)
worlds/
world001.txt … world005.txt ← level data (mobile-eggbert format)
Tip
The worlds in
worlds/*.txt are the original mobile-eggbert world files. They are loaded at runtime and converted to 3D voxel data. The first run also generates worlds/world001.vwr as a binary cache.