Steam Dedicated Server API failed to initialize after upgrading project from 5.6.0 to 5.7.1

This question was created in reference to: [Steam dedicated server api not working/missing Steam DLL’s in dedicated server [Content removed]

Hi,

We are attempting to upgrade our project from 5.6.0 to 5.7.1, however after upgrading the engine our dedicated server no longer works. We had a similar issue when moving from 5.4.4 to 5.6.0 that was fixed in the referenced thread, however, applying the fixes that worked for us in 5.6.0 do not resolve it in 5.7.1.

When we attempt to start up our server we are met with the following errors and warnings. These stop the server from starting up correctly and stop clients from joining and playing the game. We are using the same working DefaultEngine.ini file that uses SteamSockets and have applied the fix shelved at CL:44788599 but these still seem to cause the same issues:

[Image Removed]

[Image Removed]

We are aware of the issue outlined on the bug tracker that the “SteamNetDriver” and “SteamNetConnection” classed have been moved from the “OnlineSubsystemSteam” module to the “SocketSubsystemSteamIP” module (https://issues.unrealengine.com/issue/UE-297279) which we applied fixes for based on the referenced thread.

Any help with this issue would be greatly appreciated and I will provide a repro project for this issue, as well as a full log file and the games DefaultEngine.ini files. If any additional info is required please let me know!

[Attachment Removed]

Steps to Reproduce
To reproduce the issue, you can download the provided repro and add it to a 5.7.1 source version of the engine. Then package the project using the server target and add the steam_appid.txt file to the binaries folder containing the server executable. When starting up the server the issues outlined in this thread will occur and the server will not start correctly or be visible to clients to join. You can also apply the shelved fix from the reference thread that can be found at CL:44788599, however the same issues will still occur.

Note: I have removed our Steam App ID from the test project and the linked .ini files, and replaced it with the default Steam App ID of 480.

[Attachment Removed]

Hi,

This issue has been reported earlier and resolved in CL 48152108. Let me know if you don’t have access to our Perforce and I can provide the fix in text.

-Jake

[Attachment Removed]

Hi Jake,

Great we’ll take a look at that CL then and see how it goes, I’ll respond again once we’ve tested it and let you know how it went!

Thanks,

Cristian

[Attachment Removed]

Hi Jake,

After testing with that CL in the project I still appear to get the error, it now outputs: LogSteamShared: Warning: Steam Dedicated Server API failed to initialize: No STEAMUGC_INTERFACE_VERSION020. I’ll attach the full log to this message.

Thanks again,

Cristian

[Attachment Removed]

Hello,

Steam doesn’t well document these error messages but based on the text this leads me to believe ther’s a mismatch between the SDK you’re linking to and the actual DLL thats ran (It’s saying that version 20 was not found, implying it only goes up to 19 or below). Can you confirm that the steam DLL being packaged with the server is indeed the Steam 1.61 DLL?

-Jake

[Attachment Removed]

I believe the project was previously using 1.57 in 5.6.0, I haven’t changed any of that post upgrade so it may still be using that version! I’ll have a check tomorrow and let you know, do you have a link to the documentation around changing this/confirming it is running on the correct version?

Thanks again,

Cristian

[Attachment Removed]

I’m not sure the best way to confirm it but the file size for 1.57 is 289kb for the steam_api64.dll and for 1.61 it is 313kb. The logic is all controlled by Engine/Source/ThirdParty/Steamworks/Steamworks.Build.cs, you can also try changing the version number in that file to 1.57 which will recompile your server against the 1.57 headers (although the engine has been updated to 1.61 so we cannot guarantee backwards compatibility)

-Jake

[Attachment Removed]

After checking this morning the project is deifnitely being packaged with 1.61; the Steamworks.Build.cs file points to 1.61 and, in the server build, I can see it is using 1.61 and the steam_api64.dll is the same size as you mentioned above, I’ve attached an image of the Steamworks folder in the server build. Therefore it appears to be a different issue.

[Image Removed]

We did re-add the required DLL files (as oultined in this documentation: https://dev.epicgames.com/documentation/en-us/unreal-engine/online-subsystem-steam-interface-in-unreal-engine), however, this made no difference so I’m assuming the files we previously added were correct. I also attempted to revert the project back to 1.57 by changing the Steamworks.Build.cs to target that version, and adding the correct DLL files, but this did not work as 5.7 would not compile as it depends on 1.61 functionality.

Thanks again,

Cristian

[Attachment Removed]

Hi Jake, just following up on this as I am back to work now and looking to get this resolved.

Thanks again and hope you had a great winter break,

Cristian.

[Attachment Removed]

Hope you had a great break as well, sorry as I left for break when you left your last response.

Last thing to guarantee it isn’t a version issue with Steam, can you confirm that in SteamSharedModule.cpp 's function GetSteamModulePath that STEAM_SDK_VER_PATH is properly pointing to Steamv161?

Thanks, -Jake

[Attachment Removed]

No worries!

I’ve checked the steam shared module and it is using the STEAM_SDK_VER_PATH, which I’m guessing is the one defined in Steamworks.build.cs and that I can confirm is pointing to 1.61. I’ll attach a screenshot of this for you to confirm I am checking the correct thing but this is the only definition of STEAM_SDK_VER_PATH I can find in the source files:

[Image Removed]Thanks,

Cristian

[Attachment Removed]

As long as you’ve built the server in your current workspace, you should be able to see the generated defines in a file like this Engine\Plugins\Runtime\Steam\SteamShared\Intermediate\Build\Win64\x64\UnrealEditorGPF\Development\SteamShared\Definitions.SteamShared.h

If you can’t find it, then maybe adding something that debug prints the SteamShared info and/or deleting the other Steam SDKs from your local dir and confirming the behaviour is still the same.

I just want to be 100% sure that you are absolutely loading the 161 SDK because else there isn’t really any a great error reason as we don’t have that level of config in the engine for Steam.

-Jake

[Attachment Removed]

I’ve navigated to that path provided and this is the document, from what I can see it looks to be targets Steam v161 with #define STEAM_SDK_VER TEXT(“1.61”) and #define STEAM_SDK_VER_PATH TEXT(“Steamv161”)! I’ll attach the full .h file to this reply too for you!

Thanks again,

Cristian

[Attachment Removed]

Thanks, let me talk to some other engineers and will circle back in a bit.

-Jake

[Attachment Removed]

No worries, thank you so much for all the help!

Cristian.

[Attachment Removed]

Thank you for your patience.

Unfortunately the overwhelming consensus is that there’s an issue with the binaries. “No STEAMUGC_INTERFACE_VERSION020” comes from Engine\Source\ThirdParty\Steamworks\Steamv161\sdk\public\steam\isteamugc.h where it defines STEAMUGC_INTERFACE_VERSION as 020 (v157 has this set to v17), the intent being that a future Steam dll will be able to load the exact same interface as previously compiled with to ensure backwards compatibility. The Steam v1.61 DLL should absolutely without a doubt contain a UGC interface version of v20 as that is specified in the Steam public headers.

My recommendation for possible investigation/solutions:

1) Re-download the Steam DLLs from Valve manually ( Steamworks SDK (Steamworks Documentation) ) and replace all of the DLLs in the Unreal folder with yours

2) Update the Steam app on the target PC/server

3) Uninstall and reinstall Steam on the target PC/server

4) Try a new UE project Steam build and see if that encounters the same error.

At this point since I don’t have access to Steam internals I will have to recommend you reach out to Valve for further support. I wish we could assist further but at this time we do not have reports of this error from other licensees nor can we reproduce internally.

-Jake

[Attachment Removed]

Hey Jake,

Thanks for looking further into this for me. I’ll try those steps below as well as downloading a fresh version of the engine from source and making sure that is all good. I’ll let you know my findings anyway but like you said I may need to reach out to valve!

Thanks again and all the best,

Cristian.

[Attachment Removed]

I’ve given everything mentioned above a try and also completely redownloaded the release branch from git and used that and I still get the same issues, so I’ll have a chat with the team next week and see whether we want to chase this up with Valve.

Thanks and hope you have a great weekend,

Cristian.

[Attachment Removed]

Can you go into FWindowsEOSSDKManager::Initialize and comment out all the code that isnt Super::Initialize()? I’m digging through other community posts and I see one with a similar problem you have and that was their stated solution. Let me know if that works for you.

-Jake

[Attachment Removed]