Skip to main content

Ticketing System

Ticketing is the term Redwood uses for how players queue into getting into a server. The Ticketing System can be configured with several options:

  • Matchmaking
    • Simple Match - A dead-simple emulator for Open Match used in development without Kubernetes; shares some config with Open Match
    • Open Match - An open-source, flexible, and scalable matchmaker
  • Queuing - This is used in for lobby-based systems where players already know what server they want to join, but it may be full (i.e. MMORPGs). This provider implements a FIFO (First-In-First-Out) queue system.
warning

The Idem matchmaking provider is no longer supported as they sunset their service.

How to specify which provider is used?

It's possible for you to run one of the matchmaking providers along with queuing. ticketing.queue.enabled and ticketing.matchmaking.enabled (both true by default) decide whether or not either run. An example of needing both is an open world MMORPG that has instanced dungeons; the overworld would use the queue provider while the instanced dungeons would use matchmaking.

You can configure which of the matchmaking providers using the config variable ticketing.matchmaking.provider. This takes a string enum, which can be simple-match or open-match. You can see the default defined as simple-match in RedwoodBackend/config/node/default/ticketing/_index.yaml.

Our kubernetes inheritable config environment overrides this variable for you to open-match in RedwoodBackend/config/node/kubernetes/realm/instances/default.yaml.

You can override this variable yourself in your own config environment.

Which should I use in production?

If you need to match players by region, skill, class, type of game mode, etc. use Open Match. If the player is only going to see a list of realms to join that may reach capacity, and you want to have a wait list, use Queue.

You may also need to implement your own ticketing provider for your specific game; if you have Dedicated Support, reach out and we'll help discuss your options!

Common Configuration

The only common config variable for all ticketing providers is how often the ticketing function processes. You can override the ticketing.process-interval flag which specifies the number of milliseconds to wait until processing ticketing again. It defaults to 5 seconds.