Getting started with GameLift FleetIQ - Amazon GameLift

Getting started with GameLift FleetIQ

To get started using GameLift FleetIQ, you should have a working game server that runs either in an on-premises or Amazon EC2 environment. Your game server can be a single process that manages one or multiple game sessions, spawns child processes, or runs inside of a container.

  1. Get an AWS account.

    If you already have one or more AWS accounts, choose the AWS account that you want to use for GameLift FleetIQ. This account and user/user group must have permissions to manage your Amazon EC2, Auto Scaling, and other AWS resources used with your game. See Update IAM user permissions for more details.

  2. Create IAM roles.

    Create roles that allow GameLift game server groups Amazon EC2 and Auto Scaling resources to communicate with each other. See Set up your AWS account for GameLift FleetIQ for more details.

  3. Get the AWS SDK and AWS CLI with GameLift FleetIQ functionality.

  4. Prepare your game server for use with GameLift FleetIQ.

    Add the AWS SDK to your game server project and add the following calls:

    • RegisterGameServer(): Make this call once when the game server process starts and is ready to accept players.

    • UpdateGameServer(): Make this call periodically to report health and the presence of players in your game server.

    • DeregisterGameServer(): Make this call once when the game server is terminating.

    These APIs keep GameLift FleetIQ updated with the current status and usage of your game servers. With this information, GameLift FleetIQ can provide your matchmaking system with a list of viable, unoccupied game servers, and also avoid terminating instances with players on them during balancing. See Integrate GameLift FleetIQ into a game server for additional guidance and examples.

  5. Create an Amazon EC2 Amazon Machine Image (AMI) with your game server.

    Create an AMI with your game server software and with any other runtime assets or configuration settings. For help, see Amazon Machine Images (AMI) in the Amazon EC2 User Guide.

  6. Create an Amazon EC2 launch template.

    Build an Amazon EC2 launch template that uses your custom AMI and defines network and security settings for your hosting resources. The launch template must reference the instance profile that you created (see Step 2) with permissions that allow your game server to communicate with GameLift FleetIQ. You don’t need to include instance types in your launch template, as this is done later. For help, see Creating a Launch Template in the Amazon EC2 User Guide.


    Before using a launch template with GameLift FleetIQ, we highly recommend that you first set up an Auto Scaling group to verify that the template configuration and AMI are deploying properly.

  7. Set up GameLift FleetIQ hosting resources.

    In each Region where you want to deploy game servers, create a game server group by calling CreateGameServerGroup(). Pass in the launch template (containing your custom AMI and network and security settings), IAM role, and a list of instance types that your game can run on. This action sets up an Auto Scaling group in your AWS account that GameLift FleetIQ can modify. For additional guidance and examples, see Manage GameLift FleetIQ game server groups Create a game server group.

  8. Integrate GameLift FleetIQ into your game client.

    Add the AWS SDK to your game client, matchmaker, or other backend component that allocates game server capacity. Depending on your game type, your matchmaker might call ListGameServers() or ClaimGameServer() to obtain server capacity and reserve an available game server. For additional guidance and examples, see Integrate GameLift FleetIQ into a game client.

  9. Scale up your Auto Scaling group.

    As instances are provisioned in your Auto Scaling group, they launch your game servers. Each game server then registers with GameLift FleetIQ as available capacity, to be listed or claimed later by your matchmaker.

  10. Test your game.

    Invoke your matchmaker and call ClaimGameServer to request server capacity. Pass the resulting IP and port back to game clients so they can connect to the game server.