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.


matchmaker.docker.ports.<port>.port_range

object

Range of ports that can be connected to. Note that the port range values returned by /find

  • 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.

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.


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

  • 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.

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>

Was this page helpful?

Edit Page

On this page


Rivet

Open-source multiplayer infrastructure. Easy, flexible, and affordable.

This website is not sponsored by or affiliated with Unity Technologies or its affiliates. Unity Trademark(s) are trademark(s) or registered trademark(s) of Unity Technologies or its affiliates in the U.S. and elsewhere. | This website is not sponsored by, affiliated with, or endorsed by Epic Games, Inc. or its affiliates. 'Unreal Engine' is a trademark or registered trademark of Epic Games, Inc. in the U.S. and elsewhere. | The HTML5 Logo by the World Wide Web Consortium (W3C), used under a Creative Commons Attribution 3.0 License. Source | The Godot Engine Logo by the Andrea Calabró, used under a Creative Commons Attribution 4.0 International License. Source | Docker and the Docker logo are trademarks or registered trademarks of Docker, Inc. in the United States and/or other countries. Docker, Inc. and other parties may also have trademark rights in other terms used herein.

© 2024 Rivet Gaming, Inc. All rights reserved.