Engine & platforms (review)
The engine decision — Unity 6 LTS + URP client for Windows, Android, iOS and Web (browser capped at Low–Mid), Rust servers kept; Unity vs Babylon vs Godot compared. Accepted by the owner in round 6 (ADR-024).
Status: accepted by the owner (round 6, 2026-10-04) — ADR-024 supersedes ADR-002. The docs, stack and roadmap now describe the Unity client. No engine work has started (all milestones are NOT_STARTED); M0 begins once the owner has installed Unity Hub and the pinned LTS (see the toolkit).
◆Why the guide said Babylon.js before round 6
Round 1 targeted browser and mobile web first: instant start, a small download, and text-only sources that AI agents can build and test from a CLI. For that goal a web-native engine (TypeScript + Babylon.js) was the simplest fit, and the wiki's Feel Lab is built with it. The earlier Jade Caravan plan had chosen Unity 6.3 LTS + URP + C# + Blender, with Mirror/secure WebSockets as the networking candidate.
◆What the owner's plan changes (decided, round 4)
- Targets: Windows, Android, iOS and the browser.
- Browser: hard cap at Low–Mid quality (a good, light experience).
- Full experience (High and Ultra) is for the downloaded apps on Windows and phones.
This moves the centre of gravity from "web first" to native first, web as a lighter build. Native High/Ultra (dynamic lights, GPU particles, post effects, large crowds) is where a full engine with a native renderer pays off.
◆Options compared
| Unity 6 LTS + URP (C#) | Babylon.js 9 (TypeScript) | Godot 4.7 (GDScript) | |
|---|---|---|---|
| Windows / Android / iOS native | first-class players, native GPU APIs | via wrappers (Electron/Capacitor around a WebView): browser performance on every platform | native exports (Vulkan/Metal); smaller ecosystem |
| Browser | Web build (WebGL2; WebGPU fully supported since Unity 6.6, Sept 2026) — larger download, capped at Low–Mid by design | the best web start-up and size | web export only with the Compatibility renderer |
| High/Ultra quality | URP: GPU Resident Drawer, VFX Graph, post-processing, LOD groups | possible, but limited by the browser on every platform | Forward+ is good, but the browser can't share it |
| 1,000-player crowds (client) | GPU instancing, GPU Resident Drawer, LOD, animation baking | thin instances / VAT (planned) | MultiMesh; needs more custom work |
| AI-agent workflow | batchmode builds, Unity Test Framework (EditMode/PlayMode) from the CLI; Unity MCP available (specs5 picked CoplayDev/unity-mcp v10.2.0, install still deferred) | everything is text, tests headless in Playwright | text scenes, headless CLI |
| Art pipeline | Blender → FBX/glTF, Animator, Timeline, VFX Graph; huge tutorial base | glTF; animation/VFX tools rebuilt as code | Blender → glTF; good AnimationTree |
| Cost | Unity Personal is free under US$200k revenue + funding (prior 12 months); Pro above. Splash rules per plan | free (Apache-2.0) | free (MIT) |
| Account needed | Unity ID (owner) — agents never create accounts | none | none |
◆Recommendation
- Client: Unity 6 LTS + URP + C# for Windows, Android, iOS and the Web build, from one project:
- Quality profiles: Low, Mid, High and Ultra on native. The Web build ships only the Low and Mid profiles (smaller texture and VFX variants via Addressables), which enforces the browser cap.
- Web graphics: WebGL2 at launch. WebGPU once the 6.x LTS with production WebGPU is pinned, and only after a measured Web gate.
- Pin the LTS for production and verify the exact patch at M0. 6.3 is current; check whether 6.7 LTS has shipped.
- Servers: keep Rust (ADR-003): 1,000 players per channel at 20 Hz, no garbage-collection pauses. The server never depended on the client engine.
- Shared rules:
- Today
zoen-simwas going to be compiled to WASM for client prediction. With Unity, the small prediction subset (movement, collision against the walkability grid, cooldowns, cast phases) is written in C#. - Both sides must pass the same golden test vectors, generated as JSON from the Rust crate and stored in
packages/sim-golden. Since ADR-029 the client first tries the Rust crate itself as a plugin (spike M0-11); the C# subset is the fallback. - The protocol schema generates Rust and C#.
- Today
- Wiki Feel Lab stays Babylon.js: it is previz inside the wiki, not the game client. Its timing rules, reaction
rule and feel tiers (
feel-quality.json) are engine-neutral data the Unity client reads. - Tooling (from the specs5 review, all still gated):
- No Unity MCP (owner direction, M0-07, 2026-10-08): the CoplayDev/unity-mcp smoke test was skipped; agents use batchmode
and
tools/unity-run.mjs. Test Framework 1.6.0 and Performance Testing 3.5.0 are pinned (UNITY_TOOLKIT.md). - GameCI test-runner and builder for CI: needs a Unity licence secret that the owner provides.
- Blender MCP stays deferred.
- Unity Test Framework from the CLI is the default test path for agents.
- No Unity MCP (owner direction, M0-07, 2026-10-08): the CoplayDev/unity-mcp smoke test was skipped; agents use batchmode
and
Why not stay on Babylon? It is the best browser engine, but with native apps as the main experience, every platform would run inside a WebView at browser performance. That contradicts the High/Ultra goal. Godot is a fair alternative, but its web export can't share the Forward+ look, and the Jade Caravan plan, tutorials, tooling review and the owner's expectation all point to Unity.
◆Migration (done in the docs, round 6)
| Area | Change |
|---|---|
| Decisions | ADR-024 accepted; ADR-002 marked superseded. |
| Architecture / stack | apps/client-unity (Unity project) replaces apps/client (Vite); protocol codegen adds C#; prediction subset in C# with golden vectors. |
| Performance | Tier budgets per platform: browser Low–Mid only; native up to Ultra (already recorded in feel-quality.json). |
| VFX / animation | Same layers and budgets, built with VFX Graph and Shuriken (Low), Animator and Timeline; damage still only from server events. |
| Roadmap | M0: the owner installs Unity Hub + the pinned LTS and signs in (agents can't); batchmode build + test smoke. M1: crowd render spike on Windows + mid Android, Web Low/Mid size and frame-rate gate. M2: Combat Lab in Unity. |
| Costs | Unity Personal (free) if eligible; store accounts stay OPEN-5. No purchase without approval. |
Checked 2026-10-04. Re-verify the Unity versions and plan terms on unity.com before installing.
Source: zoen/docs/tech/ENGINE_PLATFORMS.md · 1,065 words · edit the Markdown, not this page.
