Blog
Deploying Games on AWS Using Amazon GameLift
Massively Multiplayer Online Gaming (MMOG) is a huge and growing market with a broad demographic of users. But while broadband internet access, which is needed for MMOG, has grown across the globe, it still has several technical challenges.
Players often have their connections drop unexpectedly. Studios launching new games struggle to serve millions of enthusiastic players on the day of launch. Matching players at incompatible skill levels can lead to the new players being overwhelmed and frustrated.
Overall, provisioning intelligent, robust and scalable infrastructure to deliver MMOs is no simple task. And it’s not a core competency or focus area for game developers anyway. They would rather work on delighting players with the best games possible and let someone else worry about the MMO infrastructure. But how?
Enter Amazon GameLift.
Amazon GameLift is a fully managed gaming service from AWS for deploying, operating, and scaling session-based multiplayer game servers in the cloud, with no upfront costs or long term commitments.With GameLift, game developers no longer have to worry about infrastructure management or extra technical capabilities. They can focus on creating and serving the best games possible for their fans at global scale.
Components of GameLift Service
GameLift contains the following components:
- Builds. Software bundle of game code that is fully integrated with Amazon GameLift using the SDK.
- Scripts. Software bundle containing custom game logic for your game. Scripts are lightweight Node.js-based JavaScript, used for Realtime servers.
- Fleets. Group of game servers deployed in a given region based on build or script.
- Aliases. Nickname for fleet or endpoint, used similarly to DNS to swap fleets and route player traffic without updating game clients.
- Matchmaking. Manages a pool of matchmaking requests received and assembles groups of players to form teams and start the session.
- Queues. Group of fleets that are running a game build or script. Can span regions and improve performance by intelligently routing players.
Now let’s look at each of these components in greater detail.
Deploying Game Code as Builds
Build is basically a version of your game code that you upload to GameLift from your local computer. The build contains server executables, supporting assets, libraries, and dependencies, as well as SDKs and instructions on how to serve the game via GameLift.
When used with a Continuous Integration/Continuous Delivery (CI/CD) pipeline, you can take your application’s revisions and upload them into GameLift build section to allow for automated builds, deployments, testing, and validation before releasing to production, and to keep versioning aligned.
Setting Up Matchmaking and Queues
Matchmaking is where the game automatically match players together. This is crucial for a game’s success so that players with the right attributes are matched to have an engaging and fun gaming experience.
GameLift’s Flexmatch matchmaking service provides a fully customizable rules engine, to let you match players together based on player attributes (such as skill level, location, personal preferences etc) and game models that are specific to your game.
When a match is created, FlexMatch hands the match details to a queue of your choice.
The queue then searches for available hosting resources on your Amazon GameLift fleets and starts a new game session for the match.
Launching Fleets and Aliases
Fleets are groups of EC2 instances running a particular build version of the game. You can run many groupings of instance types and pricing models (On-demand, Spot) and can even span multiple regions. Each fleet has its own auto-scaling settings which can be adjusted.
When new players want to join the game, auto-scaling is triggered to add additional instances to the fleets. Conversely, auto-scaling will automatically scale down your fleet as active players begin to decline, such as when the weekend has ended.
In many GameLift global deployments, multiple fleets in multiple regions are configured and are tiered to multiple Queues using routing services that allow you to point to different regional Queues depending on a player’s location.
Aliases are a user-friendly way to reference fleets in GameLift deployments. By using aliases instead of specific fleet IDs, you can more easily and seamlessly switch player traffic from one fleet to another without having to update links whenever you make deployments.
Optimizing Cost using FleetIQ and Spot Fleets
If you are running fleets with spot instances and you lose your Spot instances because of a price shift, FleetIQ will place new game sessions on instances meeting latency, pricing and spot interruption rate criteria. FleetIQ in conjunction with Queues will handle all the scaling and balance between price and availability for you. This can lead to up to 90% reduction in server costs. The FleetIQ analyzes historical pricing and termination data for Spot Instances. As a result, it reduces the odds that any particular game will be notified and then interrupted.
Monitoring with Cloudwatch and GameLift Console
CloudWatch provides monitoring and insights into your games running on GameLift. GameLift integrates natively with Cloudwatch to track all your key metrics and to create filters, alarms, and custom dashboards.
In summary, GameLift is one of the best options available today to deliver MMOs quickly and robustly at scale. With AWS’ proven infrastructure and intelligence underlying your game delivery, you can be assured that your fans will continue to be delighted with their gaming experience.
Author Spotlight:
Lance Allen
Keep Up To Date With AWS News
Stay up to date with the latest AWS services, latest architecture, cloud-native solutions and more.