Change management - Games Industry Lens

Change management

GAMEREL01 — How does your game infrastructure scale to changes in player demand?

As your player demand fluctuates over time, your game infrastructure should be able to adaptively scale to handle these changing requirements. While it is difficult to predict the popularity of a game ahead of time, you should design an architecture approach that allows you to easily add and remove infrastructure capacity to accommodate fluctuations in player population.

GAMEREL_BP01 - Implement a scaling strategy that incorporates the state of active player game sessions.

Implement a solution for automatically scaling your game infrastructure in a manner that incorporates the stateful nature of your actively connected player sessions and gracefully handles scaling activities without disrupting gameplay.

One of advantages of developing a game in the cloud is the elasticity that can be achieved by automatically scaling server infrastructure as needed to meet demand. While stateless or asynchronous games and backend services can be dynamically scaled using Amazon EC2 Auto Scaling policies or similar techniques typically adopted for scalable web applications, game developers typically require a more customized approach for scaling stateful or synchronous games to prevent disruptions to active player sessions.

For stateful games, it is a best practice for your game backend to generate custom metrics that can be used to monitor the state of your player sessions and available game server capacity, which can be reported to Amazon CloudWatch as custom metrics. Using this data, you can implement game server scaling software, for example, as a serverless application using AWS Lambda function or AWS Fargate, to manage the fleet of dedicated game server instances by using the AWS SDK to make API calls to update the minimum, maximum, and desired capacity settings for the EC2 Auto Scaling groups hosting your game server build.

Alternatively, you can use Amazon GameLift to host your game servers and use the out-of-the-box game server auto scaling capabilities to manage this scaling process for you. GameLift's automatic scaling capabilities are aware of active player sessions and can be configured to prevent the termination or scale-in of game server instances and can be configured to prevent the termination or scale-in of game server instances that are actively hosting players. For more information, refer to Monitor GameLift with Amazon CloudWatch.

GAMEREL_BP02 - Support the use of multiple EC2 instance types for your game.

When hosting your game using EC2 instances, or if you use containers hosted on EC2 instances in your AWS account, then you should use multiple instance types in your hosting strategy. By using multiple instance types, you increase the number of compute options that can be used when your game is scaling to add more servers to support player growth, which improves reliability in case your preferred instance type is unavailable. This is also a best practice when using Spot Instances to host your game, since the availability of Spot Instances fluctuates based on customer demand. You should test your game on multiple instance types to meet your cost and performance requirements and determine a prioritized ranking of instance types. Amazon EC2 Auto Scaling supports using multiple instance types and sizes as well as assigning weights to each instance type in your configuration so that you can implement prioritized ranking of compute options.

If you host your game using Amazon GameLift managed hosting, it uses Amazon EC2 instances to deploy your game servers and host game sessions for your players. When setting up a new fleet, you decide what type of instances your game needs and how to run game server processes on them (using a runtime configuration). When choosing resources for a fleet, you must consider several factors, including game operating system, instance type (the computing hardware), and whether to use On-Demand Instances, Spot Instances, or both. Hosting costs with GameLift primarily depend on the type of instances you use. For more information, refer to Choosing computing resources.