写点什么

如何在 P4 中管理 Unreal Engine 代码

  • 2021 年 11 月 29 日
  • 本文字数:2257 字

    阅读完需:约 7 分钟

准备引擎开发环境

下载代码

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

1. 登陆 www.github.com

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

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

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 相关文件



将 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 章节里下载好的代码。



注意:工作区选项里请勾选 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 分支用于代码开发。

其他用户下载代码时,无需再次从 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


立刻联系我们(Perforce 中国授权合作伙伴、Atlassian 全球白金合作伙伴【龙智】,电话:400-7755-506 邮箱: marketing@shdsd.com)了解更多关于使用 Jira, Confluence, Perforce Helix Core, Helix QAC, Hansoft, Methodics, Helix ALM 等产品的信息。我们将为您提供白皮书和其他资源,我们也会指导您运用 Perforce 系列产品来开展业务。

用户头像

还未添加个人签名 2021.05.18 加入

还未添加个人简介

评论

发布
暂无评论
如何在P4中管理Unreal Engine 代码