Rally games run on Rally’s game servers and on players’ devices, so a few things have fixed
limits. This page lists all of them. Numeric properties also have ranges, listed on their
API reference pages: values outside a range are clamped to it.
Checked while you edit in Rally Studio, and again when you test or publish.
| Limit |
Value |
When a game goes over it |
| A game’s project: its world plus every script’s source, as JSON |
8 MB |
Rally Studio can’t save it and shows “Couldn’t save” with the game’s size. Play, Test and publishing fail too. |
| Objects in the game |
50,000 |
Studio refuses the change (“the game has too many objects”). |
| Script source, all scripts together |
2 MB (counted in characters) |
Studio refuses the change (“scripts would be larger than 2 MB in total”). |
| One script’s source |
200,000 characters |
Studio refuses the change. |
| Scripts and LocalScripts that run (in a published or tested game) |
200 |
Play, Test and publishing fail. |
| Scripts, LocalScripts and ModuleScripts in a project |
400 |
Studio can’t save the game. |
| Objects inserted at once (a paste, a model from the Toolbox) |
5,000 |
Studio refuses the insert. |
Meshes, images and sounds aren’t part of a game’s size: parts and sounds refer to them by URL
(meshUrl, image, soundUrl), and each player’s device downloads them.
| Limit |
Value |
Notes |
| Players per server |
1 to 100, set in the game’s settings (default 20) |
When every server of a game is full, Rally starts another one for the next player. |
| Test players in Studio’s Test |
1 to 4 |
A test server’s saved data starts empty and is thrown away. |
| An empty server keeps running |
60 seconds after the last player leaves (120 seconds before the first player joins) |
Then it stops taking new players and shuts down. The next player starts a new server. |
| Longest a server runs |
24 hours |
The server stops and its players are disconnected. |
| Saving when a server stops |
2 seconds |
playerRemoving handlers, and the data store requests they start, get this long to finish. |
These apply on Rally’s game servers: published games and Studio’s Test. Studio’s Play runs the
whole game in your browser, where they don’t apply, so test on a server before you publish.
| Limit |
Value |
When a game goes over it |
| Loading the world when a server starts |
5 seconds |
The server doesn’t start, and players can’t join. |
| Running every script’s top-level code at startup |
5 seconds in total |
The game doesn’t start (“a script ran too long”). |
| One step of the game: the scripts’ handlers, tasks and physics it runs |
1 second |
The server stops. Players are disconnected with “The game server stopped: a script ran too long.” |
| CPU use, averaged over 5 seconds |
90% of one CPU core |
The server stops with the same message. |
| Memory |
256 MB |
The server stops. Players are disconnected with “The game server stopped: it ran out of memory.” |
A RemoteFunction handler |
5 seconds of game time |
The player’s call fails with “the server took too long”. |
A script that throws an error doesn’t stop the game: the error goes to the game’s output and the
game keeps running. Only the limits above end a game.
On players’ devices, if the game stops responding for 5 seconds (30 seconds while it loads), for
example because a LocalScript is stuck in a loop, Rally shows “This game isn’t responding” and
offers to leave it.
| Limit |
Value |
Notes |
| Server steps |
30 a second |
One step covers at most 0.25 seconds: a server that falls behind slows game time down instead of skipping ahead. |
| Physics |
60 steps a second, on the server |
|
| Replication to players |
20 times a second |
|
| Character movement from each player |
20 updates a second |
|
The server accepts a character’s move when it’s within 1.5 × walkSpeed × the time since the
last accepted move, plus 2 studs, horizontally, and rises no more than 1.5 × jumpPower × that
time, plus 2 studs. Falling is never limited. Other moves snap the character back. Moves to a
position more than 1,000,000 studs from the origin on any axis are ignored.
| Limit |
Value |
When a game goes over it |
Remote calls per player (fireServer and invokeServer together) |
60 a second |
Extra calls are dropped, and a warning goes to the game’s output. invokeServer fails with “rate limited”. |
| Messages per player, of any kind |
150 a second, with bursts of up to 300 |
Extra messages are dropped. |
| Largest message from a player |
64 KB |
The player is disconnected. |
| Remote arguments |
Nested at most 12 levels deep, 5,000 values in total |
The call throws a RangeError (“remote arguments are too large”) on the side that sends it. |
| Strings in remote arguments |
50,000 characters |
Longer strings are cut. |
Waiting for an invokeServer answer |
10 seconds |
The call fails (“invokeServer timed out”). |
| Updates waiting to reach a player who can’t keep up |
8 MB |
The player is disconnected. |
| Limit |
Value |
When a game goes over it |
| Data store names |
1 to 50 characters |
getDataStore and getOrderedDataStore throw a RangeError. |
| Keys |
1 to 50 characters |
The call rejects with a RangeError. |
| Values |
JSON, up to 64 KB (65,536 bytes as UTF-8) |
The call rejects (“values are limited to 64 KB”). |
Rows from getSorted |
1 to 100 (default 10) |
Other limits are clamped into the range. |
update attempts when other servers write the same key |
5 |
The call rejects (“kept conflicting; try again”). |
| Requests per game, all of its servers together |
6,000 a minute |
Requests reject (“Too many data requests”). |
| Requests per server at once |
16 running, 512 more waiting |
More requests reject (“too many data store requests at once”). |
| One request |
10 seconds |
The request rejects. |
| Limit |
Value |
Notes |
| Lines a server writes |
200 a second, and at most 500 in one step |
Extra lines are dropped, and a line says how many. |
| A line from a server script |
4,000 characters in the developer console |
Longer lines are cut. |
| Server output shown to the game’s owner on joining |
The last 200 lines |
|
| Lines the in-game developer console keeps |
500 |
Older lines are removed. |
| Limit |
Value |
| Game name |
1 to 60 characters |
| Game description |
Up to 1,000 characters |
| Object names in Rally Studio |
1 to 100 characters, without / |
| Attribute names |
1 to 100 characters: letters, digits and _, not starting with a digit |
| A player’s display name in a game |
Up to 32 characters |
kick messages and errors sent back by invokeServer |
500 characters (longer ones are cut) |
| Limit |
Value |
When a game goes over it |
| Animation tracks |
200 per animation |
Assigning tracks throws a TypeError. |
| Animation keys |
2,000 per animation, all tracks together |
Assigning tracks throws a TypeError. |
| Animation length |
Up to 3,600 seconds |
Clamped. |
| Terrain resolution |
2 to 256 samples per side |
Clamped. |
Terrain samples in heights or materials |
65,536 (256 × 256) |
Assigning throws a TypeError. |
Rate limits are per account. When you go over one, Studio says “Slow down” and how long to wait.
| Limit |
Value |
| Creating games |
20 an hour |
| Publishing |
30 an hour |
| Play and Check (compiling a game) |
60 a minute |
| Starting a test server (Test) |
20 every 10 minutes |
| Joining games |
30 a minute |
| Collaborators per game |
20 |
| Adding collaborators |
30 an hour |
| Active developer tokens |
20 per account |
| Creating developer tokens |
10 an hour |
| Requests from a connected AI app |
240 a minute |
| Limit |
Value |
| A model’s size, as JSON |
2 MB |
| Objects in a model |
5,000 |
| Scripts in a model |
100, with up to 200,000 characters of code in total |
| Nesting depth in a model |
64 levels |
| Item name |
1 to 80 characters |
| Item description |
Up to 1,000 characters |
| Tags |
Up to 10 per item, each up to 24 characters |
| Items per account |
500 |
| Publishing items |
20 an hour |
| Updating items |
60 an hour |
Web games bring their own client and server, so most limits above don’t apply
to them. Theirs are checked when you run rally publish, and a version over one isn’t published.
| Limit |
Value |
| Files in the client |
5,000 |
| One client file |
64 MB |
| All client files together |
200 MB |
| The server folder, packed and compressed |
150 MB |
| Players per server |
1 to 1,000 (20 by default) |
| An empty server keeps taking players |
60 seconds after its last WebSocket connection closes, then it shuts down about a minute later |
| Longest a server runs |
24 hours |
| Saved data |
The same limits as saved data above: 50-character store names and keys, 64 KB values, 6,000 requests a minute per game |
| Creating web games with a developer token |
20 an hour |
| Publishing web game versions with a developer token |
30 an hour |
See Web games › Limits for the rest.