rivet.yaml Specification
Naming
Workflow files must be name rivet.yaml
, rivet.toml
, or rivet.json
. We recommend using YAML for your configuration since it is easiest to read/write and provides validation & suggestions through our schema.
Namespacing
Rivet configs can override properties by naming them rivet.{namespace}.yaml
. For example, you can configure your generic config in rivet.yaml
and override the properties for production in rivet.prod.yaml
.
cdn
object
CDN configuration for a given version.
cdn.build_command
string
Configures Rivet CLI behavior. Has no effect on server behavior.
cdn.build_env
map<string, string>
Configures Rivet CLI behavior. Has no effect on server behavior.
cdn.build_output
string
Configures Rivet CLI behavior. Has no effect on server behavior.
cdn.routes
array<object>
Multiple CDN version routes.
cdn.routes[*].glob
string
(required)
cdn.routes[*].middlewares
array<object>
(required)
Multiple CDN version middleware.
cdn.routes[*].middlewares[*].kind
object
(required)
cdn.routes[*].middlewares[*].kind.custom_headers
object
cdn.routes[*].middlewares[*].kind.custom_headers.headers
array<object>
(required)
cdn.routes[*].middlewares[*].kind.custom_headers.headers[*].name
string
(required)
cdn.routes[*].middlewares[*].kind.custom_headers.headers[*].value
string
(required)
cdn.routes[*].priority
integer
(required)
Unsigned 32 bit integer.
cdn.site_id
string
engine
object
engine.custom
object
engine.godot
object
engine.html5
object
engine.unity
object
engine.unreal
object
engine.unreal.game_module
string
(required)
Name of the Unreal module that holds the game code.
This is usually the value of $.Modules[0].Name
in the file MyProject.unproject
.
Configures Rivet CLI behavior. Has no effect on server behavior.
kv
object
KV configuration for a given version.
matchmaker
object
Matchmaker configuration for a given version.
matchmaker.captcha
object
Matchmaker captcha configuration.
matchmaker.captcha.hcaptcha
object
hCpatcha configuration.
matchmaker.captcha.hcaptcha.secret_key
string
Secret key for your hCaptcha application. Must be set.
matchmaker.captcha.hcaptcha.site_key
string
Site key for your hCaptcha application. Must be set.
matchmaker.captcha.requests_before_reverify
integer
(required)
Denotes how many requests a connection can make before it is required to reverify a captcha.
matchmaker.captcha.turnstile
object
Turnstile captcha configuration.
matchmaker.captcha.turnstile.secret_key
string
(required)
matchmaker.captcha.turnstile.site_key
string
(required)
matchmaker.captcha.verification_ttl
integer
(required)
Denotes how long a connection can continue to reconnect without having to reverify a captcha (in milliseconds).
matchmaker.dev_hostname
string
Configures Rivet CLI behavior. Has no effect on server behavior.
matchmaker.docker
object
A game mode runtime running through Docker.
matchmaker.docker.args
array<string>
matchmaker.docker.build_args
map<string, string>
Configures Rivet CLI behavior. Has no effect on server behavior.
matchmaker.docker.dockerfile
string
Configures Rivet CLI behavior. Has no effect on server behavior.
matchmaker.docker.env
map<string, string>
matchmaker.docker.image
string
Configures Rivet CLI behavior. Has no effect on server behavior.
matchmaker.docker.image_id
string
matchmaker.docker.network_mode
string
Configures how the container's network is isolated from the host.
bridge
(default) networking isolates the container's network from the host & other containers.
host
networking removes isolation between the container and the host. Only available in Rivet Open Source & Enterprise.
Read more about bridge vs host networking here.
matchmaker.docker.ports
map<string, object>
matchmaker.docker.ports.<port>.dev_port
integer
Configures Rivet CLI behavior. Has no effect on server behavior.
matchmaker.docker.ports.<port>.dev_port_range
object
Configures Rivet CLI behavior. Has no effect on server behavior.
matchmaker.docker.ports.<port>.dev_port_range.max
integer
(required)
Unsigned 32 bit integer.
matchmaker.docker.ports.<port>.dev_port_range.min
integer
(required)
Unsigned 32 bit integer.
matchmaker.docker.ports.<port>.dev_protocol
string
Configures Rivet CLI behavior. Has no effect on server behavior.
matchmaker.docker.ports.<port>.port
integer
The port number to connect to.
Related - cloud.version.matchmaker.PortProtocol - cloud.version.matchmaker.ProxyKind
matchmaker.docker.ports.<port>.port_range
object
Range of ports that can be connected to. Note that the port range values returned by /find
Related
- cloud.version.matchmaker.PortProtocol
- cloud.version.matchmaker.ProxyKind
matchmaker.docker.ports.<port>.port_range.max
integer
(required)
Unsigned 32 bit integer.
matchmaker.docker.ports.<port>.port_range.min
integer
(required)
Unsigned 32 bit integer.
matchmaker.docker.ports.<port>.protocol
string
Signifies the protocol of the port.
Note that when proxying through GameGuard (via ProxyKind
), the port number returned by /find
, /join
, and /create
will not be the same as the port number configured in the config:
- With HTTP, the port will always be 80. The hostname of the port correctly routes the incoming connection to the correct port being used by the game server.
- With HTTPS, the port will always be 443. The hostname of the port correctly routes the incoming connection to the correct port being used by the game server.
- Using TCP/UDP, the port will be a random number between 26000 and 31999. This gets automatically routed to the correct port being used by the game server.
Related - cloud.version.matchmaker.GameModeRuntimeDockerPort - cloud.version.matchmaker.ProxyKind - /docs/dynamic-servers/concepts/game-guard - matchmaker.lobbies.find
matchmaker.docker.ports.<port>.proxy
string
How this port should be proxied. Defaults to 'game-guard`.
matchmaker.game_modes
map<string, object>
A list of game modes.
matchmaker.game_modes.<game_mode>.actions
object
Configuration for the connection types allowed for a game mode.
matchmaker.game_modes.<game_mode>.actions.create
object
Configures the requirements and authentication for the /create endpoint. If this value is not set in the config, the /create endpoint is NOT enabled.
matchmaker.game_modes.<game_mode>.actions.create.enable_private
boolean
Defaults to true when unset.
matchmaker.game_modes.<game_mode>.actions.create.enable_public
boolean
Defaults to false when unset.
matchmaker.game_modes.<game_mode>.actions.create.enabled
boolean
(required)
Sets whether or not the /create endpoint is enabled.
matchmaker.game_modes.<game_mode>.actions.create.verification
object
Configuration that tells Rivet where to send validation requests and with what headers. When set, Rivet will send the verification_data
property (given by the user in the find/join/create endpoint) to the given url along with the headers provided and some information about the requested lobby. The response of this request will determine if the user can join that lobby or not.
matchmaker.game_modes.<game_mode>.actions.create.verification.headers
map<string, string>
(required)
matchmaker.game_modes.<game_mode>.actions.create.verification.url
string
(required)
matchmaker.game_modes.<game_mode>.actions.find
object
Configures the requirements and authentication for the /find endpoint. If this value is not set in the config, the /find endpoint is still enabled.
matchmaker.game_modes.<game_mode>.actions.find.enabled
boolean
(required)
Sets whether or not the /find endpoint is enabled.
matchmaker.game_modes.<game_mode>.actions.find.verification
object
Configuration that tells Rivet where to send validation requests and with what headers. When set, Rivet will send the verification_data
property (given by the user in the find/join/create endpoint) to the given url along with the headers provided and some information about the requested lobby. The response of this request will determine if the user can join that lobby or not.
matchmaker.game_modes.<game_mode>.actions.find.verification.headers
map<string, string>
(required)
matchmaker.game_modes.<game_mode>.actions.find.verification.url
string
(required)
matchmaker.game_modes.<game_mode>.actions.join
object
Configures the requirements and authentication for the /join endpoint. If this value is not set in the config, the /join endpoint is still enabled.
matchmaker.game_modes.<game_mode>.actions.join.enabled
boolean
(required)
Sets whether or not the /join endpoint is enabled.
matchmaker.game_modes.<game_mode>.actions.join.verification
object
Configuration that tells Rivet where to send validation requests and with what headers. When set, Rivet will send the verification_data
property (given by the user in the find/join/create endpoint) to the given url along with the headers provided and some information about the requested lobby. The response of this request will determine if the user can join that lobby or not.
matchmaker.game_modes.<game_mode>.actions.join.verification.headers
map<string, string>
(required)
matchmaker.game_modes.<game_mode>.actions.join.verification.url
string
(required)
matchmaker.game_modes.<game_mode>.allow_dynamic_max_players
boolean
matchmaker.game_modes.<game_mode>.docker
object
A game mode runtime running through Docker.
matchmaker.game_modes.<game_mode>.docker.args
array<string>
matchmaker.game_modes.<game_mode>.docker.build_args
map<string, string>
Configures Rivet CLI behavior. Has no effect on server behavior.
matchmaker.game_modes.<game_mode>.docker.dockerfile
string
Configures Rivet CLI behavior. Has no effect on server behavior.
matchmaker.game_modes.<game_mode>.docker.env
map<string, string>
matchmaker.game_modes.<game_mode>.docker.image
string
Configures Rivet CLI behavior. Has no effect on server behavior.
matchmaker.game_modes.<game_mode>.docker.image_id
string
matchmaker.game_modes.<game_mode>.docker.network_mode
string
Configures how the container's network is isolated from the host.
bridge
(default) networking isolates the container's network from the host & other containers.
host
networking removes isolation between the container and the host. Only available in Rivet Open Source & Enterprise.
Read more about bridge vs host networking here.
matchmaker.game_modes.<game_mode>.docker.ports
map<string, object>
matchmaker.game_modes.<game_mode>.docker.ports.<port>.dev_port
integer
Configures Rivet CLI behavior. Has no effect on server behavior.
matchmaker.game_modes.<game_mode>.docker.ports.<port>.dev_port_range
object
Configures Rivet CLI behavior. Has no effect on server behavior.
matchmaker.game_modes.<game_mode>.docker.ports.<port>.dev_port_range.max
integer
(required)
Unsigned 32 bit integer.
matchmaker.game_modes.<game_mode>.docker.ports.<port>.dev_port_range.min
integer
(required)
Unsigned 32 bit integer.
matchmaker.game_modes.<game_mode>.docker.ports.<port>.dev_protocol
string
Configures Rivet CLI behavior. Has no effect on server behavior.
matchmaker.game_modes.<game_mode>.docker.ports.<port>.port
integer
The port number to connect to.
Related - cloud.version.matchmaker.PortProtocol - cloud.version.matchmaker.ProxyKind
matchmaker.game_modes.<game_mode>.docker.ports.<port>.port_range
object
Range of ports that can be connected to. Note that the port range values returned by /find
Related
- cloud.version.matchmaker.PortProtocol
- cloud.version.matchmaker.ProxyKind
matchmaker.game_modes.<game_mode>.docker.ports.<port>.port_range.max
integer
(required)
Unsigned 32 bit integer.
matchmaker.game_modes.<game_mode>.docker.ports.<port>.port_range.min
integer
(required)
Unsigned 32 bit integer.
matchmaker.game_modes.<game_mode>.docker.ports.<port>.protocol
string
Signifies the protocol of the port.
Note that when proxying through GameGuard (via ProxyKind
), the port number returned by /find
, /join
, and /create
will not be the same as the port number configured in the config:
- With HTTP, the port will always be 80. The hostname of the port correctly routes the incoming connection to the correct port being used by the game server.
- With HTTPS, the port will always be 443. The hostname of the port correctly routes the incoming connection to the correct port being used by the game server.
- Using TCP/UDP, the port will be a random number between 26000 and 31999. This gets automatically routed to the correct port being used by the game server.
Related - cloud.version.matchmaker.GameModeRuntimeDockerPort - cloud.version.matchmaker.ProxyKind - /docs/dynamic-servers/concepts/game-guard - matchmaker.lobbies.find
matchmaker.game_modes.<game_mode>.docker.ports.<port>.proxy
string
How this port should be proxied. Defaults to 'game-guard`.
matchmaker.game_modes.<game_mode>.idle_lobbies
object
Configuration for how many idle lobbies a game version should have.
matchmaker.game_modes.<game_mode>.idle_lobbies.max
integer
(required)
matchmaker.game_modes.<game_mode>.idle_lobbies.min
integer
(required)
matchmaker.game_modes.<game_mode>.listable
boolean
matchmaker.game_modes.<game_mode>.max_players
integer
matchmaker.game_modes.<game_mode>.max_players_direct
integer
matchmaker.game_modes.<game_mode>.max_players_party
integer
matchmaker.game_modes.<game_mode>.regions
map<string, object>
matchmaker.game_modes.<game_mode>.regions.<region>.idle_lobbies
object
Configuration for how many idle lobbies a game version should have.
matchmaker.game_modes.<game_mode>.regions.<region>.idle_lobbies.max
integer
(required)
matchmaker.game_modes.<game_mode>.regions.<region>.idle_lobbies.min
integer
(required)
matchmaker.game_modes.<game_mode>.regions.<region>.tier
string
matchmaker.game_modes.<game_mode>.taggable
boolean
matchmaker.game_modes.<game_mode>.tier
string
matchmaker.idle_lobbies
object
Configuration for how many idle lobbies a game version should have.
matchmaker.idle_lobbies.max
integer
(required)
matchmaker.idle_lobbies.min
integer
(required)
matchmaker.max_players
integer
matchmaker.max_players_direct
integer
matchmaker.max_players_party
integer
matchmaker.regions
map<string, object>
matchmaker.regions.<region>.idle_lobbies
object
Configuration for how many idle lobbies a game version should have.
matchmaker.regions.<region>.idle_lobbies.max
integer
(required)
matchmaker.regions.<region>.idle_lobbies.min
integer
(required)
matchmaker.regions.<region>.tier
string
matchmaker.tier
string
scripts
map<string, string>