2.7 KiB
2.7 KiB
Web capabilities
What the browser build (GOOS=js GOARCH=wasm, platform/web + gpu/webgl2) supports compared with the native build. Decisions: D289, D290.
Platform
| Feature | Web | Notes |
|---|---|---|
| Window | works | one canvas; size from CSS, pixels from devicePixelRatio |
| Resize, DPI change | works | ResizeObserver, resize, DPR check every frame |
| Keyboard | works | code → scancode; browser shortcuts (Ctrl/Cmd, F5, F11, F12) stay with the browser |
| Text input | degraded | single characters only, no IME composition |
| Mouse | works | pointer capture while a button is held |
| Wheel | works | 100 px = one line; trackpads are precise |
| Pointer lock | degraded | granted on the next click or key press after the request |
| Touch | degraded | primary pointer as the left button; multi-touch in Stage 18 |
| Gamepads | works | standard mapping; Chrome reports a pad only after a button press |
| Focus loss | works | held keys and buttons are released |
| Hidden tab | works | the real clock stops, requestAnimationFrame stops |
| Frame pacing | degraded | always VSync; no frame limiter |
| Fullscreen | degraded | entered on the next click or key press |
| Display modes, monitors | missing | the display module has nothing to apply |
| Clipboard write | works | navigator.clipboard.writeText (secure contexts) |
| Clipboard read | degraded | only what was pasted into the page or copied by the game |
| Cursors | works | CSS cursor names |
| Drag and drop of files | missing | |
| Player profile, saves | works | localStorage, limited to a few MB; a full store reports a write error |
| Files outside the bundle | missing | no OS file system |
GPU
| Feature | Web | Notes |
|---|---|---|
| Buffers, instancing | works | |
| Textures RGBA8, SRGB8_ALPHA8, R8 | works | |
| RGBA16F | degraded | renderable only with EXT_color_buffer_float |
| Depth24/stencil8 targets | works | |
| sRGB output | works | offscreen backbuffer plus an encoding pass |
| Samplers, mipmaps | works | |
| Scissor, viewport, blend, cull | works | |
| ReadPixels | works | targets only; the canvas is not read back |
| GPU timer | degraded | needs EXT_disjoint_timer_query_webgl2, empty otherwise |
| Debug output, object labels | missing | Options.Debug checks getError after creation calls |
| Context loss | works | objects are recreated from CPU copies; textures cost twice the memory |
| Shaders | works | GLSL ES 3.00 copies generated by make shaders |
Exported games
aego export --target web (D295) runs the same runtime as the desktop export on this platform and GPU backend. Differences from desktop: data is loaded into memory before the game starts, there are no log files or crash bundles, saves and settings share the site's localStorage quota.