Quantcast
Channel: 英特尔开发人员专区文章
Viewing all articles
Browse latest Browse all 583

借助英特尔集成显卡,优化提升PC版 Halo War*2 性能

$
0
0

下载文档 PDF 1.35MB

任务

当来自英国的顶级工作室 Creative Assembly* 开始开发 Halo Wars* 2时,他们的目标很宏伟,他们希望游戏在 DirectX* 12 支持的各种设置上运行,在各个硬件层面上都具有较强的可玩性——包括高级台式机 PC 配置和笔记本电脑。 尽管通过一系列的优化,配有独立显卡的高端系统的游戏体验在不断增强,他们团队仍将进一步探索针对英特尔集成显卡和多核处理功能如何进行游戏优化。

扩展特许经营

第一人称射击游戏 Halo*是 PC 游戏历史上最受欢迎的特许经营之一,于 2001 年推出,初代游戏名称为 Halo: Combat Evolved,也是 Xbox* 最初发布的游戏应用。 到 2015 年年底,Halo在生命周期游戏和硬件销售中创造了超过 50 亿美元。 Halo Wars 2的开发工作由 Creative Assembly负责,该工作室之前开发了 Alien: Isolation*Total War: Warhammer*。 他们拥有面向多个平台开发游戏的丰富经验,但是随着 DirectX 12 的不断成熟,该团队面临引擎、DX 12 驱动程序、多核效率等各方面的挑战。


图 1. Halo Wars* 2 是 Halo* 世界的新品。

将游戏转换为 RTS(实时战略)游戏意味着在频繁更新“迷你地图”的同时,跟踪更多的单元、为界面输入更多关键统计数据。 Halo Wars 2还推出了 “Blitz” 模式—它是一种极具创意的、紧张刺激的全新 RTS 游戏体验,将基于显卡的策略与炸弹横飞的战斗相结合。 新模式简化了大部分传统 RTS 系统,如基地建设、技能训练和资源管理。

扩展用户基础

Michael Bailey 是 Creative Assembly 的首席引擎编程员,也是该游戏的主要开发人员之一,他说:

“考虑到 RTS 游戏的性质,重点始终都是单元数量和带有大量 VFX 的大规模战斗。” “以上重点和 RTS 游戏中常见的确定性网络模式相结合,限制了我们的扩展性,因此,我们需要从头开始创建一个良好的基础,以利用多个 CPU 内核。 我们的主要目标是确保游戏能够在各种硬件上运行,力求在 Microsoft Surface* Pro 4 笔记本电脑上达到 30 fps 的帧速率,以后还会进一步提高。”


图 2.身临其境的粒子效果要求屏幕显示器持续工作

在多个硬件上实现最佳性能最为关键。 一开始,计划开发游戏的早期版本,初步适应高端台式机系统的规格,充分利用 10 teraflops 的潜在 GPU 计算能力。 但是,由于早期设计可能限制优化选项,这个计划会为游戏在 Xbox One* 和超极本™ 设备上的扩展带来一定的困难。 高端超极本和笔记本电脑在功耗和性能上接近 Xbox One,目前,这些设备被视为主流。 这意味着开发人员不能只关注 CPU 或 GPU 优化—两者都非常重要。


图 3.在超极本™ 设备和笔记本电脑上运行游戏是一个关键任务。

Bailey 没有面向英特尔® 高清显卡专门优化前代游戏,但是通过与英特尔直接合作,他实现了大幅的速度提升。 幸运的是,Creative Assembly 使用的显卡系统专为扩展而设计,而且不会破坏总体外观或感觉。 为了诊断新添特性的问题并测量它们的性能,英特尔工程师和 Bailey 团队现场讨论了他们的工具。 随着 DX 12 版本的不断成熟,提升的空间越来越小, 包括在多台设备上测试游戏性能,以实现可接受的出色扩展。

游戏即将开启

在项目的早期阶段,开发团队遇到了以下几个问题:

  • 目标系统不稳定
  • 独立 GPU 在低水平设置时出现的速度问题
  • 严重的 I/O 延迟
  • 在通用 Windows 平台 (UWP) 和 DirectX 12 上出现了工具故障
  • 驱动程序问题
  • 完成前重新使用缓冲而引起的损坏

这些问题都没有发展成障碍,但是早期的截屏显示有许多需要改进的地方。


图 4.早期截屏显示大范围损坏,影响地形、单元和“迷你地图”。

多核优化

  • 该团队通过研究几个不同的领域,优化了游戏的多核支持:
  • 改善算法
  • 减少内存分配
  • 简化资产
  • 执行低级别优化
  • 增强并行性

在多个玩家参与的战斗中,保持分散在多个线程中的模拟的确定性,是一个充满挑战的工作。 在 CPU 内部,团队专注于分解模拟,同时确保确定性。 此外,他们专门面向 DirectX 12 尽力减少资源障碍和重复工作。

该团队发现,改变顺序意味着有可能使玩家产生差异,在 Halo Wars 2世界中有不同的表达。 如果两个或更多玩家不同意校验和,例如,结果显示为“异步”,导致一位玩家被踢出游戏。 原因之一是在竞争条件下,输出取决于其他不可控事件的序列或时间。 很快团队便知道应该将哪些计算应用于其他线程,他们运行的时间,以及安全的实施时间。

他们最终实现了 CPU 在多个线程间高效运行,渲染线程除外。 他们在多核优化方面所付出的努力将在 2017 年游戏开发人员大会上展示(查看 链接和下表)。

GPU 优化和诊断

Creative Assembly 团队利用英特尔® 图形性能分析器(英特尔® GPA)执行了多个 GPU 优化。 英特尔® GPA 包含许多强大、灵活的工具,支持开发人员充分利用游戏平台的全部潜能,包括英特尔® 酷睿™ 处理器、英特尔® 高清显卡以及在 Android* 操作系统上运行的基于英特尔® 架构的平板电脑。 英特尔图形性能分析器工具直观显示来自应用的性能数据,向开发人员提供关于系统级别和单帧性能问题的详细信息,还支持实施“假设”实验,以评估优化带来的潜在性能。

Creative Assembly 团队利用英特尔 GPA 监控器的新特性启动和分析现行的游戏。 他们还利用英特尔 GPA 帧分析器检查了有问题的帧,以确定特定场景中的显卡“热点”。

英特尔 GPA 工具还有助于检查地砖损坏,团队利用描述符表跟踪地砖的错误。 此外,他们调查了性能瓶颈、对控制地形镶嵌的代码进行性能与质量方面的权衡,并判断了纹理分辨带宽瓶颈。

Bailey 和他的团队还利用 Microsoft GPUView 和其他英特尔游戏分析器。 团队在以下方面缩减了图形选项:

  • 当异步计算为了保护多个命令列表而使用过多的同步基元时,禁用异步计算。 (当异步计算不受原生支持时,会降低硬件速度。)
  • 为了保持质量与性能的可扩展性,降低地形镶嵌的数量;在较小的屏幕上,镶嵌所提供的额外信息不值得付出这样的成本。
  • 降低地形复合平铺资源的地图尺寸,使其与游戏运行的分辨率相匹配。当显示器分辨率过高时,这样做有助于避免复合地形纹理。
  • 纠正像素着色系统。 团队假设像素着色不在阴影渲染管线状态对象 (PSO) 中产生任何输出,它和顶点着色器中的插入器被一同删除了。 英特尔 GPA 显示事实并未如此。
  • 调整小物体的遮挡因素,使其适应分辨率(在主场景和阴影分辨率更低的阴影中调整)。
  • 更换深阴影 PCF 过滤器内核,通过 GatherCmp 大幅降低成本的同时,不会引起视觉差异。
  • 去除冗余地形复合层(这个错误使它们导出全部的层,包括不必要的层)。
  • 实施动态粒子降低系统,该系统对战斗视觉效果进行优先排序,减少较为次要的“偶然”环境效果或繁重的“高端”效果,如粒子光。
  • 玩家通过观察的视觉效果或他们地形中的模样确定单元。 Bailey 和他的团队实施的优化需要确保显示器可读,不能大量削减帧,也不可以禁用特定的效果。 “如果场景太复杂,我们会改进粒子效果,”他说。

他们还确保战斗效果看起来了非常出色。 当接连产生 20 场爆炸时,他们开始关闭环境效果和一些不重要的视觉效果。 “这样做是基于当前粒子系统的负载,”他解释说, “相比更高端的系统,Microsoft Surface Pro 4 上的效果损失会更明显一些,这是因为高端系统能处理更多的负载。 您可以继续保持环境效果,但是实际上,它们不是战斗的重要组成部分。”


图 5.大型战斗包含多个单元、若干例子效果和许多需要处理的信息。

DirectX 12 面临的挑战

Creative Assembly 和 Total War 的技术基础是分开的: Warhammer引擎和显卡层是从 Alien: Isolation中借鉴的。 他们在现有的 DX 11 支持上创建了 DX 12 显卡层,以利用全新的特性,确保 DX 12 比 DX 11 更优化。

在他们开始部署时,显卡层专门针对面向 PC 的 DX 11,因此,只面向 DX 12 进行规划并迁移,为他们提供了实现最佳性能的大量机会。 Bailey 发现在开发阶段,为了确保正确性和稳定性,他们对栅栏和描述符表失效“过于谨慎”。 他们研究了 2016 年游戏开发人员大会上的几场 DX 12 发言,并且通过在线资源收集了更多的信息,才开始了解将其应用于引擎的最佳方式。

随着系统渐趋成熟与稳定,他们开始进行优化,删除了冗余的描述设置和不必要的资源障碍与栅栏。 以上优化和改变渲染通道(为了更好地跟踪资源相关性)的操作意味着他们可以转移某些命令列表构建通道(如阴影),实现与其他区域的并行运行,更充分地利用多核。 迁移以及并行运行后,由于存在较多的绘制调用,命令列表在 CPU 内部造成巨大压力。 这些通道增加了屏幕上战斗单元的成本,因此,在紧张的战斗进程中,它们极大地受益于本次优化。 相比于 DX 11,DX 12 版在 CPU 内部渲染(甚至单线程)的速度很快超越了前者。


图 6.在本截屏中,右下角的“迷你地图”功能一切正常。

由于 DX 12 环境非常新,通过 DX 12 验证层获取诊断警告和错误的流程还不成熟,这点需要权衡考量。 文件可能不完整,或不准确。 当出现错误时,Bailey 的团队不确定错误由他们造成的,还是驱动程序导致的。

最终,他们只在 DX 12 上开发,低级别的单个图形 API 增强了他们对性能权衡的控制, 使他们将目标锁定为带有单个代码路径的大量 Windows* 10 设备。 2017 年 1 月发布的测试版支持 DirectX 12(低至特性级别 11.0);游戏的地形纹理复合代码需要“一级平铺资源”支持。

不断发展的软件所面临的挑战

由于团队想在游戏中利用众多新特性,需要持续更新驱动程序、编译器和 Windows 10 版。 幸运的是,他们和各种硬件厂商保持直接联系,有机会获取配有特定修复的测试版驱动程序以及测试版内部工具。

随着时间的推移,驱动程序、工具和验证层越来越成熟,出现的错误通常来自游戏代码,比较容易跟踪。 图形测试平台有助于调试各种 DX 12 API 功能,从开发新特性到在更精简的环境中运行(控制全部变量)。


图 7.用于测试新特性的精简环境。

为开发人员提供几条建议

联系专家

Bailey 建议开发人员联系独立硬件厂商 (IHV),以便获取解决问题的重要见解。 “他们显然希望您的游戏在他们的硬件上运行良好,因此,他们愿意提供帮助和工具,”他说, “如果他们对您的游戏产生了兴趣,或您对他们的硬件产生了兴趣,这是一种互利的体验。” 部分收益体现在访问早期修复和改进,还有 Bailey 团队广泛采用的优化反馈。

Bailey 说:“我们从未得到相互矛盾的反馈。” 厂商有助于确定已知问题,在某些地方,当游戏识别英特尔、AMD* 或 NVIDIA* 硬件时,运行方式会轻微改变。 Bailey 说:“他们之间有着细微差别,但是通过和他们聊天,您能了解他们擅长的领域。” 总体来说,游戏速度得到大幅提升(尤其在低端硬件上)。

创建强大的测试实验室

Creative Assembly 引擎团队共有六个人负责解决问题、以及通过各种方式测试解决方案。 他们经常根据需要去借机器,极度依赖在第二台机器或 Surface Pro 4 桌面上进行远程调试,触屏设备上的操作因此变得简单多了。 “我不会坐下来尝试设置触屏,使游戏能够适应屏幕,”Bailey 说, “我可以轻松地使用大屏台式机进行远程调试。”

Microsoft 拥有 Halo的特许经营权,因此,Creative Assembly 通过这种关系获取了 Microsoft 紧凑型测试实验室。 它是一款面向各种硬件的网关,有些硬件低于最低规格。 定期测试构件扩大了他们的范围,确保 Creative Assembly 的优化经过全面检查。

共享知识

Bailey 鼓励开发人员相互沟通,积极加入社区,尤其鼓励开发人员参加各种活动,如游戏开发人员大会 (GDC)。 如果无法参加活动,Bailey 建议“下载发言视频,稍后观看。”

以前,DirectX 12 发言的数量很少, 今年,经验丰富的团队将分析更多的方法和技巧。 “您也希望分享自己的成功,”Bailey 说, “如果您将成功经验分享给他人,他们也会跟你聊起他们做过的一些不同的事情,互相探讨经验。”

和多线程的解决方法一样,这里是人在互动,而不是处理器。 “您的分享会吸引他人与您对话,”Bailey 解释道, “邀请他人参与讨论可能为您带来更好的方法。 您的方法或许已经相当出色了,通过分享会变得更好。”

更多资源

英特尔图形性能分析器
https://software.intel.com/zh-cn/gpa

英特尔多核常见问题和解答:
https://software.intel.com/zh-cn/articles/frequently-asked-questions-intel-multi-core-processor-architecture

通用 Windows 平台简介:
https://docs.microsoft.com/zh-cn/windows/uwp/get-started/universal-application-platform-guide

DirectX 12 安装程序:
https://www.microsoft.com/zh-cn/download/details.aspx?id=35

Microsoft Surface Pro 4:
https://www.microsoftstore.com/store/msusa/en_US/pdp/productID.5072641000

2017 年游戏开发者大会中的 CPU 和 GPU 优化发言:
http://schedule.gdconf.com/session/threading-your-way-through-the-tricks-and-traps-of-making-a-dx12-sequel-to-halo-wars-presented-by-intel


Viewing all articles
Browse latest Browse all 583

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>