游戏性能优化(2)-budget

系列文章:
游戏性能优化(1)-why & benchmark
游戏性能优化(2)-budget

游戏性能优化(2)-budget_第1张图片

性能预算(performance budget)是指根据游戏类型、上市时间为游戏定位目标机型和设置性能目标。在开发早期,制定美术效果目标、美术制作规格、技术选型,同时,在整个项目生命期中,对性能进行管理控制,反复优化来实现目标。

制定美术效果和性能目标

在制定美术效果和性能目标要考虑的因素很多,主要分为:

  1. 游戏类型
    不同类型的游戏对性能的要求是不一样的,对性能要求最高的游戏类型是FPS游戏,FPS游戏需要稳定60FPS才能达到手感要求。其他竞技类游戏比如MOBA要求更低一些,但是也要足够的流畅,至少要稳定30FPS以上。MMO游戏要求相对更低一些,但是一般也要达到30FPS左右。一些休闲游戏、卡牌游戏对FPS的要求也不高。
  2. 上市时间
    在端游时代,一款产品研发周期很长,动辄4、5年。那么在制定美术效果和性能目标的时候,要着眼于上线时间点时的市场。美术效果一般也会定位超越市面上所有可见游戏(可能次世代这个词就是这么来的)。
    对于手游的研发,研发周期较短,制定美术效果和性能目标时,相当于端游要更加保守一些。
  3. 游戏定位
    对于主打画面的游戏,比如很多次世代MMO游戏,会在美术效果上倾向更多的资源,可以在性能上有所妥协。
    对于主打玩法的游戏,没有必要在美术效果上太过激进,优先保证游戏的流畅性,来提升玩法体验是更加理智的选择。

在理解了要考虑的因素之后,我们可以通过参考市面上的游戏、做性能试验分析以及根据经验来确定最后的方案。

性能预算与研发周期

我们把整个项目的研发分为几个阶段来讨论性能预算:

  1. 研发早期
    这个阶段还在确定项目的研发方向和计划,这个时候要和策划、美术一起确定玩法和美术需求,在项目早期就达到一定的共识和性能权衡。在给予美术和策划足够的空间的同时,也要确认性能不会有过高的风险。同时,要根据需求对技术方案进行调研,确认核心的技术选型,并且制定美术制作标准。
    部分美术制作标准涉及到大量资源的制作(比如模型的面数规格),一定要在早期确定一个没有风险的标准,否则回炉成本是几乎无法承受的(模型全是钱啊)。
  2. 项目中期
    项目中期是项目最长的研发期,关于性能有三件事情要做:(1)对能够提升性能的技术点进行长期的跟进调研(2)持续跟进美术资源控制(3)持续跟进代码性能控制。不过大部分情况下,这个时候大家的关注点还是要把美术效果和玩法做好,所以一般性能问题一直处在下滑状态,并且低于上线标准。
  3. 项目后期
    在项目的后期,项目临近上线。由于持续的美术资源堆积、持续的玩法堆积,性能问题一般还是没有达到上线标准。这个时候能做的事情是:(1)权衡性能和美术效果,舍弃部分美术效果(2)效果分级,对美术效果进行合理的分级。最高档能在最高档机型上正常游戏、中档能在主流机型上正常游戏、低档保障最低的目标机型能正常游戏。(4)为了达到最后的性能目标,开启各种黑科技trick。
    经过各种努力,性能开始慢慢朝着及格线迈进。
游戏性能优化(2)-budget_第2张图片
技术选型和制作标准

性能预算对制作标准的影响(随着硬件发展变化,并不准确):

  1. 角色面数
    这个根据角色的显示大小和显示数量来制定,一般端游可以到1W+;手游控制在2000面左右。
  2. 同屏最高面数
    端游50W左右;手游5W左右,10W之内
  3. DrawCall
    端游一般1000+;手游200左右
  4. Layout规划
    在Layout规划的时候尽量使用最少的面数和Drawcall来表现美术效果。远景尽量采用天空、地表系统、和森林系统(森林系统可以优化成面片显示)表现。采用建筑群显示比较难以优化(也可以采用建筑群合并的方式优化)。
  5. 场景大小规划
    大世界要比小场景对性能的压力更大
  6. 视角视距
    开阔的视角视距需要渲染更多的模型,对性能压力大,可以考虑讨巧的45度视角(比如镇魔曲)
  7. 物理系统
    避免全部物件带有物理表现(很多游戏的做法是,只有主角有比较复杂的物理效果表现)
  8. 光照系统
    减少实时光的使用,尽量使用烘焙
  9. Batch
    在模型制作时,要考虑如何规划Batch,使用同样材质球和贴图的模型可以进行Batch。要权衡Batch和模型复用问题。
  10. 材质
    考虑选择pbr、cartoon等不同的方案,尽量减少材质对贴图的使用。
  11. 后处理
    手机分辨率特别高,要减少后处理的使用,考虑合并后处理。
  12. UI
    在规划UI布局时,要考虑降低UI的overdarw。
  13. 脚本语言的选择
    效率:lua>python

以上部分只包含项目早期要关注的内容,个人认为目前列举的还不够准确,后面我会持续更新以上内容。以上给出的部分数据都可商榷,灵活性比较大。

常见的分析工具
  1. GPA
    端游GPU分析
  2. VTune
    端游CPU分析
  3. XCode
    iphone性能分析,能分析CPU、GPU性能
  4. Adreno Profiler
    Android GPU分析
  5. Snapdragon Profiler
    Android GPU分析
  6. Unity Profiler
    Unity程序全方面分析
引用
  • 《Video Game Optimization》
  • 《Optimized C++》

你可能感兴趣的:(游戏性能优化(2)-budget)