Steam Networked Game Template
The networked top down template was my introduction to networked gameplay programming back when I was a student. I integrated the Steamworks API and Steam online subsystem to build a basic networked tech demo. The template features automated matchmaking, a basic lobby system, text chat, hot-join, and some simple server-authoritative gameplay (with a touch of client-side prediction).
One of the goals of the project was ensuring the codebase was well written enough that others could use it as a base for multiplayer demos or to learn the UE4 gameplay networking layer from; in this regard I believe it still stands up fairly well.
​
The project took around 300 hours to complete, including the 14000 words of documentation. The biggest challenges came from the lack of resources for C++ networking in Unreal Engine 4, especially when it came to sessions that persist across multiplayer maps or play modes.
General Architecture
-
Steam API Integration
-
Steam and Null online subsystem compatibility
-
Customisable player identity for Null online subsystem
-
Support for both hard and seamless map travel
-
Intigration of UE4's latency and packet-loss simulation systems
Gameplay Systems
-
Server-driven match states: pre-match, match, and post-match
-
Server-authoritative collectables
-
Server-authoritative player scores
-
Client-side prediction on collectable collection
-
Server-driven character death and respawn systems
-
Server-driven gameplay GUI with match duration and player score
Matchmaking System
-
Automated session-based matchmaking
-
LAN or Online networks
-
Session validity checking
-
Preferential session sorting
-
Full matchmaking error detection and display interface
Lobby System
-
Dynamic player list
-
Player readyness toggle
-
Text based chat
Source Code Samples
Collectable.cpp
Server-authoritative collection with basic client-side latency masking.
MasterPlayerController.h
Client side widget management and networked chat broadcasting.
MasterGameInstance.cpp
Sessioning and matchmaking functionality.
Full source and project files available on request.