Architecture
One foundation. Three rendering paths. Every device.
The `@wilds/xr` package is a thin WebXR layer on top of React Three Fiber. Each game family declares its capability, and the runtime picks the right mode for the player at session start.
Why WebXR over a native app
Three-track architecture
R3F native VR for 3D-rendered worlds. Curved cinema mode for 2D Phaser, Pixi, and DOM family viewports. A dedicated /app/vr shell for browse and companion chat. All one foundation package.
AI companions in 3D
Default: holographic portrait following the player with mood ring and voice ring tied to TTS amplitude. Creators opt in per blueprint to upgrade to a rigged VRM 1.0 humanoid with mood-driven idle, gaze, and HEXACO-shaped posture.
Native input fluency
XR controllers + hand tracking with auto-switch. Pinch to confirm, grip to grab, palm-down to summon the wrist menu, thumbstick edge to navigate. The same `InputDeviceProvider` contract every wilds family already speaks.
Comfort first
Teleport by default, smooth locomotion opt-in. Snap turn at 30 degrees, medium vignette on motion, sitting mode on. Per-blueprint comfort overrides for creators who know their world is intense.
Zero impact on flat-mode users
Lazy-load discipline. Non-VR pages ship under 4 KB of XR-related code. The `Enter VR` button is invisible on browsers without WebXR. Every VR surface has a flat equivalent that ships first.
Every existing world is VR-ready
R3F families like realtime-3d play in immersive VR with hand controllers. Phaser families project as a curved cinema screen at a virtual seat. DOM families render through a Drei HTML portal. Day-one VR catalog: every blueprint on the platform.
Devices
One web codebase, every headset
WebXR has shipped. wilds.ai runs the same JavaScript bundle on every major XR browser. No native SDK install, no app-store review, no platform-specific build.
| Device | Browser | Controllers | Hands | Voice IO | Notes |
|---|---|---|---|---|---|
| Quest 3 / Pro | Oculus Browser | ✓ | ✓ | ✓ | Best supported. Hand tracking and controllers both ship out of the box. |
| Quest 2 | Oculus Browser | ✓ | ✓ | ✓ | Frame budget at 11.1 ms (90 Hz). Hands available since v40. |
| Vision Pro | Safari | · | ✓ | ✓ | Hands-only by design. Gaze + pinch is the primary pointer. |
| Valve Index | Edge / Chrome + SteamVR | ✓ | ~ | ✓ | PCVR via OpenXR runtime. Finger tracking partial. |
| Pico 4 / Pico Neo 3 | Pico Browser | ✓ | ✓ | ✓ | WebXR coverage parity with Quest. Same code path. |
| HTC Vive | Edge / Chrome + SteamVR | ✓ | · | ✓ | Controllers only. Cosmos / Pro variants supported via the same OpenXR runtime. |
✓ supported~ partial· not available on this device
Roadmap
What ships next
Native VR for 3D worlds
R3F-rendered families (realtime-3d, R3F board game variants) mount inside the `XRGameScaffold` with controllers, hands, teleport, and snap-turn. Companion portrait follows the player automatically.
Cinema mode for 2D worlds
Phaser, PixiJS, and DOM family viewports project onto a curved cinema screen. The player sits at a virtual seat; XR controllers map to the same semantic actions as a gamepad.
3D companion avatars
Text-to-3D character generation via Meshy v4 and Tripo3D. VRM 1.0 humanoid output with mood-driven idle animation, TTS-driven jaw lip-sync, gaze tracking, and HEXACO posture cues. Creator pays per generation; existing wallets supported.
Multiplayer co-presence
VR + flat-screen players in the same session. VR players see flat players as spectator portraits; flat players see VR players in the existing chat sidebar. Same multiplayer transport, one extra panel layer.
In-VR creator studio
Scene composition, asset browsing, and prompt editing inside VR. Day one is browse + play; full studio surfaces follow once the flat editor patterns prove portable.
Ready to try it?
Open wilds.ai in Quest Browser, Vision Pro Safari, or any PCVR-capable Chromium browser, then click Enter VR on any world.