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?
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
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
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).