Skip to content

2.5D rooms where presence has location

Spatial

Coming

2.5D rooms where you and your friends exist as avatars in the same launcher. Engine stages 0–3 shipped (domain, transport, codec, simulation). Renderer is next.

You
Mira
Alex

Concept illustration. Live render coming when the renderer ships.

What it actually does

  • 2.5D rooms with avatar presence
  • Engine ships as a platform-agnostic Dart package
  • Audio spatialization (SoLoud on desktop, Web Audio on web)
  • Voice tied to avatar position is on the roadmap

Surfaces

Spatial room

The 2.5D room itself.

Avatar

Player avatar with nameplate.

Audio falloff

Distance-based audio spatialization.

Voice in spatial

Voice tied to position.

The concept

Not a 3D world. Not a 2D chat. A spatial overlay where presence has location.

A spatial room is a top-down 2.5D space inside your launcher. Your avatar moves; other people's avatars move. Audio fades with distance. Nameplates float above characters. The room state is small, deterministic, and replicable — and it doesn't replace your friends list, it adds geography to it.

What we've built

Engine work is partway through. Three landmark milestones are in the codebase today.

Stage 0

The room model

Typed positions, avatars, room state. Pure Dart — no Flutter, no host concerns.

Stages 1–3

The plumbing

Transport, codec, FakeSpatialTransport. Replicates a room without a network.

Stage 3

Reproducible tests

SpatialSimulation runs deterministic rooms in tests. Bugs reproduce on demand.

What's next

Two cards. Honest. No dates.

Coming

Real multiplayer transport

LiveKit DataChannel binding for room state. Replaces the in-process Fake transport.

Coming

The visible room

The Flame-based renderer. Your avatar in a room you can see.

Why platform-agnostic engine

The engine package has zero knowledge of LiveKit, Centrifugo, Riverpod, or Django.

Host adapters live in lib/features/spatial/. The engine itself stays portable: audio comes via injected AudioSpatializer, transport is interface-shaped, cosmetics are pluggable. This means Spatial can target web (Web Audio spatializer) or mobile (Flutter audio) without the engine knowing.

Voice in spatial

Coming

Voice rooms exist today on /chat. Voice tied to your avatar's position in a spatial room is on the roadmap.

See /chat#voice for opt-in voice today.

Open the launcher to use Spatial.