Autoscaling with ODIN Fleet, AWS GameLift and Unreal Engine
The goal of this guide is to explain how to manage the amount of deployed ODIN Fleet compute instances dynamically, exemplary by using AWS FlexMatch and GameLift in combination with the ODIN Fleet API. The automated scaling is based on the amount of players that want to play the game. By doing this, you can utilize ODIN Fleet for on-demand dedicated game server scaling, while continuing to rely on GameLift for matchmaking and session orchestration.
Requirements
- A dedicated Unreal Engine game server integrated with AWS GameLift Anywhere
- An Unreal Engine game client
- A backend service (e.g., Firebase Cloud Functions, Node.js, etc.)
- Access to ODIN Fleet and a configured App/Server configuration
If you need assistance with the basic setup, refer to the ODIN Fleet and AWS GameLift Anywhere integration guide and the ODIN Fleet and AWS GameLift FlexMatch integration guide.
Overview of the steps in this guide
- Configure the ODIN Fleet REST API in the backend
- Implement server instance scaling logic
- Build the Autoscaler with thresholds
- Implement the backend endpoints for GameLift integration
- Update your Unreal Engine game server code to handle session statuses
Step 1: Configure the ODIN Fleet REST API
To deploy and manage ODIN Fleet servers dynamically, we use the ODIN Fleet REST API. You can generate an SDK in your preferred programming language using the OpenAPI specification. In this example, we use a TypeScript SDK generated from the OpenAPI spec to integrate it into our backend service.
First, specify your configuration parameters and authenticate by passing your access token in the header.
This config is used to create several needed API classes.