topfreegames / maestro

Maestro: Game Room Scheduler
MIT License
115 stars 15 forks source link
game-room kubernetes scheduler

WARNING: The version v9.x of Maestro is under deprecation, complete guide of the new version v10.x can be found here.


Maestro

Build Status Codecov Status

Dedicated game server management service, designed to manage multiple game servers fleets in isolated schedulers.

What does the module do?

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

What problem is solved?

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.

Recommended Integration Phase: Alpha

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.

Dependencies

Maestro does not have any dependencies, but it provides an events forwarding feature that can be used to integrate with external matchmaking services.

How is the problem solved?

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:

Additional information

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