0

我知道 DOTS 和 ECS 的巨大优势体现在游戏包含大量拥有相同数据的对象时,因此它们可以放在内存块中并轻松迭代。

我的问题是:我正在做一个普通的游戏,它不包含数千个拥有相同数据的对象,恰恰相反:有很多对象包含不同的数据和行为。使用 DOTS 是否仍然有益?

我知道就内存而言,它是有益的,因为只有有用的东西才能发挥作用,但是在 DOTS(数千个类似对象)的巨大好处不存在的情况下,我应该如何决定使用它与否?

4

1 回答 1

1

Unity 的DOTS 介绍教程有关于此时使用 DOTS 的好处:

除非您立即寻求短期或中期的性能改进,否则很难确定是否或何时迁移到 DOTS。

DOTS 极有可能在几乎每个应用程序中提供一定程度的性能改进。领域包括性能、电池寿命、迭代和项目可扩展性。迁移到 DOTS 不会导致性能下降,但评估迁移到 DOTS 的成本至关重要,尤其是对于仅获得小幅改进的项目。对于所有应用,DOTS 都适用于处理大量数据,例如开放世界环境或使用大量相同材料的复杂结构。DOTS 还适用于重复元素,通过在实例之间共享公共数据来减少内存访问。

重要的是要考虑到 DOTS 将帮助您在未来开发没有 DOTS 的 Unity 可能难以交付的高质量内容。例如,今天的标准游戏和 Unity 项目是过去的 AAA 游戏。您将需要采用 DOTS 以在未来保持竞争力。

针对不同的垂直领域,DOTS 可以适用于不同的解决方案:

对于 AEC 应用:

  • DOTS 适用于处理大型数据集并确保内容的可扩展性。

    • DOTS 非常适合具有大量模型和重复内容的大型交互式地图和环境,例如建筑物和道路。

    • DOTS 适用于大规模模拟真实环境的复杂工程可视化。例如,细粒度的工厂和基础设施设计是 DOTS 的理想选择。

对于汽车应用:

  • 自动驾驶的模拟和可视化

    • DOTS 非常适合大型交通和行人模拟,这些模拟需要成千上万的捐赠代理以真实的方式移动和交互。

对于游戏独立开发者和自由职业者:

  • DOTS 可以帮助您减轻游戏中一些昂贵的操作并帮助提高性能,尤其是对于重复性流程。

  • 许多轻量级游戏(例如移动游戏)并未接近最大限度地提高硬件性能。即使对于那些这样做的人来说,这也可能不是主要问题。但是,随着游戏的不断发展和对硬件需求的增加,为将来使用 DOTS 做准备是明智的。同样,Project Tiny 为使用 DOTS 开发较小的应用程序和游戏提供了解决方案。

  • 如果您可能没有立即开始使用 DOTS 的需要,那么在 DOTS 中领先并提高自己的技能是一个好主意,这样您就可以在 DOTS 成为 Unity 开发的标准实践时做好准备。

对于游戏工作室:

  • 当前格式的 DOTS 可以帮助您开始达到以前在 Unity 或其他方式中无法实现的规模和性能。特别是,延长电池寿命和热控制以及 DOTS 提供的代码可重用性是关键优势。这些领域的扩展性能还允许您开发更多低端设备,尤其是西方市场以外的设备,否则这些设备具有限制性的硬件限制。

  • 让研发团队开始在 DOTS 中工作将帮助您开始了解您可以采取的最佳方法,并将告知您当前的功能和领域将带来最大的性能优势和开发影响。DOTS 的目标不是取代引擎团队的角色,而是让工程师腾出时间在自己的专业领域进行创新,例如阴影或着色器。

所以基本上,Unity 声称现在采用 DOTS 有以下几点:

  • 在性能方面您没有任何损失(尽管在 DOTS 中实施某些事情可能比其他事情需要更多的努力)

  • 即使您没有控制“许多”对象,DOTS 在您执行重复操作时也可以更高效,这在考虑低端硬件或资源(例如电池使用)时可以产生有意义的差异。

  • 除了现在采用 DOTS 的物质利益之外,它还为人们或组织提供了一种教育体验,以便在物质利益更大的情况下在以后的项目中使用它。

于 2020-11-23T22:26:43.533 回答