Multiplayer API (BETA)
Setup: config.json
{
"rooms": {
"gameType": "your-game-type",
"minPlayers": 2,
"maxPlayers": 4
}
}Full config reference
{
"rooms": {
"gameType": "chess",
"rulesPreset": "blitz_v1",
"minPlayers": 2,
"maxPlayers": 2,
"playerRoles": ["white", "black"],
"playerInitialization": "random",
"matchmaking": {
"defaultCriteria": {
"hasSpace": true,
"isPrivate": false
}
},
"createOptions": {
"maxPlayers": 2,
"isPrivate": false,
"customMetadata": {
"timeControl": "blitz"
}
},
"privateMatchDefaults": {
"allowCustomCode": true,
"createOptions": {
"isPrivate": true,
"maxPlayers": 4
}
},
"defaultRules": {
"turnBased": true,
"allowedMessageTypes": {
"playing": {
"piece_move": { "requiredFields": ["from", "to"] },
"resign": { "requiredFields": ["resignedBy"] }
}
}
},
"notifications": {
"onTurnStart": {
"title": "Your turn!",
"body": "It's your move in {{roomName}}"
},
"onGameEnd": {
"title": "Game over",
"body": "{{winnerName}} won in {{roomName}}"
}
}
}
}Config fields
Field
Type
Default
Description
defaultRules fields
defaultRules fieldsField
Type
Default
Description
Notification template variables
Quick Start
Game Lifecycle
Auto-start
Manual start
Ending a game
Creating & Joining Rooms
Real-Time Subscriptions
Room Data & Messaging
Authoritative state
Game Moves
Proposing a move
Server-side validation
Optimistic state
Peer validation (optional)
Turn-Based Games
Room Management
Kicking a player
Leaving a room
Push Notifications
Configuration
Template Variables
Variable
Description
Variable
Description
Behavior
Room Properties
Property
Type
Description
Environment Separation
Best Practices
Last updated