Platform Support
What platforms are supported, which engine backend is used, and current status.
Summary
| Platform | Engine | Graphics | Status |
|---|---|---|---|
| Linux x86-64 | U3D | OpenGL (EasyGL or SDL Renderer) | Working |
| Windows x86-64 | U3D (MinGW cross) | SDL Renderer | Working |
| Web (Emscripten) | Nova3D | SDL Renderer (WebGL) | Planned — U3D path blocked |
| Android | Nova3D | SDL Renderer | Planned |
Linux
Primary development platform. Two graphics backend options:
- EasyGL (
-DCNA_BACKEND_EASY_GL=ON) — preferred for development - SDL Renderer (
-DCNA_BACKEND_SDL_RENDERER=ON) — alternative
The U3D engine must be pre-built. A pre-built binary is expected at
/rv/data/library/github.com/u3d-community/U3D/cmake-build-debug
or at the path specified by -DU3D_HOME=.
The executable links against: libUrho3D.a, GL, dl,
m, rt, pthread.
Windows
Supported via cross-compilation from Linux using MinGW-w64 or natively on Windows.
The Windows build uses the SDL Renderer backend.
The resulting binary is a PE32+ x86-64 executable, statically linked against
libgcc and libstdc++.
Windows system libraries linked: opengl32, gdi32, winmm,
imm32, ole32, oleaut32, setupapi,
version, uuid, ws2_32, iphlpapi.
# Cross-build from Linux
cmake -S . -B build-windows \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/mingw-w64.cmake \
-DGALAXY_EGGBERT_ENGINE=U3D \
-DU3D_HOME=/path/to/U3D/build-windows
The toolchain file is at cmake/toolchains/mingw-w64.cmake.
Web (Emscripten)
FATAL_ERROR guard for U3D + Emscripten:
the U3D engine backend cannot be built for the Web target.
Web builds require -DGALAXY_EGGBERT_ENGINE=NOVA3D.
The Nova3D + Emscripten path uses SDL Renderer with WebGL.
The Web build uses emscripten_set_main_loop (via requestAnimationFrame)
instead of a busy loop. Save data is persisted in IndexedDB via IDBFS.
Generated files: GalaxyEggbert.html, GalaxyEggbert.js,
GalaxyEggbert.wasm, GalaxyEggbert.data.
Emscripten link options include: memory growth, 128 MB initial heap, filesystem exports, IDBFS, and preloaded asset bundle.
Android
android/ directory contains a Gradle project skeleton.
The CMakeLists.txt has a FATAL_ERROR guard for U3D + Android.
On Android, the build target is a shared library named main (required by SDLActivity).
Android-specific CMake notes (from CMakeLists.txt):
- Target is
add_library(main SHARED …)instead ofadd_executable - Android and Emscripten force SDL_RENDERER backend for Nova3D
- Additional link libraries:
android,log
Platform-Specific Code
Galaxy Eggbert contains no platform-specific #ifdef guards in C++ source.
Platform differences are handled entirely by:
- CMake conditions (
if(ANDROID),if(EMSCRIPTEN),if(WIN32), etc.) - Urho3D engine API abstractions