Dedicated server, server gamemodule and steamworks API

I´ve created a server gameplay module for our server side gamemodes following Ben Zeigler’s instructions here: Dedicated server code split from client code - C++ - Unreal Engine Forums
and built my dedicated server using Rama’s guide: A new, community-hosted Unreal Engine Wiki - Announcements - Unreal Engine Forums
Everything worked as expected, but when we integrate the Steamworks API then we have an issue.
If I build my dedicated server and run it it I get this:

If I open steam client and then start the dedicated server everything “works”

So:
1- Why the dedicated server requires the steam client to be runing? It’s not supposed to work that way, It should simply register the server within Steam master server.
2- Why it’s giving the user the option to run -NOSTEAM? Why would you want to let your customers run no-steam dedicated servers?

  1. Have a look at the source. The 64-bit library isn’t being loaded at this time. In FOnlineSubsystemSteamModule::LoadSteamModules:

#if 0 //64 bit not supported well at present, use Steam Client dlls
		// Load the Steam dedicated server dlls (assumes no Steam Client running)
		if (IsRunningDedicatedServer())
		{
			SteamServerDLLHandle = FPlatformProcess::GetDllHandle(*(RootSteamPath + "steamclient64.dll"));
		}
#endif

  1. Again, check the source. This command line switch is only available in non-shipping builds. In LoadSubsystemModule:

#if !UE_BUILD_SHIPPING && !UE_BUILD_SHIPPING_WITH_EDITOR
	// Early out if we are overriding the module load
	bool bAttemptLoadModule = !FParse::Param(FCommandLine::Get(), *FString::Printf(TEXT("no%s"), *SubsystemName));
	if (bAttemptLoadModule)
#endif

Thank you


//64 bit not supported well at present, use Steam Client dlls

What does that mean? We have to wait until it’s fixed? o we have to implement this by ourselves?

That comment is for 64-bit Windows builds, not Linux. In the master branch (and only the master branch), it does handle loading the Steam API on Linux: https://github.com/EpicGames/UnrealEngine/blob/master/Engine/Source/Runtime/Online/OnlineSubsystemSteam/Private/OnlineSubsystemModuleSteam.cpp

I’m not sure myself, as we only use the client-side part of the Steamworks API. But I would venture Epic may have encountered some problems implementing server functionality using the 64-bit Steamworks DLL.

I replied to you on answerhub. As long as everything is correct, it should be working. The clientside Steam functionality isn’t loaded on Dedicated Servers, per c++ (and I tested via running editor as dedicated).

But it’s not working and I didn’t touch the engine code. I think that the code posted by cmartel shows why

I´ve just tried building the x86 dedicated server and it has the same behavior :frowning: