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

PlatformStatusWhat has been checked
Linux desktop (x86-64)VerifiedBuilt 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 bundleBuildsThe 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 verifiedBuilt 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)PartialEvery 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)PackagedA 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.
macOSNot a targetNo 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.

IdentityWhat it is (CNA)With Galaxy Eggbert
OPENGLES3OpenGL 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
OPENGL33Desktop OpenGL 3.3 core (EasyGL family).Verified the renderer the maintained Linux build runs
WEBGL2WebGL 2 (EasyGL family), Emscripten only; the default there.Manual the web build
SDLGPUSDL'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
DIRECTX9Direct3D 9, Windows only.Not tried
WEBGPUWebGPU (wgpu-native).Not tried
FNA3DFNA3D with MojoShader.Not tried
HEADLESS, SOFTWARE, STUBNo 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

FeatureLinuxWebAndroid
3D effects Off to HighCheckedChecked (High played in headless Chrome)Not run
3D effects UltraCheckedShaders compile in headless Chrome (2026-11-09)Not run
2x textures (Setup "Textures")Auto, 1x, 2xAlways 1xAlways 1x (left out of the APK)
Frame rate above 60 (Setup)120, 144, 240: drawn between the 60 simulation stepsNot separately verified

Input devices

DeviceStatusNotes
Keyboard and mouseVerifiedDesktop and web. Typed cheat words use CNA's ordered key-down events, so short presses between updates count.
GamepadVirtual onlyThe 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 screenSimulated onlyOn-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.
AccelerometerNot working yetThe 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

PlatformGame data (read-only)Player's files
LinuxBeside the executable: Content/, worlds3d/, textures3d/, avatars3d/$XDG_DATA_HOME/Galaxy Eggbert or ~/.local/share/Galaxy Eggbert
WindowsBeside GalaxyEggbert.exe, with the SDL DLLs%LOCALAPPDATA%\Galaxy Eggbert
Any desktop---user DIR or GALAXY_USER_DIR when given
WebThe .data pack; music fetched from Content/music//save, kept in the browser's IndexedDB
AndroidInside the APK, copied to internal storage on first startThe 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).