Announcement

Collapse
No announcement yet.

Dedicated server, server gamemodule and steamworks API

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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: https://forums.unrealengine.com/show...ll=1#post95759
    and built my dedicated server using Rama's guide: https://wiki.unrealengine.com/Dedica...ows_%26_Linux)
    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:

    Click image for larger version

Name:	3170d2640b.png
Views:	1
Size:	21.0 KB
ID:	1144144

    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?

  • replied
    I´ve just tried building the x86 dedicated server and it has the same behavior
    Last edited by Sveitar; 03-02-2015, 05:34 PM.

    Leave a comment:


  • replied
    Originally posted by Byte1 View Post
    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

    Leave a comment:


  • replied
    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).

    Leave a comment:


  • replied
    Originally posted by Storngrir View Post
    Code:
    //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?
    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.

    Leave a comment:


  • replied
    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/UnrealE...oduleSteam.cpp

    Leave a comment:


  • replied
    Thank you Camille

    Code:
    //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?

    Leave a comment:


  • replied
    Originally posted by Storngrir View Post
    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:

    Code:
    #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
    2. Again, check the source. This command line switch is only available in non-shipping builds. In LoadSubsystemModule:

    Code:
    #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
    -Camille

    Leave a comment:

Working...
X