Download

"Join Session" Always fails even over LAN. Session definitely exists and is easily found but can't be joined

I’m using 4.26.

I am following the official blueprint multiplayer series here

I have followed and combed over all the instructions countless times and I can’t find out what the problem is. I’ve been bug testing and printing variables over and over again to try to figure out where it could be messing up and the only thing i can think of is that the “Join Session” node itself is just plain broken.

Auto-Connect to server is no longer in the multiplayer preferences and from what i can understand that boolean is now tied to whether or not you are launching it in standalone mode, which I am.
I have a node set up to print information from the “Find Session” output, and its telling me both the session name and that there is 1 / 4 players joined so it is properly detecting both the max players and current players and I can confirm that the session DEFINITELY exists even if I can’t use the “Is Valid” node with a session result variable.

I’ve edited my DefaultEngine.ini with the following recommended settings:

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

[OnlineSubsystem]
DefaultPlatformService=Steam

[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480

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

I don't know how to bug test why Join Session is failing. Someone please help me.

I would suggest that you:

  1. ensure that only the NetDriverDefinitions are in you’re config only 1 time. I had found a ‘copy’ of the line added under

[/Script/Engine.Engine]

was overwriting it.

Thus check:
/Script/Engine.GameEngine

has the Steam netdriver defined and net defs for “/Script/Engine.Engine” are removed

  1. I’m using the SteamSockets plugin, but it works out to be the same, but here is how I had to do my net defs to get it to work (note the fallback driver is still Steam):

Snippet

+NetDriverDefinitions=(DefName=“GameNetDriver”,DriverClassName="/Script/SteamSockets.SteamSocketsNetDriver",DriverClassNameFallback="/Script/SteamSockets.SteamNetSocketsNetDriver")

Hopefully either this fixes it or can at least help you rule it out.

Oh also, I’ve found - forget the Stand Alone - I have never got it to work.

I use the Staged Build and ensure you’re running steam and logged in (as you probably already are)

Warning: this makes debugging extremely painful. You can attach VS to you’re running package process and break into C++, but I’ve not found any way to break into blueprint:

So I’ve moved all difficult code to C++. But the JoinSession node DOES work. Either your config is wrong, or using Stand Alone is your problem

I figured out what the problem was. Turns out enabling the normal steam plugin doesn’t actually add the steamworks SDK to your project. I’m not even entirely sure WHAT if anything it does do.

I used the free Steam Bridge plugin and it worked like a charm.
Mind you–this is for LAN play. Which for some reason was also getting ■■■■■■ up by not having steam working properly. Go figure.

AH, OK, I assumed you already had the SDK installed.

As far as the what does it do, the UE4 code wraps the and keeps it nice and neat. Steam sdk is black box and has no pointer frameworks. While working on socket messages, I found that trying to use the raw Steam SDK is very time consuming and without a lot of work, error-prone and still, very difficult to debug.

I had contacted Steam about some help with the sdk, and they said since I’m using UE4, they don’t support to help those using 3rd party engines and basically said, very politely, to get help elsewhere.

At least you got it working!