准备开始:开发 Linux 项目

本页面的内容:

为什么选择交叉编译

为便于游戏开发者(通常熟悉以 Windows 为中心的工作流)针对 Linux 进行开发,因此选择交叉编译。当前只支持 Windows,Mac 用户须使用 本地编译 。我们支持并测试 Linux-x86_64,但也提供库和工具链(clang-3.5.0-arm)便于您进行 Linux ARM 编译(原始 Raspberry Pi 和 up)。需要在 UBT 中进行(少量)代码修改。

我们将假定您以 x86_64 Linux 为目标,但以下的大部分方法也适用于 ARM 的编译(除工具链不同外)。如您需要不同版本的工具或需要针对不同的构架,可 自行编译 工具链。

设置工具链

添加一个名为 LINUX_ROOT 的环境变量(Control Panel->System->Advanced system settings->Advanced->Environment variables),此变量的数值为工具链的绝对路径(不带最后的反斜线):

image00.png

确定变量已设置后,重新生成 UE4 项目文件(使用 GenerateProjectFiles.bat)并重启 Visual Studio。操作完成后,“Linux”在 Win32/Win64 配置中可用,可对其进行交叉编译。

设置 Linux 的打包

注意:二进制发布只能打包纯内容型项目。如要打包 Linux 的代码项目(或拥有非默认第三方插件的项目),需设置一个 source build。如项目为纯内容型,便无需进行编译,因为 UE4Game 和 CrashReportClient 的 Linux 二进制文件为 bundle。

需要编译以下目标,以便进行 Linux 平台打包:

Linux:

  • CrashReportClient

  • UE4Game(项目为纯内容型。否则编译项目即可)

Windows:

  • 编辑器自身(它为编译 Linux 目标模块所必需,以便让虚幻编辑器和虚幻前端了解如何进行 Linux 游戏的烘焙/打包)。

  • UnrealPak 和 ShaderCompileWorker(您也许已将它们编译,再次提及以防遗漏)。

Linux 打包

打包项目的最简易方法:将其在编辑器中打开,然后使用 File->Package To->Linux(假定在之前的步骤中已安装交叉工具链,Linux 目标模块已针对此编辑器进行编译 - 如列表中没有 Linux,则以上步骤中可能存在问题)。一段时间后(时长取决于使用的项目,样本项目耗时较短)选定的打包目录中便会出现游戏资源和二进制文件。

点击“Show Output Log”链接即可查看打包过程详情。如出现错误信息“unable to find UnrealPak or ShaderCompileWorker”,须查阅上文中针对 host(windows)平台进行编译的部分。

执行 scp 命令或将其复制到目标电脑(如您了解如何操作,加载 Samba share。目标电脑磁盘空间较低为佳,可减少迭代次数),对目标可执行文件(存放在 LinuxNoEditor//Binaries/Linux/ 目录下)执行 chmod +x 命令并运行该文件。

针对 Linux-ARM 平台进行修改

如您使用的是 Linux-ARM 交叉编译工具链,在运行 GenerateProjectFiles.bat 之前需要在 UE4 源代码中对以下文件进行编辑:

.../UnrealEngine/Engine/Source/Programs/UnrealBuildTool/Linux/UEBuildLinux.cs

注释掉以下代码行:

static private string DefaultArchitecture = "x86_64-unknown-linux-gnu";

然后注释掉下方的 linux-arm 代码行:

//static private string DefaultArchitecture = "arm-unknown-linux-gnueabihf";

还需额外执行一个步骤,使打包项目可在 Linux-ARM 平台上运行。假定打包项目保存在 \foo\bar\SunTemple_Linux 路径下,打开以下路径:

\foo\bar\SunTemple_Linux\LinuxNoEditor\Engine\Binaries\Linux

并用以下路径中的版本替换 libopenal.so.1:

...\UnrealEngine\Engine\Source\ThirdParty\OpenAL\1.15.1\lib\Linux\arm-unknown-linux-gnueabihf\libopenal.so

其中,“...\UnrealEngine”是 UE4 源代码的路径。须将 libopenal.so 重命名为 libopenal.so.1。

现在即可把项目拷贝到目标电脑,对目标可执行文件执行 chmod+x 命令,并按上述方法运行此文件。