NetStack

Multiplayer backend for games

Multiplayerwithoutbuildingabackend.

Rooms, player and room properties, and server-authoritative Functions over WebSocket and UDP. Every project gets its own subdomain on netstack.network.

Step 1

Create a project

Choose a name and get your own subdomain, such as mygame.netstack.network.

Step 2

Define Functions

Describe what each game action does and test it against sample state before it goes live.

Step 3

Connect your game

Point the SDK, or a raw UDP socket, at your subdomain. That is the whole backend.

Client SDK

A few lines to connect

Join a room, call a Function by name, and listen for events. Properties stay in sync automatically, and the server decides what each player is allowed to see.

const client = new NetStackClient({
  url: "wss://mygame.netstack.network",
  roomId: "lobby-1",
  playerId: "alice",
});

await client.connect();
await client.call("useItem", { itemId: "potion" });
client.on("event", ({ name, data }) => show(name, data));

Platform

What you get

Rooms and properties

Player and Room Properties, private by default, synced in real time to exactly the players who should see them.

Functions

Server-authoritative logic your game calls by name. Define it in the dashboard, test it in the browser, ship it.

WebSocket and UDP

Browsers connect over WebSocket, native engines over UDP. Same rooms, same Functions, one project subdomain.

Global properties

Shared state across every room in a project: a live counter, a message of the day, a feature flag.

Voice relay

Opt-in voice packet relay between players in a room, under the same permission model as everything else.

Usage and team access

Watch live connections and rooms per project, and invite teammates as managers or viewers.

Ready to ship multiplayer?

The free plan includes 1 project, 50 concurrent players and 3 rooms.

Create your project