虚幻引擎5.1中的虚拟资产——更小、更快的数据同步

5

主题

6

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2022-12-30 17:22:55 | 显示全部楼层

虚幻引擎5.1带来了一项新功能——虚拟资产
以帮助实现更快、更小的数据同步

目前这项功能还处于处于测试阶段
虚拟资产可向提供一种
将结构化数据与批量数据分离的方法
使开发人员能够仅从Perforce等源代码管理系统
同步他们需要的内容
这为不需要访问完整对象数据的开发人员
带来了更小的工作区和更快的同步速度


虚幻引擎团队的高级产品经理Grace Yen
和虚拟资产首席开发人员Paul Chipchase
向我们专业性地分享虚拟资产这项功能
以便你评估它们是否适合你的项目需求
一起来看看~

PART.1  虚拟资产解决了哪些问题?

在过去的几代游戏开发中,我们注意到了一些与项目规模相关的数据趋势:不仅项目规模越来越大(我们非正式地调查了一些被许可方以验证这一点),而且许多开发人员正在转向Games-as-a-Service(GaaS)模式,并在多年的游戏生命周期中不断更新。

我们还看到团队不断发展更新的交付方式。一些团队选择“feature streams”来帮忙阻止前沿功能影响团队的其他成员,直到构建稳定并准备好发布。

我们观察到一些团队成员在发布其产品的即时新闻时进行工作(以支持实时服务),以及制作具有“main”和“advanced”类型开发工作流的模型。

这就带来了另一个挑战,团队成员经常处于耗尽其SSD空间的边缘,有时不得不增加额外的工作量来同步取消他们可能会再次使用的工作流,以便为他们正在进行的当前工作腾出空间。

在这种情况未能得到解决之前,一些工作室(包括我们的工作室)在同步大小和同步时间方面遇到了挑战。我们部署了性能边缘服务器等解决方案,试图为用户提供更快的访问点。然而,当我们在2020年被要求在家工作时,我们开始经历团队成员没有可靠的互联网连接或互联网速度差异很大的痛苦。

组建最好的团队有时意味着团队成员拥有不同的水平——我们认为这种动态将继续存在。即使不同岗位的团队成员花费时间来混合方案,我们也会多次遇到需要按岗位需求来分配硬件的复杂问题。

借助强大的技术,如UE5的虚拟化几何体系统Nanite,可以在实现像素级的细节和高对象数量,我们预计未来项目规模也会随之进一步扩大。


总之,人们花费越来越多的时间来做同步工作,因为:

  • 项目越来越大。
  • 游戏寿命周期更长,因此需要不断添加更多内容。

出现的问题变多了,因为:

  • 团队可能需要同步多个工作流,例如新功能发布或实时服务的管理。
  • 物理硬件(例如 SSD)的配置成本更高、难度更高且耗时。
  • 更大的团队规模会使高效工作变得更加困难。
  • 混合工作者和远程工作者面临同步挑战。
  • 开始使用Nanite的团队获得了更高的视觉保真度,但也获得了更大的数据集。


PART.2  虚拟资产的使用方法

虚拟资产的使用建立在以下基本理念之上:你只用同步所需的数据,并且你以后需要的其他数据应该可以快速访问。

我们的团队非常擅长教开发人员设置夜间同步,提前计划以最大限度地减少停机时间。虚拟资产提供的是一种更快、更有效的方式来为每个人同步数据,尤其是在你无法提前计划并且你尚未更新的工作流中出现紧急问题的情况下。

通常,用户只需要有关资产的足够信息,即可在编辑器中以有意义的方式显示它。例如,对于纹理,你可能需要缩略图和编辑器属性、坐标和比例。但是UTexture对象的批量数据是原始原始像素数据,你不需要预先提供。

基于此,我们将这些资产在后台分为两部分:

  • “结构化数据”保留了资产当前在源代码管理中的位置。它包含编辑器加载和表示资产所需的一切。
  • “批量数据”是你可能不需要的部分,它被拆分为源代码管理的单独区域。


我们开发虚拟资产的原则之一是维护用户现有的工作流程。团队成员应该能够以相同的方式同步和工作,但速度更快。通过拆分核心资产元数据并将其保留在原始源位置,用户可以像以前一样同步数据。该工具负责幕后工作,以在需要时从新的源位置获取批量数据。为此,你需要与源代码管理员合作,设置一个单独的位置,该位置的访问权限与原始源代码管理位置相同。

总结:

  • 我们拆分资产,以便批量数据存储在另一个源代码管理位置。
  • 用户像以前一样工作,但同步到较小的核心资产元数据片段。
  • 在极少数情况下,他们需要他们没有的批量数据,用户可以按需获取这些数据。

PART.3  如何部署虚拟资产?


虚拟资产功能目前处于测试阶段,这意味着它处于试用期,其形式可能会发生变化,因此在生产项目中应谨慎使用它。然而,我们想强调的是,它已经足够强大到可以用于制作《堡垒之夜》。

我们有几种模式可以帮助团队启用虚拟资产:


根据项目的规模和生产计划,你可能需要尝试不同的方法。
例如:

  • 如果你要开始一个新项目,我们建议你尝试使用虚拟资产。
  • 如果你有一个项目处于全面生产阶段,你可能希望避免将其引入游戏区域或你正在大量迭代的资产,但你可以传送较大内存的资产。
  • 或者,你可以只按内存大小定位资产模型。

需要考虑的注意事项:

  • 虽然我们尚未实现“脱机工作”模式,但我们认识到这是一项有益的功能。我们计划在5.2的版本中加上这个功能。这意味着,如果用户在断开连接时(例如在飞机上)工作,虚拟资产现在将无法完全为他们工作。他们可能会到达无法检索要编辑的内容的批量数据的位置。编辑器不会崩溃,但它们需要重新连接才能获取所需的批量数据。
  • 主要数据需要拆分。如果你将游戏的内容数据发布到现有基础结构之外,它会增加额外的考虑因素。在这种情况下,你可以使用独立的虚幻虚拟化工具将虚拟化资产“解除冻结”回其原始形式(通过再次将批量数据存储在包文件中)。
  • 仅当用户有权访问具有合理连接速度的共享数据缓存时,此实现才有效。否则,用户将看到明显的卡顿,最好将所有同步时间和空间提前处理。下一节将对此进行详细介绍。
  • 目前,我们仅支持 Perforce 源代码管理。
  • 这项技术仍处于测试阶段。尽管我们已经在内部部署了它,并且目前正在对其进行处理,但无法保证虚拟资产何时会进入生产就绪状态,也无法保证将来如何支持该功能。


PART.4  虚拟资产是否适合我的项目?

关于虚拟资产是否会使你受益,没有明确的答案,因为涉及许多不同的因素。但是下面的问题应该可以帮助你确定这是否是你尝试的合适解决方案。同样重要的是要注意虚拟化不是一条单行道。如果你愿意,你始终有机会重新冻结任何(或所有)虚拟化数据。


  • 你的团队当前是否遇到磁盘空间问题,或者你是否看到数据增长持续到预期出现此类问题的程度?
  • 团队成员是否经常需要同步项目的多个版本,通常在版本之间共享大量内容?
  • 你的团队成员是否有权访问良好的共享派生数据缓存 (DDC)?
这也是一个沉重的问题。如果大多数团队成员确实可以访问共享 DDC,并且您有一些异常值,则可以在整个项目中使用虚拟资产,但允许某些团队成员选择退出。他们将在签入时“去虚拟化”资产,但您可以尝试运行脚本来捕获此问题并自动修复,但是这可能会导致源代码控制流失。


PART.5  最大化虚拟资产收益的提示

我们建议你考虑使用虚幻编辑器签入工作流程。通过此路径,会进行检查以确保资产在签入时仍处于虚拟化状态。尽管我们提供了一些可以从 Perforce 运行以检查虚拟化资产的工具,但用户总是有可能绕过并跳过它。

PART.6  虚拟资产的实际应用

除了在内部示例项目中启用虚拟资产外,我们还在《堡垒之夜》中引入了该功能。以下数字作为说明性示例提供,只是为了让你了解我们在《堡垒之夜》上节省的时间,当然这些将将根据游戏中资产类型的构成而有所不同。例如,我们在《古代山谷》上运行了这个功能,由于大量使用了Nanite网格,我们节省了50倍的时间。

在Fortnite上,这是我们测量的内容:



PART.7  展望未来

在虚幻引擎5.1中,虚拟资产:

  • 与Perforce一起工作。
  • 支持纹理和音频资产。
  • 提供不同的启用模式(按资产类型、包路径或全部)。
  • 具有由资产内容散列引用的批量数据。

我们的雷达上还有更多虚拟资产功能,包括:

  • 脱机工作模式(提前同步所有数据)。
  • 更多资源类型支持(例如静态网格体,包括Nanite)。
  • 支持其他源代码管理解决方案。

如果想了解有关虚拟资产的更多信息,可在虚幻引擎官网查看文档。



网址:https://docs.unrealengine.com/5.1/en-US/virtual-assets-in-unreal-engine/
来源:https://www.unrealengine.com/en-US/tech-blog/virtual-assets-in-unreal-engine-5-1-smaller-faster-data-syncs
(分享资源来源于虚拟引擎官方网站收集和整理。所分享的资源仅供于学者进行学习和研究测试使用,侵删。)
回复

举报 使用道具

您需要登录后才可以回帖 登录 | 立即注册
快速回复 返回顶部 返回列表