Managed Amazon GameLift solution architecture
The diagrams in this topic outline how a complete hosting solution with Amazon GameLift is structured.
Game components with hosting
The following diagram illustrates how the key components of a managed Amazon GameLift hosting solution work together to run dedicated game servers and help players find and connect to hosted game sessions. The hosting solution you develop for your game will include most or all of these components.
The key components of this architecture include the following:
- Game clients
-
A game client is your software that is running on a player's device. The player plays your game by joining a game session on a hosted game server. A game client asks to join a game session through a backend service, receives connection information for a game session, and uses it to connect directly with the game session. For more information, see Preparing games for Amazon GameLift. When connecting to a Realtime server, a A game client uses the Realtime Client SDK.
- Backend services
-
A backend service is a custom service that you create to handle communication with the Amazon GameLift service on behalf of a game client. You can also use backend services for game-specific tasks such as player authentication and authorization, inventory, or currency control. A backend service communicates with the Amazon GameLift service using the API operations in the AWS SDK.
A backend service makes requests to get existing game session information and to start game sessions. Requests for new game sessions define certain characteristics, such as the maximum number of players. These requests prompt Amazon GameLift to start the game session placement process. When a game session is ready to accept players, the backend service retrieves connection information and provides it to the game client.
- External services
-
Your game can rely on external services, such as for validating a subscription membership. An external service can pass information to your game servers through a backend service and Amazon GameLift.
- Game servers
-
A game server is your game's server software that runs on a set of hosting resources. You upload your game server software to Amazon GameLift, which deploys it to the hosting resources and starts running server processes. Each game server process connects with the Amazon GameLift service to signal readiness to host game sessions. It interacts with the service to start game sessions, validate newly connected players, and report the status of game sessions and player connections.
Custom game servers communicate with Amazon GameLift by using the Amazon GameLift Server SDK. For more information, see Integrate games with custom game servers. Realtime servers are game servers that are provided by Amazon GameLift. You can customize server logic by providing a custom script. For more information, see Integrating games with Amazon GameLift Realtime Servers.
- Host management tools
-
When setting up and managing hosting resources, game owners use hosting management tools to manage game server builds or scripts, fleets, matchmaking, and queues. The Amazon GameLift tool set in the AWS SDK and the console provides multiple ways for you to manage your hosting resources. You can remotely access any individual game server for troubleshooting.
Hosting solution resources
The following diagram illustrates Amazon GameLift resources that make up a managed hosting solution. Provide a custom server build or an Realtime Servers script, deploy a fleet of computes to host game servers, and then set up a game session queue to find available hosting resources and start new game sessions. For games that use FlexMatch matchmaking, add a matchmaking configuration and a matchmaking rule set to generate player matches.
- Game server code
-
-
Build – Your custom-built game server software that runs on Amazon GameLift and hosts game sessions for your players. A game build represents the set of files that run your game server on a particular operating system, and that you must integrate with Amazon GameLift. Upload game build files to Amazon GameLift in the AWS Regions where you plan to set up fleets. For more information, see Deploy a custom server build for Amazon GameLift hosting.
-
Script – Your configuration and custom game logic for use with Realtime Servers. Configure Realtime Servers for your game clients by creating a script using JavaScript, and add custom game logic to host game sessions for your players. For more information, see Deploy a script for Realtime Servers.
-
- Fleet
-
A collection of compute resources that run your game servers and host game sessions for your players. For information about where you can deploy fleets, see Amazon GameLift service locations. For information about creating fleets, see Setting up a hosting fleet with Amazon GameLift.
- Alias
-
An abstract identifier for a fleet that you can use to change the fleet that your players are connected to at any time. For more information, see Create an Amazon GameLift alias.
- Game session queue
-
A game session placement mechanism that receives requests for new game sessions and searches for available game servers to host the new sessions. For more information about game session queues, see Managing game session placement with Amazon GameLift queues.