This course uses the AWS Free Tier.
Have you ever wondered how you can let your players launch your game, and connect directly with a server, playing in multiplayer with other players right away?
Or perhaps how you can allow your players to create user accounts for your game, with username, password and email? How do games allow you to sign up for a new user account, receiving a 6 digit verification code in their email, allowing them verify their account for your game?
This course uses the AWS Free Tier.
Have you ever wondered how you can let your players launch your game, and connect directly with a server, playing in multiplayer with other players right away?
Or perhaps how you can allow your players to create user accounts for your game, with username, password and email? How do games allow you to sign up for a new user account, receiving a 6 digit verification code in their email, allowing them verify their account for your game?
Have you ever wondered how to save player data in databases, so they can see their achievements in the game, showing their progress, skill level, items, or stats from previous matches? Or how leaderboards are made, showing the top scoring players who play the game across the planet?
How can you run dedicated servers that players can connect to? How can you set up servers in different regions around the globe, providing access to your game to players in different countries, allowing them to enjoy gameplay with the lowest possible ping times? And how to make competitive multiplayer games fair to all players, with an authoritative server optimized to manage server operations, reduce lag and provide a consistent and performant experience for everyone?
This course is a masterclass for dedicated servers and cloud backend for unreal engine games.
By the end of this course, you will be able to:
Compile Unreal Engine from source, create client and server build targets, and package dedicated server and client builds of your game
Integrate the GameLift Server SDK into your game to connect with GameLift
Learn how to make API calls with the AWS (command-line interface)
Host dedicated servers, both on your own machine and on cloud-hosted virtual machines (and you’ll know what those are)
Learn how to create serverless functions (in AWS Lambda) to access cloud resources and use AWS SDKs
Create secure user pools, where your game's players can create their own login/password, with email verification with Amazon Cognito
Implement security, requiring temporary access tokens granted via user pool login in order to perform game actions
Create your own
You’ll be creating an AWS account and learning how to manage it using recommended best practices for the cloud. All of the core features of this course use the free tier, aside from two optional lectures using advanced security features in AWS for custom access token scopes – which cost me less than .69 cents to implement for this course. But you can skip those two lectures if you wish to stay in the free tier.
I’ve created and provided you with an FPS template project as a starting point, with shooter mechanics so we can have some stats to save to the cloud, but it’s not required – you can use your own game project, or a completely empty game project if you want. This course is about creating and hosting servers and setting up the cloud backend for your games.
We’ll be downloading and compiling Unreal Engine from source – which means you will need at least 230 GB of storage for this course. You must know the basics of Unreal Engine C++. You must use an Unreal source build of at least UE5.4 or above. (You can use the latest version of the engine, everything works).
You do NOT need any experience or knowledge of cloud architecture.
It’s time to take your games to the next level, and learn how shipped games manage their users, data, and their game servers.
Are you ready to upgrade your game development skills? I’ll see you in the course.
Welcome to the course!
Tap into your most valuable resource in this course!
In order to package a dedicated server build, we need Unreal Engine from source.
Important things to keep in mind!
To build a dedicated server, we must compile Unreal Engine from source.
A First-Person Shooter template project is provided for this course. The project is compatible with Unreal Engine version 5.4 and above.
We discuss the prerequisites for integrating the GameLift Server SDK with our Unreal Engine project.
To package for a dedicated server, we must create a server Build Target. We learn about build targets and create one for server builds.
We lay out the game plan for integrating GameLift with our Unreal Engine project, and look at the prerequisites for compiling it. If you wish to skip these steps and download the necessary .dlls and GameLift plugin, download the OpenSSL binaries and Gamelift plugin .zip files in the resources.
We download Strawberry Perl, a prerequisite for OpenSSL. Don't worry, we won't be doing any Perl programming in this course!
We get NASM (Netwide Assembler), an assembler/disassembler for doing low-level operations - a prerequisite for OpenSSL
We build OpenSSL and get the coveted binaries we need to the GameLift SDK to implement its security measures.
We download the Amazon GameLift Server SDK
We compile the GameLift Server SDK and add its binaries to the GameLift plugin
We convert our project to use Rider as the IDE - it's now FREE for non-commercial use!
A quiz on Section 2
We create our AWS Account and take a look at the AWS Console Home
We learn how to manage our billing, and set up a billing alarm to send us notification if billing ever goes above a specified threshold. Everything we do in this course will be covered under the AWS Free Tier!
We learn the difference between an IAM User and Identity Center Users. We will be following best practices recommended by AWS and creating an Identity Center, Organization, and Identity Center User for daily use, so we don't use the Root User for daily tasks.
We set up Identity Center and make our Identity Center User.
We create a permission set and grant it to our Identity Center user to give it access to AWS.
A quiz on Section 3
We create a Game Mode and prepare it for code to connect to GameLift
We begin to add code to our Game Mode for harvesting data from command line arguments for the GameLift connection.
We implement the callback which GameLift will call on our Game Mode in response to the creation of a GameLift Game Session
We implement the callback which GameLift will call on our Game Mode in response to the termination of a GameLift process
We implement the callback for reporting health checks from the server to GameLift
We implement code to harvest the selected port from command line arguments or select the game process default if it isn't supplied
We call ProcessReady to initialize GameLift
We package the game, both for clients and the dedicated server
We add the OpenSSL binaries to our packaged build directory
A quiz on Section 4
We download the latest version of the AWS CLI (command-line interface)
We configure the CLI to retrieve our SSO credentials automatically
We learn how to create a gamelift location for our Anywhere Fleets
We create an Anywhere Fleet for hosting a dedicated server on our own compute resource (our PC)
We run the register-compute command to register our own compute resource with our Anywhere Fleet
We run get-compute-auth-token to get an authentication token for creating GameLift Game Sessions
We learn how we can test our dedicated server by connecting to it with a client build
We create a game session using the auth token we retrieved using get-compute-auth-token
We create a Player Session for our Game Session
A quiz on Section 5
We discuss what virtual machines are, why they are useful, and the benefits of hosting game servers on them rather than self-hosted hardware
We create an install batch file for virtual machines to execute upon startup, in order to install all required prerequisites to run our Unreal Engine dedicated server.
We upload our dedicated server build to GameLift so it can be run on a virtual machine
We create a GameLift-hosted fleet that can run EC2 instances with our dedicated server build
We launch our client build and connect to the cloud-hosted dedicated server, running on a virtual machine in an EC2 instance in our GameLift-hosted fleet.
We delete our fleet, ensuring that it will not use up our free EC2 hours while not in use.
A quiz on Section 6
We discuss how Lambdas are "serverless" and what it means for a function to be serverless
We create our first Lambda function
We discuss the anatomy of a Lambda function and all of its parts
We create a test event for our first Lambda function
We learn how to log information to the console and retrieve that information in Cloudwatch
We create a ListFleets Lambda function for listing all fleets
We discuss the try/catch block and how we can use it to control what happens in the event that our Lambda throws an error
Quiz on Section 7
We discuss our plan for setting up API Gateway to create API endpoints to trigger our lambdas via HTTP requests
We create a REST API in API Gateway
We create a module in our Unreal Engine project to encapsulate all of our dedicated server code
We create the Game Mode class for our dedicated servers module
We create a Test HUD for displaying widgets for sending and receiving HTTP requests
We create a List Fleets widget for our ListFleets API endpoint
We create an HTTP Request Manager class to handle sending HTTP requests, receiving HTTP responses, and parsing the data
We create a Data Asset to store the API endpoints for our APIs
We create an HTTP Request in our HTTP Request Manager class
We parse the HTTP Response to get its data
We parse the Metadata in our HTTP Response into a struct
We parse the payload for the ListFleets response
We parse errors and handle them when they occur
We create a ListFleets callback function for when we parse the response so we can display listed fleets to our HUD
We add Fleet Id widgets to our ListFleetsBox in the HUD
Quiz on Section 8
We set up the classes for our game Portal
We create callbacks for joining games
We create the code for describing fleet attributes
We loop over the fleets we found when describing fleet attributes
We call describe game sessions to find all game sessions running on our fleets
We create a game session if it does not already exist
We create an endpoint in our REST API for finding or creating a game session
We make the HTTP request for finding or creating a game session
We create the struct for holding information for the game session
We parse the HTTP response to store the data in our game session struct
Quiz on Section 9
We create a Lambda function for creating a player session
We create an endpoint to trigger our Create Player Session lambda
We handle the game session status to determine whether or not we can create a player session yet
We learn how to serialize content for our HTTP requests to pass data into the lambda's event object
We create the player session struct to hold player session data
We parse the HTTP response into a player session struct
OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.
Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.
Find this site helpful? Tell a friend about us.
We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.
Your purchases help us maintain our catalog and keep our servers humming without ads.
Thank you for supporting OpenCourser.