I’m attmepting to debug an issue I’ve been facing, and am using the Unreal sample Shooter Game to make things easier.
If I disable all Steam-related plugins in the Shooter game, and then compile the game dedicated server and client, I can run the server on my machine and then run the client to connect to it.
The server is executed using launch parameters Highrise -Log -port=7777, and the client uses 127.0.0.1:7777. With these parameters, I can lauch the client and connect to the server without issue.
However, if I enable the Steam online subsystem and rebuild the client and the server, the client is no longer able to connect. It hangs on the blank connection screen for a while, before failing and reporting that a connection to the server was lost.
As far as I’m aware, the Steam subsystem is configured correctly. I get the following messages logged when starting the server:
[2020.11.17-12.58.50:590] 0]LogNet: Display: SteamNetDriver_2147482577 bound to port 7777
[2020.11.17-12.58.50:590] 0]PacketHandlerLog: Loaded PacketHandler component: Engine.EngineHandlerComponentFactory (StatelessConnectHandlerComponent)
[2020.11.17-12.58.50:591] 0]LogNet: GameNetDriver SteamNetDriver_2147482577 IpNetDriver listening on port 7777
[2020.11.17-12.58.50:602] 0]LogWorld: Bringing World /Game/Maps/Highrise.Highrise up for play (max tick rate 30) at 2020.11.17-12.58.50
[2020.11.17-12.58.50:603] 0]LogWorld: Bringing up level for play took: 0.007517
[2020.11.17-12.58.50:604] 0]LogGameMode: Display: Match State Changed from EnteringMap to WaitingToStart
[2020.11.17-12.58.50:605] 0]LogGameState: Match State Changed from EnteringMap to WaitingToStart
[2020.11.17-12.58.50:605] 0]LogLoad: Took 0.136093 seconds to LoadMap(/Game/Maps/Highrise)
[2020.11.17-12.58.50:606] 0]LogOnline: GotoState: NewState: Playing
[2020.11.17-12.58.50:606] 0]LogLoad: (Engine Initialization) Total time: 1.06 seconds
[2020.11.17-12.58.51:070] 14]LogOnline: Verbose: STEAM: FOnlineAsyncEventSteamServerConnectedGS ServerId: Server[0x1403E2D4FEA3803]
[2020.11.17-12.58.51:301] 21]LogOnline: Verbose: STEAM: FOnlineAsyncEventSteamServerPolicyResponseGS Secure: 0
[2020.11.17-12.58.51:335] 22]LogOnline: Verbose: OSS: Async task 'FOnlineAsyncTaskSteamCreateServer bWasSuccessful: 1' succeeded in 0.711257 seconds
[2020.11.17-12.58.51:336] 22]LogOnlineSession: Warning: STEAM: Server setting ,GameMode_s:TeamDeathmatch overflows Steam SetGameTags call
Google searches inform me that the final warning message is not something to worry about.
I’ve tried to investigate this issue but have not had much luck. What I have been able to establish is that Wireshark reports IMCP requests as saying “Destination unreachable (Port unreachable)” when the Steam subsystem is enabled, whereas this does not happen if it is disabled.
Is there anything I’m missing here, like some obscure Steam configuration I’m not aware of?
Do you have steam running when trying to connect to the server? if not, make sure steams is running, i had he same issue in udk and that is what was causing it.
Yep, I have Steam running. The overlay displays in the game when I shift-tab.
I’ve also been informed by one of our company’s contacts that enabling the Steam subsystem on UE 4.22 would cause problems because it would choose the incorrect network adapter. Perhaps this could be the issue? (I’m on 4.24)
I’ve looked online and have seen people mention this warning message before, but it seems that it’s not important to the core functioning of the online subsystem:
EDIT: I was looking at this project and no server exe has been made. Open the Binaries/Win64 folder and you should see server binaries files there. Beings there are none you need to make them. Read the section > Building the server. Make those and i think it might work.
I’m in the middle of working on this, will be a few days until i get everything in and start to compile it up. When i get it running, i will let you know what i did to get it running. If you get it working post what you did.
I’ve been able to build and run the client and server for the sample third person game as per that linked article. I’ll enable the Steam subsystem and see what happens.
Is port 7777 open on your modem/router? if that is not open that happens.
might check PORT 27015 If i remember right that is steams port. Make sure it is open also.**
Yes, the module has been added. I’m running the server and client application on the same machine and connecting to 127.0.0.1, so no router port unblocking needs to be done. I have tried disabling the Windows firewall while performing this test, but it didn’t make any difference.
If i remember right when i ran mine(dedicated server that way) i had to have that port 7777 open to get connected to the server. Try it see what happens, can’t hurt anything to try it. maybe you will get lucky. I have not had chance to try this yet. Been busy, but soon i will be trying this my self. I will let you know my findings.
I didn’t add that, because I assumed that putting the server IP and port in the launch parameters for the client would serve the same purpose. The launch parameters did allow me to connect to the server without the OSS running, but not when it was running. I’ll add the Open Level function just to be sure, but I’m not expecting it will make any difference.
ahh, i did not look into what was in the blue print thing. Yeah looks like it is the same thing. Probably will not make a difference.
Did you see the network dl from epic yesterday? had something to do with network stuff. .Top post name Is 200227_NetworkMultiplayerFundamentals under asset sharing.
I hadn’t seen that, but I will take a look when I get time. I’ve also been advised to double check that all the Steam-related DLLs required by the OSS are present - I would have thought it wouldn’t boot if they weren’t, but I will check just in case.
With regards to the beginning of the Unreal video on networking and multiplayer, if I set the editor up to spawn more than one player on PIE, it then refuses to boot the game when I click play. I get the following message in the message log:
TravelFailure: PendingNetGameCreateFailure, Reason for failure: 'Error creating network driver.'. Shutting down PIE.
Unfortunately, the couple of pages online asking for help on this problem are not very helpful at all, as no-one has ever replied to them.
I have confirmed that this error does not occur if the Steam online subsystem is not enabled.
Steam is bottom of the barrel for Fck heads. Waste of time taking it there. Waste of time putting it there. Just make your own stuff AND FCK STEAM! Let them rot in their waste!
Sell your game in epics store or any place other then steam.
Use the online subsystem and SQL make your own master server list for your game, so you can query it into your browser. ( DO NOT RELY ON STEAM) <JOKE.
The only thing steam was good for is advertising your servers(which they can and will BREAK AT ANYTIME TO SCREW YOU), other then that they are a waste of time, trust me here(worthless for advertising).
If you are interested in making your own master server list to query for your own game. I will help you, just to make sure steam loses customers and the 25% they get to sell anything. NEVER EVER RELY ON STEAM THEY WILL SCREW YOU.
I’ve got a bit further and worked out that it was the Steam sockets plugin that was causing the “Error creating network driver” issue. I’ve now swapped to using the IP net driver, and I can connect clients to the server if use the option for the Unreal editor to automatically spawn and connect clients when running Play In Editor (see Editor Preferences > Level Editor - Play > Multiplayer Options).
However, looking more closely at the server logs in this case, it appears that the Online Subsystem Steam actually gets disabled:
Packaging the project with Steam sockets disabled does not cause these messages to be printed when the server is run, but of couse clients can still not connect to a packaged dedicated server.
For anyone who stumbles on this in future, I never “solved” it. I did, however find out the following.
It seems that the Online Subsystem Steam does not support the IP net driver, full stop (at least, not as far as I could see). This means that if you use it, you can’t connect to a server via the normal IP and port method - instead, you have to connect using the server’s assigned Steam ID.
I didn’t really look into this method because it wouldn’t have worked for my particular use case. All I needed the Online Subsystem Steam for was to get an authentication token for the current user, which the game client would send to our backend systems. It just happens that in order to use the Unreal’s Steamworks support (ie. the OSS plugin) to do this, you have to swap out your online subsystem to use the Steam one. That’s just how the plugin was designed. If you don’t use the same online subsystem on the client as on the server, the two will refuse to talk.
Since I didn’t need any server-side integration of Steam whatsoever, the solution I actually used was to create my own, minimal Unreal plugin which imported the Steamworks SDK manually and only exposed the bits of the API that I needed. I guess if you want a job doing well, you have to do it yourself!