Skip to main content

Feature support

What works on each platform, and which declared services still have no backend. Function signatures, ownership contracts and errors are in the API reference.

Capability support​

These App services have no backend yet. Their support value is .not_implemented, and every operation returns error.NotImplemented. They allocate no output devices, threads, sessions, files, fake handles, or successful empty results.

App serviceRequests
networkconnection, listening, messages, polling, disconnection
navigationpaths and destinations; no physics or collision access

eggy.network.support and eggy.navigation.support report support without an App. These contracts do not add components to the Inspector.

Working low-level graphics (eggy.vit), UI (eggy.ui), math (eggy.math), ECS (eggy.ecs), scene formats, and asset formats remain available directly. SDL controllers, touch gameplay input, named input maps, value timers, and gameplay time scaling are implemented. Resource reads, model imports and image decoding have owned asynchronous requests with polling, progress and cooperative cancellation. Native requests use bounded worker threads; browser builds defer decoding of already-preloaded data until polling. Scenes.stream loads a scene over several frames behind a loading screen (Stream a scene). Scenes.replace stages synchronous scene replacement for the end of the gameplay update.

SurfaceDesktopWeb
Native ECS/math, keyboard/mouse, frame time, static graphicsImplementedSame core APIs
Value timers and gameplay time scalingImplementedSame allocation-free API
Named input maps, priorities, modifiers, hold/tap/chord triggersImplemented; project editor includedShared runtime API
Controllers, rumble, and touch contactsSDL3; hardware-dependentSDL3/browser-dependent
Synchronous project/packaged resource and scene providersImplementedPackaged assets preloaded at startup
Translated text: app.localizationA .zon table per locale, with regional locales falling back to their languageSame API
Game-save slotsAtomic versioned saves in project-specific user dataPersistent browser localStorage; quota/availability errors are explicit
Weeoui game UI and custom draw hooksImplementedShared runtime API; no editor import
UI scenes: UiScreen HUDs and UiBillboard world panelsImplemented; UI Designer panel, animated GIFs, plugin widgetsSame runtime API
Materials and directional/point scene lightsImplemented; Inspector components and reusable material assetsShared renderer, up to sixteen lights
Debug drawing and CPU profilingWorld-space overlays, named samples/counters; DevTools Game tabSame frame-owned collectors and drawing
World sprites, text and particlesDepth-tested atlas sprites, camera-facing glyphs, and particles that fly and fade on game timeSame scene renderer
Sound and 3D audio: AudioSource, AudioListener, app.audio()WAV, FLAC, MP3 and Ogg Vorbis through miniaudio; buses; Asset Preview playbackSame API
Animation: Animator, app.animation()Authored .clip.zon clips and imported model clips (bones, blend shapes, baked frames), with blending; Animation panelSame API; packaged models keep their rigs
Post-processing and shaders: PostProcess, Slang .slang filesHDR rendering, tone mapping, bloom and grading; project post passes and material surface shaders, compiled while the editor runsSame; shaders compiled when the game is built
2D: Sprite, SpriteAnimator, Tilemap2D Scene panel with handles, sprite-sheet preview and tile paintingSame API
Physics: Collider, RigidBody, CollidingEntities2D or 3D, f32 or f64, at a fixed step; collider wireframes in the editorSame API
Cutscenes and rendering them to videoCamera cuts, letterbox, takeover; the Render menu writes PNG frames and, with ffmpeg, an MP4Cutscenes play; no Render menu
Dev consoleCommands and Buzz scriptsCommands only
Editor context, panels, commands, actionsDesktop onlyNot run or linked
Missing-backend contracts listed aboveNotImplementedNotImplemented

See Play sound and 3D audio for sound. Browser builds preload packaged resources through Emscripten, then read them synchronously through SDL. Keep the generated .data file beside the WebAssembly, JavaScript and HTML. Android APKs contain the same packaged data and read it through SDL's AssetManager adapter; APK export targets Android 13 (API 33) through Android 16 (API 36) devices with Vulkan 1.3, through the Android plugin.

Rebuild the editor and game library together after updating Eggy: their ABI is checked, not mixed across revisions. Ownership, Play, and reload explains what happens when Eggy changes under an open editor.