赞
踩
2023-01-11 更新了UE5.1源码编译以及打包 LinuxServer的内容
:::
:::danger UE5.1补充内容
:::
:::warning
:::
:::danger VS2022
UE5.1版本及以后的新版本源码要以VS2022来编译,如果使用VS2019
当你运行GenerateProjectFiles.bat时,虽然不会报错,但会提示VS2019不能生成 .NET 6的项目文件,后续在VS2019里面编译源码可能会有warning,也可能会影响到Window打包
如果已经安装VS2019,只需要去Visual Studio Installer里安装一个VS2022即可,具体配置往下继续
:::
:::warning
安装时出现共享组件、工具和SDK的路径不能修改,是因为此前可能已经安装过Visual Studio,需要修改注册表解决问题
解决步骤:
:::
:::danger
UE5需要选的东西会更多,但默认先选择和UE4一样的使用C++的游戏开发
这里注意一个细节:进入你的Windows设置 -> 系统 -> Window规格内查看你的操作系统版本
我的是Win11系统,版本号是22621.963
前面UE4里面的WindowsSDK的选项应该改选为Windows11 SDK 22621,找不到对应版本号的也没关系,VS2022会默认选好的Windows11 SDK 20000,这个也能用
至于其他的选项,等正式编译源码的时候,VS2022会提示你还需要安装哪些
:::
:::tip 可选步骤
:::
:::danger
以上VS2022里也适用
:::
:::tip 可能重要
:::
:::danger
以上VS2022里也适用
:::
:::danger
下载交叉编译器,千万别去官方中文的虚幻文档,里面给的交叉编译工具链接版本是错的,应该默认进入官方英文的文档网站内下载
博客使用的是UE4.27.2,下载文档内提供的链接,并确保是-v19
的版本,如果不是就进错网站了,正确的网站:UE4.27.2 交叉编译
:::
:::danger
UE5.1要用的是**-v20版本,注意先卸载前面的-V19**
网址:UE5.1交叉编译
:::
直接默认安装即可,也可以选择安装路径
cmd验证:%LINUX_MULTIARCH_ROOT%x86_64-unknown-linux-gnu\bin\clang++ -v
无效需手动配置环境变量
LINUX_MULTIARCH_ROOT
安装目录\v19_clang-11.0.1-centos7\x86_64-unknown-linux-gnu\bin
安装目录\v20_clang-13.0.1-centos7\x86_64-unknown-linux-gnu\bin
:::warning
交叉编译器安装和配置完成后,需要重启电脑
:::
:::tip 省略步骤
github账号
加入Epic组织
选择UE4.27.2 Release下载
:::
Setup.bat配置表:
Usage: GitDependencies [options] Options: --all Sync all folders --include=<X> Include binaries in folders called <X> --exclude=<X> Exclude binaries in folders called <X> --prompt Prompt before overwriting modified files --force Always overwrite modified files --root=<PATH> Set the repository directory to be sync --threads=<N> Use N threads when downloading new files --dry-run Print a list of outdated files and exit --max-retries Override maximum number of retries per file --proxy=<user:password@url> Sets the HTTP proxy address and credentials --cache=<PATH> Specifies a custom path for the download cache --cache-size-multiplier=<N> Cache size as multiplier of current download --cache-days=<N> Number of days to keep entries in the cache --no-cache Disable caching of downloaded files Detected settings: Excluded folders: Mac, Android, Linux Proxy server: none Download cache: disabled Default arguments can be set through the UE4_GITDEPS_ARGS environment variable. Installing prerequisites...
该博客的配置:(截取的一段,只有**set PROMPT_ARGUMENT=**需要修改)
set PROMPT_ARGUMENT=
for %%P in (%*) do if /I "%%P" == "--prompt" goto no_prompt_argument
for %%P in (%*) do if /I "%%P" == "--force" goto no_prompt_argument
set PROMPT_ARGUMENT=--prompt --threads=20 --cache=E:\UrealEngineSource\UE4.27.2\Cache
:no_prompt_argument
--threads=20 # 加快下载速度,不宜过高
--cache # 将下载的源码文件单独保存到指定位置,方便传给其他人和玩坏了,不用全删了重新下载了
--exclude # 排除不想要的模块
–exclude可选参数:
平台参数:Win32, Win64, osx32,osx64, Linux, Android, IOS, HTML5
VS版本参数:VS2012,VS2013,VS2015
尽量别排除VS版本的参数,平台参数可以排除不要的,该博客默认不加入 --exclude,全要了
:::danger
以上UE5.1也适用,但要注意 --cache=
的路径
尽量别用--exclude
:::
上面配置好Setup.bat文件后:
:::danger
以上UE5.1也适用
:::
:::warning
:::
双击UE4.sin文件,根据上面的VS2019配置,此时默认管理员模式
在解决方案中依次选择:
上面的步骤完成后,不关闭VS2019,建议进行下一步:
AutomationTool、UnrealBuildTool、UnrealFrontend
:::danger
这里补充一个细节:BuildConfiguration.xml
源码引擎安装目录\UE5.1\Engine\Saved\UnrealBuildTool
C:\Users\用户名\AppData\Roaming\Unreal Engine\UnrealBuildTool
两处都有改:后续可以加快UE5的编译速度可能吧,应该,或许,大概,Maybe
我这里提供我自己用的:
<?xml version="1.0" encoding="utf-8" ?>
<Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">
<ParallelExecutor>
<ProcessorCountMultiplier>2</ProcessorCountMultiplier>
<MaxProcessorCount>16</MaxProcessorCount>
<bStopCompilationAfterErrors>true</bStopCompilationAfterErrors>
</ParallelExecutor>
</Configuration>
具体用法可以去上网查BuildConfiguration.xml
还可以安装一个UnrealVS插件,说是可以快速编译:可能吧,应该,或许,大概,Maybe
插件所在的目录:E:\UrealEngineSource\UE5.1\Engine\Extras\UnrealVS
里面有两个选项:VS2019和VS2022,具体看你选择
直接双击安装就可以,后面解决方案里找到UE5,右键就可以看到UnrealVS Quick Build
:::
网上有的教程真的傻,非得打开UE4.sln在VS2019里面启动源码虚幻引擎
其实可以进如源码引擎目录:\Engine\Binaries\Win64
找到UE4Editor.exe
直接双击启动,或者创建快捷方式,放到方便使用的地方启动,和正常的Epic商城引擎没什么两样
:::warning
源码引擎编译完成后,先打开引擎看看打包功能是否出现⚠️标志
如果有,大概率是VS2019和交叉编译器没有配置好,缺失SDK,需要重新生成
如果没有,再往后继续看
:::
:::danger
以上UE5.1也适用
:::
:::danger
以下UE4 / UE5.1也适用,可能吧,应该,或许,大概,Maybe
注意几个可能出现的细节:往往到了这一步,打包LinuxServer不会有什么问题了,但你会发现打包Windows或者WindowsClient并没有打包出来
单独打包Windows或者WindowsClient,会看到类似一下的报错信息:
UATHelper: Packaging (Windows): ERROR: Game target not found. Game target is required with -cook or -cookonthefly
这种错误一般发生在C++项目,解决方法是:StackOverflow
复制项目名.Target.cs
粘贴并重命名项目名Game.Target.cs
修改内容参考如下:
using UnrealBuildTool;
using System.Collections.Generic;
public class 项目名GameTarget : TargetRules // 类名改一下
{
public 项目名GameTarget(TargetInfo Target) : base(Target) // 这里也改一下
{
Type = TargetType.Game; // 这里好像默认就是 Game,不用改了
DefaultBuildSettings = BuildSettingsVersion.V2;
ExtraModuleNames.AddRange( new string[] { "项目名" } );
}
}
删除项目内的Binaries
,DerivedDataCache
,Intermediate
右键项目名.uproject
,Generate Visual Studio Project Files
打开项目名.sln
,编译项目
重新打开项目,再次尝试打包Window
:::
你的云服务器公网IP:7777
,后面会说云主机的配置,也可以直接跳到博客5. 云主机防火墙配置,先拿到公网IPCreate Widget
,Add To Viewport
,GetPlayerController->SetShowMouse->ture
:::warning
注意:测试项目创建用的是不是源码引擎不重要,后面的[4.5 配置打包程序](#4.5 配置打包程序)要用源码引擎打开,具体后面会写
接下来会编译至少两次项目C++源码,目的不是打包,而是测试打包环境是否正常,如果不需要测试,可以直接进入打包环节
假设最终打包结果为:一个Linux Server,一个Windows Client
需要先打开项目文件的**.sln**,解决方案依次是分别编译一下两种配置:
Linux Server包:Development Server,Linux
Windows Client包:Development,Win64,如果Windows Client想打包成发行版,就选择Shipping,Win64,该博客选择Development
如果报错,例如:
:::
上面的是警告,需要注意看需求,选择合适解决方案的配置,接下来是打包LinuxServer前的准备工作
首先还算要打开项目目录下的**.sln**文件:
找到项目目录中的项目名Editor.Target.cs
文件
直接复制这个文件,在同级目录下,再重命名为:项目名Server.Target.cs
,打开
修改内容为:(博客的配置)
using UnrealBuildTool;
using System.Collections.Generic;
public class 项目名ServerTarget : TargetRules // 类名改一下
{
public 项目名ServerTarget(TargetInfo Target) : base(Target) // 这里也改一下
{
Type = TargetType.Server; // 这里的Editor 改为 Server
DefaultBuildSettings = BuildSettingsVersion.V2;
ExtraModuleNames.AddRange( new string[] { "项目名" } );
}
}
分别是public class Test01ServerTarget
,public Test01ServerTarget(TargetInfo Target)
,Type = TargetType.Server
修改完成后:
Binaries
,DerivedDataCache
,Intermediate
项目名.uproject
,Generate Visual Studio Project Files
项目名.sln
,编译项目首先找到项目目录下的**.uproject文件,右键Select Unreal Engine Version**,选择Soucre build开头的UE4源码引擎
生成一段时间后,双击**.uproject**文件打开源码引擎
配置打包程序:(目的是一次性同时打包出 LinuxServer和windowsClient两个包)
Launching UAT
)点击启动此描述文件,就可以打包了
:::danger
UE5这里好像没有WindowsNoEditor,选Windows或者WindowsClient
如果有问题,可以看[4.1 创建测试项目](#4.1 创建测试项目)上面的danger
提示
:::
:::tip 云主机/ECS/轻量应用服务器
随便哪家的云服务都行,系统最好安装Centos7,root密码随你,重要的是防火墙的配置:
:::
:::warning
博客省略了将文件上传到远端服务器的过程,反正把LinuxServer包压缩**.zip**格式比较简单操作,容易理解
上传的路径最好是普通用户,好像不允许root用户执行,下面会介绍新建一个普通用户unreal,将压缩包上传到unreal家目录
,也就是unreal@hostname ~
:::
先创建一个普通用户
useradd unreal
passwd unreal // 输入两次相同的秘密
cd /home/unreal
把压缩文件上传的当前目录
安装解压程序
yum install unzip
解压压缩包
unzip 压缩包
通过root设置执行权限
chmod +x 项目名称Server.sh
切换到普通用户unreal
su unreal
执行
./项目名称Server.sh -log
在本地端,打开WindowsNoEditor包的程序进行测试
注意:在Windows本地段关闭远程连接云服务的SSH,正在运行的Server服务会停止
解决方案:nohup,screen
博客采用最简单的nohup:
nohup ./项目名称Server.sh -log &
如果想终止这个服务:
su root
ps aux
// 找到 ./项目名称Server.sh -log 这个命令的进程,记住它的pid
kill pid
:::
先创建一个普通用户
useradd unreal
passwd unreal // 输入两次相同的秘密
cd /home/unreal
把压缩文件上传的当前目录
安装解压程序
yum install unzip
解压压缩包
unzip 压缩包
通过root设置执行权限
chmod +x 项目名称Server.sh
切换到普通用户unreal
su unreal
执行
./项目名称Server.sh -log
在本地端,打开WindowsNoEditor包的程序进行测试
注意:在Windows本地段关闭远程连接云服务的SSH,正在运行的Server服务会停止
解决方案:nohup,screen
博客采用最简单的nohup:
nohup ./项目名称Server.sh -log &
如果想终止这个服务:
su root
ps aux
// 找到 ./项目名称Server.sh -log 这个命令的进程,记住它的pid
kill pid
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。