I think I’m doing a whole bunch of things wrong here because I don’t understand the relationship between a built executable and the surrounding project directory.
Setup
PC / source build at SHA 69b5693 (~ 4.4.0)
Steps
- Build a development server dedicated server executable for Win64 (specific steps: piinecone — Building a dedicated server in Unreal Engine 4)
- Test
- Build a development server dedicated server executable for Linux
- (using git bash on windows)
scp [MyGame]Server [my remote machine]
(a Google Cloud Debian VM, in this case) - On the remote machine:
chmod +x [MyGame]Server
./[MyGame]Server
I’ve also tried building a shipping server instead of a development server. The output is different but the result is essentially the same.
Result
With the development server build:
user@server:~/dir$ ./[MyGame]Server
Using binned.
Increasing per-process limit of core file size to infinity.
C:\Users\me\code\UnrealEngine\Engine\Source\Runtime\Core\Private\Misc\OutputDevice.cpp(203): Fatal error:
Assertion failed: HasFoundDataDirectory [File:C:\Users\me\code\UnrealEngine\Engine\Source\Runtime\Core\Private\Internationalization\Internationalization.cpp] [Line: 298]
ICU data directory was not discovered:
../../../home/Content/Localization/ICU
../../../Engine/Content/Localization/ICU
Stack:
[Callstack] 02 0x00000000013cd1cc
[Callstack] 03 0x00000000012f09f9
[Callstack] 04 0x00000000012edbab
[Callstack] 05 0x00000000012ef163
[Callstack] 06 0x000000000133b0ab
[Callstack] 07 0x00000000014c2127
[Callstack] 08 0x00000000014c36f5
[Callstack] 09 0x00000000012b77f8
[Callstack] 10 0x00000000012ba5f9
[Callstack] 11 0x00000000012bea07
[Callstack] 12 0x00007f8f1275aeed
[Callstack] 13 0x00000000012b5f8c
Signal 11 caught.
EngineCrashHandler: Signal=11
Starting ../../../Engine/Binaries/Linux/CrashReportClient
Aborted (core dumped)
With the shipping server build:
Using binned.
4.4.0-0+UE4 7038 3077 385 0
Exiting abnormally (error code: 1)
The number of early failures makes me think that I’m just missing a bunch of stuff and need to SCP more than just the executable itself, it’s just not clear to me yet what that stuff is, exactly. For example, the first few missing paths appear to exist only in the Engine, not in the project source, so it seems like the build didn’t include everything that it needs to stand alone.