question

Dan Bliss avatar image
Dan Bliss asked

UE4 Dedicated Server running on docker container exits with code 1

Hello. I've recently been attempting to get my Unreal Engine dedicated server working on Playfab. However, when uploading to the site, the VM enters a "TooManyServerRestarts" state, and all servers are stuck on "Pending Heartbeat." Running the program on a docker container exits with code 1.

Running the program locally works fine, and running it outside of a container with MockVMAgent also works.

To integrate the server, I've followed the instructions posted here: https://docs.microsoft.com/en-us/gaming/playfab/features/multiplayer/servers/playfabgsdk_guide

I've also tried changing the VerifyPeer value to True, no results.

Searching threads most resulted in missing DLL files. I've been messing around with that, moving files over to the root folder, no dice.

I'm going to keep poking around, but I've practically run out of ideas. Any help or tips is greatly appreciated! Thanks in advanced!

Title ID: D0805

Unreal Engine Version: 4.25.4 (Source Build)

GDSK Version: 0.7.200221

unrealCustom Game Serversmultiplayer
2 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.

Rick Chen avatar image Rick Chen ♦ commented ·

Yes. To run properly in container mode, your zipped project must contain any system DLLs that are not included in the container image. Have you followed this document: Determining required DLLs that need to be included in the asset package to check the required system DLLs and add those DLLs to your project? Did you accidentally zip a folder within your zipped project?

0 Likes 0 ·
Dan Bliss avatar image Dan Bliss Rick Chen ♦ commented ·

Hello, thanks for the response!

I've been working on that, I got a list of every .DLL in the server image in System32, and the list of the .DLLs that the .exe needs. All the DLLs appear to be accounted for. In addition, I enabled a feature in UE that packages any local dependencies in the binaries folder of the server. Haven't been able to get any luck on that. I'll keep working on that, since I could be missing something, but I was wondering if there was any additional settings or plugins that you know of that would cause problems?

0 Likes 0 ·

1 Answer

·
Dan Bliss avatar image
Dan Bliss answered

I feel dumb, of course as soon as I post about it, I figured it out. It was a DLL, I'll type what I did here in case someone else stumbles into this problem

The culprit was a missing .DLL, specifically D3DCompiler_43.dll. UE4 ships with this .dll. Noticing this, I decided to add the dll in the Build.cs file as shown:

RuntimeDependencies.Add("$(TargetOutputDir)/D3DCOMPILER_43.dll", "$(EngineDir)/Binaries/ThirdParty/CEF3/Win64/d3dcompiler_43.dll", StagedFileType.SystemNonUFS);

For some reason, this .dll does not work. When launching the server, it instead decides to go to the one still installed in System32 by DirectX, which does not exist on the server container, something I overlooked.

Replacing the defective .dll inside my server's binaries with the one that is installed with DirectX made it work.

10 |1200

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

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.