Now then!...
UE 27.2, Docker, Windows 64, Latest GSDK plugin (as of 09/05)
Hi.
We are building a server with integrated GSDK, following all the latest documentation and tutorials.
We are using Docker and following the Local Containerization guide to build and test the image and the server.
Aside from the official docs I have read all of these threads to the finest detail:
https://community.playfab.com/questions/32588/server-build-unhealthy-ue4-dedicated.html
https://community.playfab.com/questions/52890/containerized-server-not-connectable.html
..and there were some more. I will not go into every detail that we solved along the way, but we are now having two problems. The other 3 points are descriptive and might be relevant in the context:
1) Our server process.exe and serverProcessBinary.exe do not launch together.
So, when you launch a server locally, it will have two processes - one as the 'GameServer.exe' which is in the root folder of the build and the 'GameServerBinary.exe' which is in your binaries folder respectively. The 'shell' process has to be launched first and then the binary. This is the only way that the server will actually launch. We had the infamous 'waiting for heartbeat' due to this and after exploring the container processes with console commands we solved it by launching manually first the 'shell' and then the 'binary' part of the server with a .bat file.
This is a solution, but it is not ideal and does not explain why the server isn't launching correctly on its' own.
Screen with a local container in Active state after manual binary launch
We also tried renaming the binary so that the .exe files have the same name, as the 'shell' process has to find a binary with the same name (in theory), but this did not work either. I understand that various build configurations can make the binary.exe differ in name, but how can we account for this?
Regardless, we could not find a way to make both processes launch together as they would in a local server build. Is there something we are missing or is this a container/playfab issue? As there have been many unsuccessful attempts and unanswered posts on the forums.
2) Another issue is we do not get any log files generated even after all the above-mentioned steps. We launch both commands in our .bat file with '-log' flags, but the container-generated folder never contains a 'Saved' folder with logs as it should after it has ran. If it goes to 'Active' state and then exits after it has not received a connection after the heartbeat timeout, it should generate a log file from the Unreal run, correct? Could this be somehow related to the fact that we run the processes separately and the second one (the actual server with engine initialization part) does not get the log command for some reason?
3) The ListDll executables do not work in container mode - meaning it will never show anything for any process that is running in it. While it executes perfectly fine with any local processes. Can someone confirm/deny this on developer end?
Screen with ListDlls.exe tests
4) About additional .dll dependencies. This is just not actual anymore. Not with this generation of the Unreal engine and images. The image for the PlayFab cloud container contains all of the standard OS .dll files and has no problem getting to 'Active' state without any addition in your C++ server code.
5) Concerning the PORT numbers in the LocalMultiplayerAgent MultiplayerSettings.json. Can someone explain what exactly is the 'NodePort' and how does it differ from what the 'AgentListeningPort' does?
Because I have found in numerous posts something about changing these, but we never changed them in any of the above steps and they both still remain 56001, even though @SethDu has once mentioned that they cannot be shared. What is the potential internal error that this may cause?
Thank you.