Platform Support
What is verified where: platforms, CNA renderers, input devices and storage, as of 2026-11-10.
"Verified" below means built and played or checked live, not just compiled. The project's status
file, CURRENT.md, is the authority; this page follows it and the code.
Platforms
| Platform | Status | What has been checked |
|---|---|---|
| Linux desktop (x86-64) | Verified | Built and tested by CI. Played live on a GPU and under Xvfb; every mission has an automated playthrough (last full pass 2026-11-06); golden frames match (2026-11-09). Renderers OPENGL33 and OPENGLES3. |
| Linux runtime bundle | Builds | The package target produces GalaxyEggbert-<version>-linux-x86_64.tar.gz reproducibly. Every release's archive (0.1.0 and later) needs glibc 2.38 or newer (Debian 13, Ubuntu 24.04 and later) and the distribution's FFmpeg; no archive for glibc 2.35 exists yet (Releases). Starting it on other distributions is a check of the host, not part of CI or a release gate. |
| Web (Emscripten, WebGL 2) | Manually verified | Built and run in headless Chrome (2026-11-09: demos, recording, galaxies, the kept world edits, persistence over a reload). Not in CI; a web zip is one of every release's packages (0.1.0 and later). No multiplayer in the browser. |
| Android (APK) | Partial | Every release (0.1.0 and later) has a signed arm64 APK for Android 7.0 (API 24) or newer. Builds APKs for arm64-v8a and x86_64 and starts in the emulator, where the 3D models draw since CNA's UB-007 fix (2026-11-06). On 2026-11-09 a release APK was installed on a phone: the assets were copied, world001 loaded and the title screen drew. It has not been played further on a device. The maintainer reported from the phone that the accelerometer did not react and that the game sometimes froze; neither is reproduced yet. |
| Windows (MinGW) | Packaged | A MinGW cross-build from Linux (WINDOWS.md), zipped in every release since 0.1.0 and played under wine (OpenGL 3.3); not yet tested on Windows itself. |
| macOS | Not a target | No build is documented or tried. |
How to build each one: Build Guide. Open problems: Known Issues.
CNA renderers
The renderer is CNA's own cache option CNA_GRAPHICS_RENDERER, not a game option. The
game sets its default before adding CNA: OPENGLES3 for native builds,
WEBGL2 under Emscripten. CNA's identity registry
(cmake/RendererIdentities.cmake in the cna repository) is the list of valid
names; retired or renamed names stop the configure with an error.
| Identity | What it is (CNA) | With Galaxy Eggbert |
|---|---|---|
OPENGLES3 | OpenGL ES 3 (EasyGL family). Native default here; CNA tests it on Linux and Android. | Verified Linux (2026-10-20 on cna-engine: tests, golden frames, trace); the Android build uses it |
OPENGL33 | Desktop OpenGL 3.3 core (EasyGL family). | Verified the renderer the maintained Linux build runs |
WEBGL2 | WebGL 2 (EasyGL family), Emscripten only; the default there. | Manual the web build |
SDLGPU | SDL's GPU API; CNA's own default on Windows and macOS. Spelled SDL_GPU before CNA renamed it; the old spelling is refused. | Not verified the documented Windows choice |
DIRECTX9 | Direct3D 9, Windows only. | Not tried |
WEBGPU | WebGPU (wgpu-native). | Not tried |
FNA3D | FNA3D with MojoShader. | Not tried |
HEADLESS, SOFTWARE, STUB | No GPU or window; a CPU rasteriser; a no-op renderer. | Not tried |
EASYGL is no longer a renderer name: it is the internal family behind the three GL
identities. The game's 3D effects use GLSL shaders and render targets; they are checked on
OPENGL33 and WEBGL2. Where a shader does not compile, the effect leaves
itself out and fog, soft shadows and particles remain (3D Effects &
Graphics).
Graphics features by platform
| Feature | Linux | Web | Android |
|---|---|---|---|
| 3D effects Off to High | Checked | Checked (High played in headless Chrome) | Not run |
| 3D effects Ultra | Checked | Shaders compile in headless Chrome (2026-11-09) | Not run |
| 2x textures (Setup "Textures") | Auto, 1x, 2x | Always 1x | Always 1x (left out of the APK) |
| Frame rate above 60 (Setup) | 120, 144, 240: drawn between the 60 simulation steps | Not separately verified | |
Input devices
| Device | Status | Notes |
|---|---|---|
| Keyboard and mouse | Verified | Desktop and web. Typed cheat words use CNA's ordered key-down events, so short presses between updates count. |
| Gamepad | Virtual only | The first connected pad in XNA slots 1-4 (GamepadInput.hpp), in play, menus and the editor. Checked with an SDL virtual gamepad (2026-11-08 onwards); no physical gamepad yet. |
| Touch screen | Simulated only | On-screen controls appear only when CNA reports a touch screen; several fingers at once. Direct-touch events checked under Xvfb; no real touch screen yet. |
| Accelerometer | Not working yet | The Setup's Accelerometer toggle steers Blupi by tilting where CNA finds a sensor (Android). GALAXY_ACCEL_PAD=1 shows its on-screen pad on a desktop. On a phone it was reported not to react (not reproduced yet). |
Bindings: Controls; implementation: Input.
Where each platform stores things
| Platform | Game data (read-only) | Player's files |
|---|---|---|
| Linux | Beside the executable: Content/, worlds3d/, textures3d/, avatars3d/ | $XDG_DATA_HOME/Galaxy Eggbert or ~/.local/share/Galaxy Eggbert |
| Windows | Beside GalaxyEggbert.exe, with the SDL DLLs | %LOCALAPPDATA%\Galaxy Eggbert |
| Any desktop | - | --user DIR or GALAXY_USER_DIR when given |
| Web | The .data pack; music fetched from Content/music/ | /save, kept in the browser's IndexedDB |
| Android | Inside the APK, copied to internal storage on first start | The app's internal storage (/data/data/org.openeggbert.galaxyeggbert/files), private, removed on uninstall |
The player's files are savedata.txt, resume.txt, demos/ and
customworlds/ (Running the Game,
Save Data & Resume).