
it starts on SpAItial (http://app.spaitial.ai). Generate a 3D world from a photo/prompt → it comes out as a Gaussian Splat (.spz).
The .spz is the only input the game pipeline needs. The scene you generate is the map you play in.
Users praise SplatArena's open-source GPLv2 release with repo and local docs as its best feature because it enables community-driven map building and setups.

it starts on SpAItial (http://app.spaitial.ai). Generate a 3D world from a photo/prompt → it comes out as a Gaussian Splat (.spz).
The .spz is the only input the game pipeline needs. The scene you generate is the map you play in.

This was made possible by amazing open source projects:
-> @playcanvas — splat rendering + splat-transform -> @agonesdev + @kubernetesio — game-server orchestration -> Pion — WebRTC -> ioquake3 + OpenArena — engine + game data -> @NianticSpatial — SPZ -> q3js — the WASM lineage
Full credits: http://arena.spaitial.io/credits

The map builder pipeline turns the .spz into a playable level:
→ splat blob (what you see) → SuGaR Poisson mesh (what you collide with) → .map → BSP via q3map2 (structure + entities) → AAS bot-nav so bots can path → packed into a Q3 .pk3

The rendering trick: two stacked canvases.
Back canvas = @playcanvas renders the photoreal splats (.sog, GPU sort, LOD). Front canvas is ioquake3 compiled to WASM draws players, weapons, HUD.
The BSP is invisible, as it only does collision + depth so you don't shoot through walls.

The best part: it's all open source (GPLv2). Repo + local setup docs here 👇
https://github.com/spaitial-ai/spaitial_arena_community Build a map from your own .spz and run the whole stack locally. Point Cursor/Claude at the README and it'll walk you through setup.

Multiplayer is WebRTC.
Signaling rides through the edge to an in-cluster proxy. Once ICE settles, media is a direct UDP DataChannel browser to game-server pod.
One game = one Agones GameServer pod (q3ded) on Kubernetes, with warm pools per region across EU + US.