Multiplayer game development

Multiplayer games and the servers behind them.

Networked gameplay goes wrong in the details: a dropped player who cannot rejoin, an inventory that disagrees between machines, a level that generates differently on each machine, a floor nobody can run.

For game teams and venues that need several players, or several headsets in one room, to share one correct session.

The Spatial Venue status page during a test session: a "Stop all" button with tick count and uptime, and a table with one session, Floor A, Ready on hole 1 of 3, and four headsets, each Aligned with 100% battery, tracking ok, and a heartbeat under one second.
The read-only status page served by the venue server. Captured in testing with simulated participants.

Worked example

One room, several headsets, one session

Spatial Venue is our server for location-based XR. It owns the roster, phases, scores, course, props, and settings of a session, validates what each headset reports, and streams bit-packed snapshots to every headset 30 times a second over UDP, with reconnect tokens so a dropped headset rejoins in place.

Around the server sit the tools a floor needs: a client library shipped as a Unity package, a read-only status page with a live feed, a command-line control tool with a JSON mode for people and for agents, and a DASP control socket so automation can drive a session without patching the game. Load tests run 48 simulated players across 8 sessions, and the decoders are fuzzed.

Diagram of three layers: a game as a thin layer of subclasses and data assets on top; the GameplayFramework plugin in the middle with abilities and attributes, data-driven input, characters, event-driven UI, inventory, spawners, AI and projectiles, and pickups and collectibles; and Unreal Engine 5 systems at the bottom.
In Unreal, GameplayFramework gives a game a replicated base so it can be mostly data and a few subclasses.

Read the case study: Spatial Venue

How it works

  • Spatial Venue

    runs server-authoritative sessions with reconnects, a status page, and a control tool.

  • GameplayFramework

    gives an Unreal game replicated abilities, attributes, inventory, and seeded procedural levels that every client generates identically.

  • DASP

    lets automation drive a session through a control socket instead of patching the game client.

  • XR foundation

    is the Unity starting point for the headset side on Meta Quest 3 and Android XR.

  • Spatial Unreal

    is the Unreal plugin for games and installations that take part in DASP experiences.

What we can build

  • Session servers

    Deterministic, server-authoritative state streamed to every client, with reconnects that put a dropped player back in place.

  • Replicated gameplay

    Abilities, attributes, inventory, and spawning that stay correct over the network, configured with data rather than code.

  • Engine packages

    Native client libraries shipped as Unity and Unreal packages, with one codebase per engine across devices.

  • Procedural content

    Seeded levels and layouts that every client generates identically.

  • Operator tools

    Status pages, control tools, and JSON interfaces so people and agents can run sessions.

  • Load and fuzz testing

    Simulated players that fill sessions, and fuzzed decoders on every network boundary.

Projects

Projects in this area.

All projects

Where to start

One mode, server-authoritative

We run one game mode server-authoritative with two to four players, or load-test the server you already have with simulated players.

What you get
The running mode or the load-test report, and a written note on what to fix or build next.
What you bring
  • The engine and the current networking, if any
  • The mode or the session shape to test
  • Access to a build and to the server

Get in touch

Tell us what you have in mind.

Describe it in a few sentences. You get a draft brief to review before anything is sent.