WARNING: The version v9.x of Maestro is under deprecation, complete guide of the new version v10.x can be found here.
Dedicated game server management service, designed to manage multiple game servers fleets in isolated schedulers.
A Game Room is a dedicated game server that runs in a match execution context, a group of game rooms (fleet) are organized in a Scheduler.
Maestro manage multiple game rooms fleets with user-created custom specifications (schedulers).
Maestro orchestrate game rooms fleets according to user specifications (schedulers), in which it can maintain a fixed number of game rooms up and running, or can use autoscaling policies for costs optimization.
Ideally, Maestro should be used by games that implement dedicated game server (dgs) architecture.
This module is not required for prototyping, but it is recommended to include it in the alpha phase so future development and deployment of new game room versions can be better managed.
Maestro does not have any dependencies, but it provides an events forwarding feature that can be used to integrate with external matchmaking services.
Currently, the only runtime that Maestro supports is Kubernetes.
With a scheduler, the user can define how a game room can be built and deployed on the runtime. Each scheduler manages a fleet of game rooms in isolated namespaces.
Usually a scheduler will define which docker image will be used, its commands, resources that need to be allocated (cpu and memory), and other parameters for fleet management.
Every action that Maestro does on runtime to manage its resources is encapsulated in what we call an Operation. An Operation can be triggered by the user or by Maestro itself. Maestro uses a queue to control operations flow and disposes of a worker that keeps processing operations.
Maestro provides two APIs for external and internal communication:
management-api
: used by users to manage schedulers and operations.rooms-api
: used by game rooms to report its status back to Maestro.
Documentation can be found in the docs folder. This module is supported by the Wildlife's multiplayer team.
Position | Name |
---|---|
Owner Team | Multiplayer Team |
Documentation Owner | Guilherme Carvalho |