Language:
Page Info
Engine Version:
Share
此中文页面内容对应的英文页面有后续更新,如需浏览最新文档可切换至英文页面浏览。

可扩展性和开发人员

可扩展性不仅仅是指图形设置方面,还涉及到选择目标平台及选择适合该平台的美术效果、游戏可玩性、音效、人工智能及任何其他子系统。 对于游戏机平台来说,这很简单,因为平台是固定的。但是,对于由多个不同设备构成的PC平台来说,仅针对一种单独的硬件规格进行制作是不可能的。

这就是可扩展性(Scalability)选项发挥作用的地方,但即便在个体开发人员需要调整这些选项之前,他们还是可以做很多事情,来确保他们所制作的应用程序可以在他们选择的最低配置规格上运行。

综述

不同的机器可以具有不同的 性能/内存/质量 特性,比如:

  • 硬盘 大小/延迟时间/带宽

  • 主内存 大小/延迟时间/带宽,运行 32 位程序而不是 64 位可以进一步限制该项要求。

  • CPU (一个或多个主处理器、超线程、SSE 功能、分支预测)

  • GPU (内存、多个 GPU、带宽、功能、共享内存)

  • 分辨率(现在的笔记本具有高分辨率显示器,但却仅具有较慢的 GPU)

一般,图形是最容易调整的,不需太多地影响游戏性。玩家一般接受可扩展性这个概念,但是仅有少数玩家会主动地跳转到这些选项菜单并进行适当地调整。 选项屏幕通常充斥着大量的选项和吓人的名称。当然,还为玩家提供了很多选项,供他们做出很多主观的、折中的选择:

  • 帧数

  • 分辨率

  • 图像质量

  • 运动模糊

  • 贴图细节

  • 闪烁(抗锯齿)

  • 电池寿命

美术师和设计师

虚幻引擎赋予内容创建人员很多权利,当然这随之也为他们带来很多责任。性能和内存要求直接和内容数量及质量相关。这是个非常复杂的问题:

  • 内容通常是在没有目标硬件的情况下创建的。

  • 复杂的矩阵式硬件属性(内存低,但 GPU 快,而 CPU 又慢)。

  • 引擎代码仍然正在研发中,仍在根据内容需要进行优化。

  • 新的硬件和驱动程序改变了这种对等关系。

  • 开发时间限制了优化处理。

  • 为了更好地控制这个问题,最好应用一些好的实践方法:

    • 规划并确认预算(triangle/object/material/light 的数量,texture/mesh/sound memory 等等)。

    • 给和游戏性无关的内容添加可扩展性选项,并针对较低和较高的设置进行测试。

      • 比如,在低规格设备上隐藏杂乱的对象,使用更简单的材质着色和对象细节层次。

    • 限制玩家的能力。

      • 比如,可以阻挡视线的障碍物,不能构建成任意复杂形状,限制可破坏的程度。

    • 理解性能特性

      • 比如,具有很多点光源的动态对象,网格物体粒子和平面粒子进行对比。

    • 以类似的比率混合不同的组件 (某些硬件可能仅在某些功能方面较慢), 这样的做法是不好的: 很多对象具有简单的材质,但是几个具有多个光源的对象却具有复杂的材质。

    • 了解引擎优化工具。

QA

大量的可扩展性功能会消耗 QA 人员更多的时间。以下几个好的做法可能有所帮助:

  • 在文档中写出 低级的/推荐的/高级的 规格说明。

  • 大量进行矩阵组合测试(低级/中级/高级 GPU、 低级/高级 CPU、低级/高级 内存)。

  • 在可再现的情景上定义性能级别。

  • 不断地记录及交流修改变化。

  • 禁用一些东西是隔离性能问题的最强大方法(比如,显示控制台命令)。

  • 如果您在最低质量设置级别上运行程序,而看到的效果比预期好很多,那么可能意味着缺失了一个可扩展性设置(修复这个问题,可能意味着更多的玩家可以享受到同样的游戏体验)。

  • 测试可扩展性功能的可用性: 如果您发现它是令人迷惑的、错误的,那么请创建一个 TTP。

  • 任何时候,用户界面都应该是可读的、有用的。请测试最低分辨率和最低质量设置,看下是否有不可读的字体及超出屏幕边界的元素。

  • 如果某种失真现象仅在某些特定的扩展级别(比如仅在 “低级”)出现,那么您可以进一步分离该问题(比如,阴影可能受到 “阴影质量” 的影响),深入到实际的游戏机平台变量设置文档(查看 Scalability.ini 文件)。

  • 知道如何量化性能(统计帧频率、统计单位,等),毫秒这个统计单位比帧频率更有用(“程序快帧频率快了 10fps”几乎没有任何意义,但是快了 5 毫秒就很有意义了)。

  • 某些笔记本有多个 GPU(比如使用 Intel HD4000 集成显卡节约电池,NVIDIA 580m 则提升性能)。默认情况下,您想在更快的 GPU 上运行程序,但最好在两个 GPU上 都运行程序进行测试(使用驱动程序设置来进行修改)。当在使用电池供电的电脑上运行时,可以选择较慢的 GPU,或者甚至可以在运行时进行切换。

程序员

当一个玩家更早地看到另一个玩家的身影或者通过较高的分辨率获得更快的响应时间时,该玩家可能有一种优势。 尽管使用提供的可扩展设置不是欺骗,但是某些可扩展功能却可能被乱用于欺骗行为。 一个游戏机变量提供的值的范围可能比该可扩展功能所需的值更广,或者游戏机平台变量设置的组合都可能会导致问题。 某些多玩家游戏,通过让服务器管理员来覆盖有问题的设置来为所有玩家来提供平等的机会,来解决这些问题。

示例:隐藏在深深的草丛中可能是很好的游戏策略。但是,如果视图距离较远就不渲染这些草丛了,那么对于那些尝试隐藏的玩家这可能是非常不公平的。

理想情况下,可扩展功能将不会影响游戏性。

主管、制作人及经理

主管经理们应该知道什么?开发一款需要针对大范围的硬件进行扩展的游戏是比较难的,这将消耗更多的时间,并耗费 QA 更多的精力。以下几个好的做法可能有所帮助:

  • 在项目开发早期就定义一个低级硬件规格和一个推荐的硬件规格。

  • 一个好的“自动设置”功能是非常重要的,因为大部分玩家从来不是用这些选项菜单。要想正确地设置这个功能,您需要进行大量地迭代和测试。

  • 可扩展的范围越小,开发越容易(最坏的情况: 扩展范围从高端PC到低端移动设备)。

  • 具有一台次要的低端配置机器在各个方面(编码、设计及美术)都是有帮助的。当平衡任务时,通常最好是先进行优化,而不是创建更多的扩展性。

  • 性能是扩展性的一部分,但同时也影响着扩展性。比如,如果您在一台低端配置的机器上内存不足了,那么最好将高分辨率贴图选项灰掉。

  • 对于低端配置机器上,可扩展性意味着更多的玩家可以玩该游戏。对于高端配置机器,可扩展性意味着游戏可以看上去更好,尤其是在屏幕截图及测试中。