Dedicated Game Server Orchestration 101
✍ Last Updated : September 15, 2022
🚪 Prequisite Knowledge (Optional)
- [Multiplayer](Multiplayer d1696212dbf84eb195595d64a62cef83.md)
- [Automated Deployment (Kubernetes)](Automated Deployment (Kubernetes)%20e12cc90f456843c3ad3db174ebc83066.md)
❓ Key Question / Problem / Issue
- How to deploy headless build into the cloud ?
- how to managed multiple headless build session ?
- how to start headless build in cloud server on user demand ?
✅ Expected Output/Definition of Done
- Basic Guideline explaining Information on Multiplayer Dedicated Game Server Orchestration and Mechanism
🎁 Resulting Solution
Flowchart Maker & Online Diagram Software
Conceptual Diagrams
Dedicated Game Server Core Components
In Order to setup Dedicated Game Server Orchestration Service we would need 3 Core component to begin with :
- Headless Game Application Image
- Allocation API
- platform (service / infrastructure), for deploying, hosting, scaling, and orchestrating dedicated game servers for large scale multiplayer games (Agones) later called (DGS Service)
Headless Game Application
- Headless Game Session is a game application that launched in headless mode with the purpose of game rule, logic, loop, physics, simulation in realtime and synchronized with player game client.
- In Photon Fusion - Unity use case this headless game application is the same unity project that developed as game client.
- the difference between fusion client, and fusion headless game is they have different application loop.
- fusion client application loop involve player input to operate
- fusion headless application loop doesn’t involve player input. but direct API / RPC, and multiplayer protocol to communicate with client (handled by fusion), and game server allocation service (agones)
- additionally fusion headless game build platform target will be targeted toward easily virtualized / containerized image, for easy deployment and execution in either local / cloud environment.
-
- the difference between fusion client, and fusion headless game is they have different application loop.
- Headless Game Application will need to communicate with dedicated game allocation service to inform their state, in order for DGS service properly allocate, orchestrate, load balance, etc2
DGS (Dedicated Game Server Headless Instance Management) Service
- DGS Service is an service / abstraction of multiple service that handles multiple dedicated game server orchestration, management, deployment, scaling, etc2
- Example of DGS Service :
- Self Deployed / Managed
- Agones
- Third-Party Subscription Service
- Playfab Multiplayer
- Amazon Game Lift
- Epic Online Service - Session Interfaces
- Edge Gap
- Self Deployed / Managed
- It is self sufficient and independent of any other service
- to utilize and start using it you will need :
- Headless Game App Image / executable with DGS SDK implemented, and it’s deployment configuration
- service / application that access it’s API to request, and matchmake a sessions
Session Director / Matchmaking API
- Serve as communication layer that limits user to freely access agones API
- will have custom / generic rule to calculate / group multiple player together
- will use agones api to get and allocate a server to be used by multiple player to connect in a single game session.
- will communicate with game client app to inform about allocated game server for the client to connect
Example Self Managed Matchmaking Service
Simplified App Relations
Common Dedicated Game Server Life Cycle
Buffer Session Orchestration (Preparing Warm Live Session)
Requesting Warm Live Session to use with game Session
-
Sequence Diagram Script
title Requesting Session participant Game Client participant MM / Director API participant "Dedicated Game Server Service\n(Agones)" as DGS Service (Agones) participant Headless activate Headless note over Headless: Ready activate Game Client space note over Game Client:requesting / waiting game session data space Game Client->MM / Director API:request a game session activate MM / Director API space note over MM / Director API:Calculating / applying Matchmaking Rule MM / Director API->DGS Service (Agones):requesting existing / correlated session data MM / Director API<-DGS Service (Agones):Corresponding session data response Game Client<-MM / Director API:If No Corresponding Session Found note left of Game Client:stop if matchmaking failed space deactivate MM / Director API activate MM / Director API deactivate Headless space note over MM / Director API:Allocation Request with Session Information MM / Director API->DGS Service (Agones):Game Session Allocation Request DGS Service (Agones)->Headless:Inform Allocation State with Session Information\n\ne.g { Level : A, Game Rule : X, Assigned Player: [John, Bob, Jane]} activate Headless MM / Director API<-DGS Service (Agones):response allocation successful note over Headless: Allocated deactivate MM / Director API Game Client<-MM / Director API:response game session data to connect space deactivate Game Client space activate Game Client note over Game Client: Multiplayer Game Session Game Client->Headless:Connect to Corresponding Headless Session
Where to Go From Here ?
- [Agones](Agones a9782a164f514f0e8541ce619fc49a5a.md) Our Known Dedicated Server Management.
No Comments