Comment on page
Getting started with Steam Multiplayer
So you want to build a multiplayer Steam game? We can help!
Your first stop should be our Design article on Multiplayer it covers the fundamentals that you'll need to know before you get started. Once you have your head wrapped around the concepts and a design in mind come back here and we will get started.
Local multiplayer is the simplest and least common in the current market, especially for PC games. This method doesn't require any additional technology beyond a means to understand when input comes from 1 player vs. the others. Steam Input identifies each controller uniquely so this is a trivial matter usually accomplished by asking each player to press a button to "register" and then associating that controller with that player.
This is a feature of Steam API where a remote player can Steam into your local game. Your game will see this user as another local user so if your game is configured for local multiplayer this can usually be used right out of the box
Pick an HLAPI you like and go with it, I will use NetCode for GameObjects in the rest of this not because it's best or my favourite, etc. but because it’s the "standard" Unity pushes.
For all their hemming and hawing about how their HLAPI is the best, most are so strikingly similar that if you’re bumping up against the differences in a way that hurts your game you might want to consider a custom solution more specific to your game … its easier than you might think. We might cover that in a later topic.
Aside from your HLAPI of choice, you will need of course
Heathen’s Steamworks (I suggest Complete, but Foundation might do you)
Setting up your Steam project. If you going with a P2P model nothing special to be done here but if you're going with a Client-Server setup and intend to build a Steam Game Server then you also need to configure your Steam App for that. You can read more in Valve's documentation for Steam Game Server here.
Unreal's built-in networking tools and features are unaffected by Steam API and will work as normal. The only consideration to keep in mind is regarding the Online Subsystem. The following link explains what an Online Subsystem is and how it relates to Steamworks Complete.
The Net Driver you choose defines how you will connect, Unreal's built-in Steam Sockets Net Driver is unfortunately out of date and dependent on the incompatible Online Subsystem Steam.
Heathen has created a Steam Networking Sockets Net Driver that is compatible with Heahten's Steamworks Complete and is not dependent on an Online Subsystem. The Net Driver is in preview and currently only available to GitHub Sponsors. Once the driver has been tested and proven it will be added to the Steamworks Complete plugin.