Steam Online Multiplayer in v4.13

Hey all. I realize there is a host of fragmented information on the forums, wiki, docs, and YouTube about this, but I’ve been beating my head against this.

I’m using the Advanced Sessions plugin for multiplayer on Steam. I incorporated it by turning on the Steam Plugin and doing the few compiles to incorporate the Advanced Sessions plugin. I changed my engine ini… I’m pretty sure I have that all right because it works as described below…

Everything works fine on dual windows during emulation in the editor.
Everything works fine on playing as a stand alone game. It seems to connect to steam and create sessions. I get the overlay and all that. I have print strings for nearly every step to include confirming my Steam ID and unique online ID. One confirms the online platform…

But

When I create a session in a dev build, it just stops and fails to create the session. I don’t even actually get a session failure its just like the launch button stops working in the dev build.

Ive checked I have my steam_appId.txt with 480 in it under:

…SettleTheScoreBuilds\WindowsNoEditor

and Ive copied the DLL files from my SDK folder to:

…SettleTheScoreBuilds\WindowsNoEditor\Engine\Binaries\ThirdParty\Steamworks\Steamv137

Here are a few set up images… obviously there are some server population features and such not in these shots, but that’s all working correctly. My best guess is that I’m setting something up wrong in my dev build folder. I usually work with blueprints builds. Should I be compiling anything before I do the dev build? I get no error or warnings during the dev process or in the editor other than the normal steam API warning.

#totallydumbfounded

Some of the images didn’t go through the first time.

Hey PDubulous,

Just to verify a couple things:

We, as in Epic Engine Support, doesn’t give support for third party plugins, such as “Advanced Sessions”. Also, the latest UE4 Steamworks verson is 1.32. I don’t foresee that 1.37 being a huge difference if you went through the steps of updating it and compiling it. As long as that succeeded, I supposed that it’ll be fine but it could be a factor to keep in mind.

With that said, here is are the steps that I go through to setup Steam multiplayer sessions:

DefaultEngine.ini:

[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")

[OnlineSubsystem]
DefaultPlatformService=Steam
PollingIntervalInMs=20

[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480
GameServerQueryPort=27015
bRelaunchInSteam=false
GameVersion=1.0.0.0
bVACEnabled=1
bAllowP2PPacketRelay=true
P2PConnectionTimeout=90

[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="/Script/OnlineSubsystemSteam.SteamNetConnection"

Secondly:

  • In UE4, go to Edit->Plugins
  • Select, Online Platform
  • Enable, Online Subsystem Steam
  • Restart Editor
  • Package Game / Run standalone

If running a C++ Project:

  • Source ->GAMENAME->GAMENAME.Build.cs

  • Uncomment out the PrivateDependencyModuleNames.Add( ) line:

    // Uncomment if you are using online features
    // PrivateDependencyModuleNames.Add(“OnlineSubsystem”);

To create and join session:

And lastly, when using Steam, you need to have the host be on one computer with one Steam account. The client joining the hosted game as to be on another computer with a different Steam account. You cannot test two clients on one machine when using Steam as the OnlineSubsystem.

Also, technically, you do not need to install the Steamworks SDK to create and join sessions with Steam. It is for things like achievements.

Please go through this and let me know if you are still having issues.

Thanks for the reply. I posted this in the forums for the Advanced Sessions plugin as well; I guess I didn’t realize the difference between the two. At any rate, problem solved! “mordentral” (well known plugin author) replied and suggested I was setting up steam wrong in the dev build. Turns out he was correct. I went back, refreshed my VS Project in the Editor, made sure all of my errors were cleared, and then did a new Dev Build. As mordentral pointed out, there is no need for the DLLs in the Dev Build. All I did was drop the steam_appid.txt in the root and it linked right up. I was able to connect with a team member over the internet from a 100 miles away. Documenting here so you guys can close the issue and to hopefully help out some others.