使用Perforce同步构建

使用Perforce获得虚幻引擎4的构建指南。

Windows
MacOS
Linux

标识文件修订集的两种主要方法是通过标签和变更列表。在较高的级别上,标签标识构成引擎特定构建的所有更改,例如QA批准的构建,而变更列表标识特定的变更集。这两个概念之间的实际区别在Perforce网站的代码线和分支 页面上有更详细的解释。要同步到Epic的Perforce库,您需要了解以下内容:

  • 标签(Labels) - 要更新到经过QA批准的新版本,您需要同步到一个标签。

  • 变更列表(Changelists) - 要更新到对引擎的特定方面所做更改的特定集合,您将同步到变更列表。

P4V和库

P4V中的树窗格包含您的工作区(Workspace)和库树(Depot Tree)。在库树(Depot Tree)视图中,单击库(Depot)节点以展开并查看可用目录。

p4v_depot_tree.jpg

  • CodeDrop - 包含由Epic创建的可作为示例的各种游戏快照。

  • PhysX - 包含物理中间件的公共文件;根据您的协议,您还可以看到其他目录和文件。

  • UnrealEngine3 - 包含构建和运行UnrealEngine3的所有内容。还包括ExampleGame和UDKGame示例。

  • UnrealMCP - 包含UnrealMCP的源码,UnrealMCP是一种SOA(面向服务的架构),侧重于提供高度可扩展和可用的服务集,以增强玩家的在线体验。

有关更多信息,请参阅目录布局 页面。

UnrealEngine3目录中有几个子目录:Binaries、Development和Engine子目录;以及两个游戏目录:ExampleGame和UDKGame。

p4v_depot_tree_ue3.jpg

ExampleGame是Epic提供的最小的游戏实现,如果您的游戏与虚幻锦标赛(Unreal Tournament)不是很相似,它会成为您创建自己的游戏项目的良好开端。

UDKGame是Epic当前虚幻引擎4的基于虚幻锦标赛3(Unreal Tournament 3)的用法演示。这提供了一个复杂的示例,展示了Epic打算如何使用该引擎。我们建议以UDKGame为例,而不是从UDKGame扩展。欢迎您在UDKGame中为您的游戏项目使用任何C++或UnrealScript代码,但您不能在游戏中发布Epic的任何内容(纹理、网格体、关卡、声音等)。

对于UnrealEngine3,Epic的大部分内容都位于特定于游戏的目录中,因此如果您只想要引擎源码,那么只需同步到//depot/UnrealEngine3/Development目录即可。您可以根据需要突出显示特定的目录,例如,在不更新UDKGame内容的情况下获取ExampleGame的最新内容。

p4v_depot_tree_ue3_examplegame.jpg

在获得修订时,日志窗口中会进行大量下载。当它完成,您想要的是"同步完成,没有任何警告或错误(Sync completed with no warnings or errors)"。

同步到QA构建

要同步到QA批准的构建,请执行以下步骤:

  1. 运行P4V客户端应用程序。

    p4v_small.jpg

  2. 在库树中,右键单击UnrealEngine3目录,然后从上下文菜单中选择 获取修订...(Get Revision...)。或者,也可以选择UnrealEngine3目录,并从 操作(Actions) 菜单中选择 获取修订...(Get Revision...)

    p4v_depot_menu.jpg

  3. 获取修订(Get Revision) 窗口将打开。

    p4v_get_revision.jpg

    使用 使用...指定修订(Specify revision using) 单选按钮启用组合框和文本字段。

    p4v_specify_revision.jpg

  4. 从组合框中选择 标签(label)

    p4v_revision_label.jpg

    浏览...(Browse...) 按钮打开 选择标签(Select Label) 窗口。

    p4v_select_label.jpg

  5. 选择您要同步到的标签。通常这是最新QA批准的构建,由一个标签指定,其形式为 QA_APPROVED_BUILD[月][年]。为了加载所有标签,您可能需要在列表中向下滚动几次。

    p4v_label_build.jpg

    确定(Ok) 按钮选择标签并关闭窗口。

  6. 获取修订(Get Revision) 按钮关闭 获取修订(Get Revision) 窗口并开始同步。日志应显示同步进度。

    p4v_sync_progress.jpg

最佳实践和策略

与其使用多个客户端规范,我们建议使用批处理文件,它将所有二进制/文件同步到特定于已由测试团队批准的构建文件。同样的批处理文件也可以用于将内容同步到#head。

您始终可以在支持门户网站上找到最新的构建变更列表注释。

关于游戏内容目录,因为Perforce不提供二进制差异,当您对程序包进行更新时,Perforce将重新下载所有更新的文件!这有几GB的内容,您不会希望多次执行这种操作。因此,强烈建议您偶尔这样做,比如在夜里执行一次,以获取内容作为参考,然后只在需要时更新一次。

如果您在对最新的QA批准的构建进行完全同步时遇到问题,请尝试部分同步。许可方和承包商很少(但有时)会在同步期间断开连接。这不是太大的问题,但可能会令人沮丧。为了缓解这种情况,请同步到UnrealEngine3根目录下的每个文件夹:Development、Engine、ExampleGame等。对于UDKGame,则进一步细分。除内容(Content)外,同步到UDKGame的每个子文件夹。当您到达内容(Content)时,分别同步到每个子文件夹的内容。这是个麻烦事;但是一旦完成了,就可以避免很多麻烦。

在进行同步时,您可能会收到"无法删除可写文件(can't clobber writable file)"的警告,很可能是您的客户端工作区中的一些文件被标记为可写。作为一种安全措施,Perforce在任何情况下都不会覆盖您客户端上的任何可写文件。如果您认为需要保留一些更改,则需要确定哪些文件已更改,并将其签入;否则,如果您不需要任何更改,只想要一次新的同步,则对QA标签执行"强制同步",以强制覆盖这些文件。

当您在构建中遇到问题时,一定要查看最新的构建注释。在Perforce中 检查一致性(Check Consistency)(从 文件(File) 菜单中,在P4Win 中的 更多(More) 子菜单下);从 操作(Actions) 菜单中,在P4V )中的 调和离线工作(Reconcile Offline Work) 子菜单下)。最后,使用 从客户端移除(Remove from Client);然后移动(或删除)整个根文件夹及其内容。从这里开始,正常同步。库上的 从客户端移除(Remove from Client) 是必要的,它告诉服务器您什么都没有,这将强制更新所有文件。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback