Platform Support

What platforms are supported, which engine backend is used, and current status.

Summary

PlatformEngineGraphicsStatus
Linux x86-64U3DOpenGL (EasyGL or SDL Renderer)Working
Windows x86-64U3D (MinGW cross)SDL RendererWorking
Web (Emscripten)Nova3DSDL Renderer (WebGL)Planned — U3D path blocked
AndroidNova3DSDL RendererPlanned

Linux

Primary development platform. Two graphics backend options:

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)

U3D Not Supported on Web The CMakeLists.txt has a 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 Not Implemented Android support is planned via the Nova3D engine backend. The 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):

Platform-Specific Code

Galaxy Eggbert contains no platform-specific #ifdef guards in C++ source. Platform differences are handled entirely by: