P4管理Unreal Engine 代码

P4管理Unreal Engine 代码

来源:龙智    作者:李培        发布时间:2021-11-26 09:50

准备引擎开发环境

下载代码

unreal engine代码库在github上,要下载github上的源代码,需要具有github账号和虚幻引擎的订阅账号,并且将二者相关联。步骤如下。

1. 登陆www.github.com

2. 使用虚幻引擎订阅账号登陆unrealengine.com

3. 点击CONNECTIONS菜单-> ACCOUNTS->GITHUB

图片6

4. 一路按照提示操作,最终会收到一个github的通知邮件,邀请参加EpicGames Organization。点击链接,就可以看到源码页面。详情参见附录2

5. 虚幻引擎的代码地址在https://github.com/EpicGames/UnrealEngine,可以使用 github Desktop工具克隆下来。以Release分支为例,仓库大小约为12G,分支文件约为1.39G,文件个数约12万左右。若网络状况不佳,可能需要尝试几次才能下载下来。

安装开发工具

1. 虚幻引擎可以使用Visual Studio 2017,Visual Studio 2019。可以使用社区版,安装时注意需要勾选以下几个选项:

Game Development with C++

Unreal Engine Installer

Nuget Package Manager

2. 点击Setup.bat。脚本会自动去下载一些二进制文件依赖项,目前大约有4G左右

3. 点击GenerateProjectFiles.bat文件生成项目文件。这个脚本需要去查找机器上安装的Visual Studio版本。默认会查找最新的Visual Studio版本,如果希望指定版本,可以修改Engine\Build\BatchFiles\  路径下的两个批处理文件,指定正确的路径。

GetMSBuildPath.bat

GenerateProjectFiles.ba

说明:Visual Studio 2017还需要安装.netframwork 4.6.2,否则此步骤可能报错。

将代码提交到p4

p4ignore设置

因运行了1.2节的配置脚本后,引擎占用空间会膨胀到30GB左右,所以若全部提交到仓库里,会造成无谓的浪费。从github Clone下来的仓库会自带一个.gitignore文件,参照这个配置文件,略作修改,即可作为p4ignore配置。

如下图右侧是p4ignore.txt需要做的对应改动:

!*/ 这一行注释掉,因为这个写法在p4中含义与git的不同

增加*.xcodeproj/  代表忽略包含.xcodeproj字样的目录

[Dd]esktop.ini  显示展开为两行

增加.git  忽略.git 相关文件

图片9

将p4ignore.txt放到.gitignore所在目录,并在客户端执行p4 set P4IGNORE=p4ignore.txt后,则增加文件到p4时会自动加载p4ignore.txt文件中的忽略配置项。p4 ignores命令可以用来检查忽略配置的效果,例如:

-v 选项可以查看忽略文件展开后的效果

F:\GitHub\UnrealEngine>p4 ignores -v

#LINE 245:/Engine/Binaries/ThirdParty/USD/**

-v -i搭配可以查看一个文件为什么被忽略,或者为什么未被忽略

F:\GitHub\UnrealEngine>p4 ignores -v -i ./p4ignore.txt

f:\GitHub\UnrealEngine\p4ignore.txt not ignored by f:\GitHub\UnrealEngine\p4ignore.txt:68:!*.txt

提交文件到p4

1. 因为文件大约有12万个,为了加速提交,可以在服务器端打开并行提交配置。

any: net.autotune = 1

any: net.parallel.max = 10

any: net.parallel.submit.threads = 5

any: net.parallel.threads = 5

p4v侧也确认允许并行提交

2. 在p4上创建一个mainline 类型的stream用来管理引擎代码。

3. 创建一个工作区,根目录指向第1章节里下载好的代码。

图片4
图片11

注意:工作区选项里请勾选Allwrite,以便后续从github更新内容,否则p4会将本地的文件置为只读,后续更新依赖项时可能会报错。

4. 在p4v里,或者使用命令行,将引擎代码标记为add,在进行这一步之前,请确保参照2.1节内容,正确配置了p4ignore,否则会加入很多不需要的文件。

在引擎代码根目录下执行p4 add命令,为了加入名字带有特殊符号的文件,需要添加-f选项。

p4 add -f -c default ./…

在p4v里点击add增加文件时,如遇提示文件被忽略,或者文件名带有特殊符号,点击确认继续添加即可。

5. 点击submit按钮或者在命令行上执行p4 submit -d “descripton”, 即可提交成功。默认使用5线程提交,若服务器性能较好,网络带宽充裕,也可以启用更多线程提交。

使用引擎代码

1. 分支策略

为了方便后续更新引擎代码到p4,不直接在原始分支上进行修改,可以新创建一个分支用于代码修改,例如:新建一个ue_edited分支用于代码开发。

图片12 1

其他用户下载代码时,无需再次从Github上下载巨大的repo库(超过10G),仅需直接从p4上下载ue_edited分支(约1.3G)即可。开启多线程sync后,一两分钟即可下载完成,比直接从Github下载速度有很大提高。

2. 更新github上的修改

在章节1.1下载github代码的机器上,将github上相应分支的最新修改获取(fetch或者pull)下来。确保2.1中提到到p4ignore.txt文件存在,并妥善设置了P4IGNORE。在p4v中点击“reconcile offline work…”, 或者在命令行上执行reconcile命令,可以将更新的文件自动识别出来。

p4 reconcile -f -m -n f:\GitHub\UnrealEngine\Engine\…

识别之后,可以提交到p4仓库的ue分支里。

说明:提交p4后,如果本地有大量文件的修改日期发生变化,则reconcile操作不得不对所有发生变化的文件进行hash计算,这个操作可能非常耗时。所以不要在章节1.1下载github的机器上进行分支切换等操作。

3. 将ue分支的更新merge到ue_edited分支。

附录:

  1. https://docs.unrealengine.com/4.27/zhCN/ProgrammingAndScripting/ProgrammingWithCPP/DownloadingSourceCode/

  2. https://www.unrealengine.com/en-US/ue4-on-github?sessionInvalidated=true