Options
Options go at the top of a schema, before any declaration, as option Name = Value. Each may be set
once, or once per profile. The Options
page explains each one in full.
| Option | Value | Default | What it does |
|---|---|---|---|
Casing |
Pascal, Camel or Snake |
Pascal |
Casing of the generated methods: FireAll, fireAll or fire_all. |
ServerOutput |
path string | none; required by the CLI | Where the server module is written, relative to the schema. |
ClientOutput |
path string | none; required by the CLI | Where the client module is written. |
TypesOutput |
path string | none | Where a shared module with the schema’s types and exported Read/Write pairs is written. Not written when unset. |
Typescript |
boolean | false |
Also write a .d.ts beside the server and client modules. CLI only. |
UsePolling |
boolean | false |
Give every event the polling API (Iter), as if each were Call: Polling. |
FutureLibrary |
Luau path string | none | What require loads for Yield: Future. Required by any such function. |
PromiseLibrary |
Luau path string | none | What require loads for Yield: Promise. Required by any such function. |
SyncValidation |
boolean | true |
Warn when a Sync listener yielded, and discard the rest of the packet it held up. |
WriteValidations |
boolean | false |
Check types, ranges and Instance classes on send. Length bounds are checked on send regardless. |
ManualReplication |
boolean | false |
Do not flush reliable traffic on Heartbeat; call StepReplication yourself. |
RemoteScope |
string | none | Prefix for the remotes’ names: "PKG" gives PKG_BLINK_RELIABLE_REMOTE. |
MaxPacketSize |
whole number | 8192 |
Largest inbound packet the server reads, in bytes. |
MaxEventsPerPacket |
whole number | 64 |
Events the server decodes from one packet before dropping the rest. |
MaxInstancesPerPacket |
whole number | 256 |
Instance and unknown values one inbound packet may carry. |
InboundBytesPerSecond |
whole number | 8 * MaxPacketSize (65536) |
Bytes a second each player’s packets may cost the server; a packet costs at least 128. |
InboundBurst |
whole number, at least MaxPacketSize |
the larger of InboundBytesPerSecond and MaxPacketSize (65536) |
The most inbound budget a player may bank. |
MaxUnreliableSize |
whole number | 900 |
Largest unreliable payload, checked at compile time and on send. |
DefaultRate |
whole number | none | Events per second per player for every inbound event and function without its own Rate. |
RequireRates |
boolean | false |
Make an inbound event or function with no effective rate a compile error (E3020). |
Predict |
boolean | false |
Add Predict to every event this side listens to (not polled ones): it delivers to local listeners without a remote. |
InvocationTimeout |
whole number | 10 |
Seconds before an unanswered Invoke fails. |
UseColon |
boolean | none | Deprecated and ignored; warns W3017. Delete it. |
Value syntax
Section titled “Value syntax”| Value | Written as | Example |
|---|---|---|
| boolean | true or false |
option Predict = true |
| path string | a quoted path, relative to the schema’s folder unless absolute | option ServerOutput = "../src/Network/Server.luau" |
| Luau path string | a quoted Luau expression, inserted into require(...) |
option PromiseLibrary = "ReplicatedStorage.Packages.Promise" |
| whole number | a positive integer | option MaxPacketSize = 16384 |
| casing | a bare word | option Casing = Camel |
A number that is zero, negative or fractional is refused (E2003), as is an unknown option name or
casing. An option after the first declaration is E3016; one set twice for the same build is E3024.
What the options do not change
Section titled “What the options do not change”None of these options changes the bytes on the wire, so none of them is part of the
schema signature. A server and a client built from the
same declarations with different options still talk to each other. RemoteScope is the exception in
practice: it changes the remotes’ names, so a client with a different scope never finds the server’s
remotes at all.
