question

Cedric Neukirchen avatar image
Cedric Neukirchen asked

GSDK - UE4 4.22 - Linux Server having unresolved externals

Hey everyone,

currently trying to get the GSDK working for our Linux UE4 Server.
I compiled the GSDK for Linux (.so) via SSH just fine and also added it to UE4 via the Build.cs of the project. For DevelopmentEditor Linux it loads fine, however all Server Targets seem to not properly load the library. While the loading itself doesn't seem to throw any errors, the library functions end up being unresolved:

1>ld.lld.exe : error : undefined symbol: Microsoft::Azure::Gaming::GSDK::registerShutdownCallback(std::__1::function<void ()>)
1>  >>> referenced by HLPlayFabSubsystem.cpp:84 (E:/UE4/Perforce/Clients/----/----Game_4_19/Source/----/Private/Core/Subsystems\HLPlayFabSubsystem.cpp:84)
1>  >>>               E:/UE4/Perforce/Clients/----/----Game_4_19/Intermediate/Build/Linux/B4D820EA/----Server/Development/----/HLPlayFabSubsystem.cpp.o:(UHLPlayFabSubsystem::NotifyStart())
1>
1>ld.lld.exe : error : undefined symbol: Microsoft::Azure::Gaming::GSDK::registerMaintenanceCallback(std::__1::function<void (tm const&)>)
1>  >>> referenced by HLPlayFabSubsystem.cpp:85 (E:/UE4/Perforce/Clients/----/----Game_4_19/Source/----/Private/Core/Subsystems\HLPlayFabSubsystem.cpp:85)
1>  >>>               E:/UE4/Perforce/Clients/----/----Game_4_19/Intermediate/Build/Linux/B4D820EA/----Server/Development/----/HLPlayFabSubsystem.cpp.o:(UHLPlayFabSubsystem::NotifyStart())
1>

The "----" in aboves paths are commented out project name.

I tried checking what the difference in compiling for Server and Editor is, but I can't really come up with anything stopping the library from loading properly. I did see that Epic stops CEF3 from being compiled, but I'm not sure what that is and if it affects PlayFab's GSDK.

Quick help would be appreciated!

Cheers,
Cedric
unreal
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

·
Sarah Zhang avatar image
Sarah Zhang answered

Currently, we don't have a Linux test environment to test the GSDK sample. We also don't have the public GSDK plugin for UE4. You may consider taking a look at the cpp version of GSDK on https://github.com/PlayFab/gsdk/tree/master/cpp and there is a test app you can try.

An other question is, do you run the server locally? When we locally debug a GSDK game server sample on Windows, we should use the MockVmAgent to run it. It can't be run directly. And the MockVmAgent hasn't supported the Linux servers yet. It may be updated in the future. Now, if we want to test our Linux servers, we need to create a Linux build and deploy it. You can check this doc for more info.

3 comments
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Cedric Neukirchen avatar image Cedric Neukirchen commented ·

Hello Sarah,

thanks for the quick response. I might have been too vague with my 3am question.

>>> Currently, we don't have a Linux test environment to test the GSDK sample. We also don't have the public GSDK plugin for UE4

We are aware of that and using the GSDK CPP already.

>>> An other question is, do you run the server locally?

We aren't running the Server at all, it would end up on your Server 2.0 system.
But that's all not the issue. The problem is that UE4's Linux Server Target doesn't properly load the already compiled GSDK Linux Library.

I already have the GSDK Linux compiled via SSH and I have a .a or .so file.
We also have the Includes all setup. It works fine for a normal Linux Editor Target.

But targeting Server (which we kinda need :P) produces aboves errors while still executing the code to load the library in the build.cs.

I just need to get rid of this UE4 Linux Server compile error when including the GSDK CPP Linux Library.

0 Likes 0 ·
Sarah Zhang avatar image Sarah Zhang Cedric Neukirchen commented ·

We have tested it on Windows, but can't reproduce these issues. And temporarily we lack a Linux test environment.

Currently, there are no known successful cases about Linux Unreal Game Server that integrated with GSDK. We still need to wait for PlayFab official support. You can keep an eye on it. We will let you know if we have made progress.

0 Likes 0 ·
Cedric Neukirchen avatar image Cedric Neukirchen Sarah Zhang commented ·

Hello Sarah,

any news on the original problem? We resumed the creation of a Linux DedicatedServer with PlayFab's GSDK and we still run into the unresolved symbol errors.

0 Likes 0 ·

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.