An updated tutorial on making a multiplayer game with Unreal Engine and Amazon GameLift

About a year ago, I made a tutorial about how to integrate an Unreal Engine project with Amazon GameLift. That older tutorial can be found in this forum post. Then, recently, I decided to update this tutorial to go over more in depth different concepts involving multiplayer development in UE4, GameLift, and other AWS services while correcting issues from the old tutorial as well as following best practices. I try my best to explain things that may not be very well documented, and the hope is that the process for hosting an Unreal Engine server on AWS while using services like GameLift, Cognito, API Gateway, Lambda, and DynamoDb becomes much easier and more beginner-friendly. Here are the different parts of the tutorial series:

Part 1 ( - Installing Prerequisite files (Visual Studio, Unreal Engine source, etc.)

Part 2 ( - Buidling the GameLift Server SDK

Part 3 ( - Uploading a server build to GameLift, making a fleet, and creating a queue

Part 4 ( - Setting up for FlexMatch, which involves creating a matchmaking rule set, creating a matchmaking configuration, creating an SNS topic for FlexMatch event notifications, creating a table in DynamoDb to store information about specific event notifications, and creating a Lambda function that is subscribed to the SNS topic

Part 5 ( - Setting up for Cognito, which involves creating a user pool, , adding the Cognito hosted UI to our Unreal Engine game client, and making a request to an API method on API Gateway that will call a Lambda function for getting temporary user pool tokens

Part 6 ( - Setting up the client service (API Gateway + Lambda), which is an API that contains methods that clients will invoke for interacting with GameLift and other AWS services

Part 7 ( - Modifying the Unreal Engine client code so that the client can use the Cognito user pool tokens to invoke the client service in a way that will ultimately lead to clients connecting to the game server hosted on AWS

Part 8 ( - Modifying the Unreal Engine server code so that the server can replicate matchmaking information to the clients, accept player sessions when players connect to the game server, terminate the game session when the “game” is over, handle server process interruptions, handle backfill requests, and more

Part 9 ( - Remotely accessing a Windows EC2 instance in a GameLift fleet

Part 10 ( - Cross compiling an Unreal Engine server for Linux on Windows, packaging a Linux server build, uploading that server build to GameLift, creating a fleet out of that build, and remotely accessing a Linux EC2 instance in a GameLift fleet

Part 11 ( - Going over auto-scaling, specifically target-tracking, in order to try to ensure that there is enough EC2 instance capacity in your fleets for fluctuating player demand/traffic

Part 12 ( - Going over pricing details and the free tier for the various AWS services used throughout the tutorial

Link to the Unreal Engine Client/Server code: GitHub - chris-gong/gamelift-example-ue4: Sample project integrating AWS GameLift with Unreal Engine

Link to the AWS Lambda Backend code: GitHub - chris-gong/gamelift-example-lambda: AWS Lambda backend for the GameLift Unreal Engine sample project

1 Like