top of page

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.

bottom of page