Skip to content

Test Tier ​

Try the network without an account. One request gets you a test room: a room that works for an hour, for up to ten players. No registration required. A coding agent can do the whole thing for you. To start a new game, ask it:

text
make a 2D top-down shooter using arrr.fun's test tier

Or to add multiplayer to a game you already have:

text
implement arrr.fun's test-tier networking into my existing game. read the documentation and make the necessary changes to ensure it works well

Either way, point it at this page.

When you want to keep what you built, sign in and make a free app; it does not expire. You swap three values and nothing else.

1. Get a test room ​

bash
curl -X POST https://cloud.arrr.fun/api/test-tier/rooms
json
{
  "appId": "test_3f9c2a71b0d84e15",
  "apiKey": "arrr_…",
  "roomId": "test_3f9c2a71b0d84e15",
  "expiresAt": "2026-10-02T13:00:00.000Z",
  "fps": 20,
  "limits": { "roomMinutes": 60, "playersPerRoom": 10, … }
}

You can send a JSON body with a name (a label) and an fps (the tick rate: 0 for a room that ticks only when someone sends something, otherwise up to 20; 20 if you leave it out).

2. Connect to it ​

Pass all three values to connect(), as you would for any app:

html
<script src="https://arrr.fun/sdk/arrr-network.iife.js"></script>
<script>
  const room = await arrrNetwork.connect('test_3f9c2a71b0d84e15', {   // the roomId
    appId: 'test_3f9c2a71b0d84e15',
    apiKey: 'arrr_…',
    user: { id: crypto.randomUUID() },
    onTick(frame, inputs) { /* every player gets the same inputs, in the same order */ }
  });
  room.send({ move: { x: 1, y: 0 } });
</script>

The key opens that one room and no other. The rest is in Getting Started.

Limits ​

GET https://cloud.arrr.fun/api/test-tier returns the current numbers.

Test roomFree app (signed in)
Accountnoneyes
Roomsoneas many as you need
Lastsone hour, then it is deleteduntil you delete it
Players10no fixed limit
Tick rateup to 20 a secondup to the network's maximum
Inputs per player10 a second, bursts of 3060 a second, bursts of 600
Largest input256 bytes8 KB
Largest snapshot64 KB2 MB
Traffic100 MB per room, 1 GB a month10 GB a month per account
Voicenoyes
How manyone at a time, 10 a day—

Keep inputs small, and send them only when something changes (a key going down, not a position every frame). A game played that way by a handful of people uses a few tens of megabytes in an hour.

Test rooms share a fixed amount of space on the network. When it is all in use, a new test room cannot open yet. You are told it is busy, and a minute later there is usually room. Rooms you already have keep working.

When it ends ​

A test room ends an hour after you asked for it, or sooner if it uses up its traffic. Everyone in it is disconnected and the room and everything in it is deleted. It cannot be reopened. Joining it again is refused with a message that it has ended. In the SDK, connect() rejects with a JoinRefused whose code is room-ended, and a Lockstep session ends with that reason instead of retrying.

Whatever the game does with the error, the SDK also prints what happened and what to do next in the browser console, for example:

text
[arrr-network] the network refused room "test_3f9c2a71b0d84e15" (410): This test room has ended:
test rooms last 60 minutes. Get a new test room with POST https://cloud.arrr.fun/api/test-tier/rooms.
To keep going without limits like these, register free at https://cloud.arrr.fun, create an app and
an API key, and use them in place of appId, apiKey and roomId: a free app does not expire and
includes 10 GB of bandwidth a month.

A room nobody is in closes after about a minute. Rejoin it within its hour and it opens again, empty.

Instructions for coding agents ​

  • Get one test room per project, by running the curl above yourself. Put appId, apiKey and roomId in the game's config. Never call /api/test-tier/rooms from the game: an address can only hold one test room at a time.

  • Connect to the roomId you were given. Any other room name is refused.

  • The key is not a secret. It ships in the browser like any app key.

  • Design for the limits: at most 10 players, inputs well under 256 bytes, at most 10 a second per player. Publish snapshots under 64 KB.

  • Refusals, and what to do:

    What you seeMeaningDo
    429 when asking for a roomthis address already has a live test room, has had 10 today, or its test rooms have used 1 GB this monthuse the one you have, or move to a free app
    503, "busy"every test room on the network is in use, or too many were asked for this hourwait a minute and try again
    410, or JoinRefused with code: 'room-ended'the hour is up, or the room used its trafficget a new test room
    JoinRefused with code: 'room-full'10 players are already inwait for someone to leave

    Every refusal from the network ends by saying how to move to a free app. When the user is ready, do that: it is the same three values.

  • When the user wants to keep the game, tell them to sign in at https://cloud.arrr.fun, create an app and a key (API Keys), and swap the three values. They can name their own rooms from then on.