Tutorial: Building GalaxyEggbertCNA
From a fresh clone to a running window on Linux.
Step 1 — Clone the Repository and Its Siblings
cd ~/development
git clone https://github.com/openeggbert/galaxy-eggbert.git
git clone <url> cna
git clone <url> easy-3d
git clone <url> mobile-eggbert
cd galaxy-eggbert
By default, CMake expects cna, easy-3d, and mobile-eggbert
as siblings of galaxy-eggbert. Use -DCNA_HOME=,
-DEASY3D_HOME=, -DMOBILE_EGGBERT_HOME= if yours are elsewhere.
Step 2 — Configure
cmake -S . -B build-cna \
-DGALAXY_EGGBERT_BUILD_CNA=ON \
-DGALAXY_EGGBERT_BUILD_SIMPLE3D=OFF \
-DCMAKE_BUILD_TYPE=Debug
Configure order matters
CNA must configure before easy-3d — Easy3D auto-detects a parent
CNA target and links against it instead of building its own copy.
Step 3 — Build
cmake --build build-cna --target GalaxyEggbertCNA -j2
This also builds and runs the post-build asset-copy step (mobile-eggbert's Content/ + worlds/, plus this repo's own worlds3d/).
Step 4 — Run
cd build-cna
./GalaxyEggbertCNA
Run from the build directory
The loader uses relative paths (
worlds3d/world001.vwr, Content/icons/object-m.png) — you must run the binary from where the asset copy placed those files.
Expected: a window titled "Galaxy Eggbert (CNA)" showing a sky-blue-cleared 3D view of textured terrain (a ground floor, staircase, platform, walled room, and pillars). Arrow keys + Space move an invisible collision point around; there is nothing visible to represent it.
Step 5 — Run the Worlds Data Model Tests
cmake -S . -B build-cna -DBUILD_TESTING=ON
cmake --build build-cna --target GalaxyEggbertWorldsTests
ctest --test-dir build-cna --output-on-failure
Troubleshooting
| Problem | Fix |
|---|---|
| CMake can't find CNA/Easy3D/mobile-eggbert | Pass -DCNA_HOME=, -DEASY3D_HOME=, -DMOBILE_EGGBERT_HOME= explicitly |
| Duplicate-symbol link errors | Reconfigure from a clean build directory — usually caused by configuring Easy3D before CNA |
Binary can't find worlds3d/world001.vwr | Run from inside build-cna/, not the repo root |
| No visible terrain | Check Content/icons/object-m.png was copied next to the binary |