In follow up to our hugely successful Complete Unreal Engine Developer course we bring you Unreal Multiplayer Mastery - as on featured on Epic's UE4 blog.
In this section we teach you to connect your games P2P over steam. This game introduces Unreal's Online Sub-System (OSS) and shows you how to use it with the Steamworks API. By the end of the section, you will be able to connect player through Steam lobbies.
You're welcome to download, fork or do whatever else legal with all the files! The real value is in our huge, high-quality online tutorials that accompany this repo. You can check out the course here: Unreal Multiplayer Mastery
- We overview the section topic.
- Introducing Steamworks.
- Downloading the Steamworks SDK.
- Steamworks and the Online Sub-System.
- Introducing the Steamworks example project.
- Updating the project.
- Downloading & installing DirectX SDK.
- Fixing the build errors.
- Introducing the Steamworks example project.
- Applying recommended settings.
- Running with Steam.
- Finding a testing partner.
- Testing servers.
- Testing lobbies.
- Importing PuzzlePlatforms.
- Capabilities of Online Sub-Systems.
- Including the OSS module.
- Getting a pointer to the sub-system.
- Role of the NULL sub-system.
- Configuring the NULL service.
- Printing the current service name.
- Stack vs Heap.
- Manual memory management.
- Reference counting with
TSharedPtr
. - Garbage Collection of UObjects.
- Creating a session.
- Asynchronous operations and delegates.
- Creating a session on host.
- Asynchronous destruction.
- Checking if a session exists.
- Destroy the session if we need to.
FindSessions
andTShareRef
.- Handling
OnFindSessionsCompleteDelegates
.
- Configuring Session Settings.
- Adding query parameters.
- Iterating over a
TArray
- Introduction to the
ScrollBox
. - Creating a row widget.
- Add rows in C++.
- Expose the text property.
- Setting a server list from GameInstance.
- Clearing the previous list.
- Requesting a refresh.
- Using
TOptional
values. - Setup the
UServerRow
. - Adding a
UButton
. - Set the selected index.
- Passing the index to
GameInstance
. - How to
JoinSession
. - Handling
OnJoinSessionComplete
. - Getting the platform connect string.
- Enabling the steam plugin.
- Compiling with the steam module.
- Configuring the
DefaultEngine.ini
. - Reading the verbose logs.
- Enabling presence for the server.
- Enabling presence for search.
- Debugging our connection.
- Update text colour on hover.
- Update all rows when
Selected
. - Select colors for
Hovered
andSelected
.
- Disabling Steam for testing.
- Creating a struct.
- Populating the struct.
- Updating the UI.
- Disabling Steam fully.
- Getting the available connections.
- Padding the text properly.
- How to set custom settings.
- How to retrieve custom settings.
- Setting the server name.
- We finish the challenge solution.
- We make our menu pretty again.
- Joining into the lobby.
- Creating a GameMode override.
- Handling
PostLogin
. - Handle
Logout
and count players.
- Ensuring we call
Super
. - Traveling to the game.
- What is non-seamless travel?
- Enabling seamless travel.
- The transition map.
- Installing editor symbols.
- Finding the NULL subsystem code.
- What code should be called?
- Attaching and debugging.
- Fixing the NULL subsystem bug.
- Update maximum number of players.
- Adding a session start timeout.
- Starting the session.
- We review the topics covered this section.