AWS services
Deploying this solution with the default parameters creates various infrastructure and resources on AWS, which are shown below on the left-hand side as the Testing Toolkit.
However, the toolkit also requires a game to test, as shown below on the right-hand side as the Test Game. If you chose to deploy the test game when deploying the toolkit then the toolkit's SampleGame will also be installed, otherwise you'll need to deploy your own game integrated with GameLift.
Figure 1: Amazon GameLift Testing Toolkit architecture on AWS
Once the toolkit has been deployed with a game, the key interactions with the toolkit and the game are as follows:
- The UI provides the toolkit's management interface, which is hosted as a static website on Amazon Simple Storage Service (Amazon S3) and distributed by Amazon CloudFront. Users are authenticated via Amazon Cognito.
- The management services provide dynamic features for the web console, which are accessed through Amazon API Gateway endpoints that call AWS Lambda, and use Amazon DynamoDB for storage. API calls are authenticated using Amazon Cognito.
- Game servers and configuration in Amazon GameLift are queried and updated by the management services.
- Virtual players are controlled by the management services and run test game clients as AWS Fargate tasks in Amazon Elastic Container Service (Amazon ECS).
- Test game clients make calls to game client service API Gateway endpoints, which use Lambda functions to request matchmaking.
- Matchmaking requests are sent to GameLift to match virtual players in game server sessions.
- Test game clients connect directly to game servers to play games.
- GameLift listener listens for GameLift notifications and sends updates using Amazon EventBridge, and is controlled by AWS Step Functions.
- GameLift listener forwards notifications to the management services by updating DynamoDB.