找回密码
 立即注册
查看: 244|回复: 5

游戏项目性能优化团队的建设方案和常规流程

[复制链接]
发表于 2023-2-9 10:49 | 显示全部楼层 |阅读模式
善战者无赫赫之功,善医者无煌煌之名,善弈者通盘无妙手。
性能优化的几点共识:

  • 优化不是一两个人的事,每个人都是性能的参与者和贡献者。
  • 不优化就等于负优化。
  • 将突击性的性能优化,转变为常态性的性能监测。
1 团队分工


基于项目组建的性能优化团队,应该包含开发团队的各职能的人员,其中包括技术组、策划组、美术组、测试组、PM组等。
由每个组出一个性能优化的接口人,接口人的作用如下:


  • 收集和发现问题,并在性能组内同步。
  • 确认并归属问题,如果是自己职能组的,将问题转至内部消化。
  • 验收已经解决的问题,同步至性能组内。


各职能的人员作用大概可以表示如下:


  • QA组:使用性能工具监控、测试并发现问题。问题解决之后验证,回归并纳入常规检测流程(如有必要)。
  • 技术组:发现、定位问题并给出指导性的解决方案,根据已经协定好的方案完成整改并自测通过。评估和接受其他职能同学提出的性能工具开发需求。
  • 策划组:发现、定位问题。根据已经协定好的方案完成整改并自测通过。可向技术同学提必要的检测工具的开发需求。
  • 美术组:发现、定位问题。根据已经协定好的方案完成整改并自测通过。可向技术同学提必要的检测工具的开发需求。
  • PM组:跟进每周发现的问题,排期并push相关责任人解决问题。决定是否将已经解决的问题入版。
简单来说,QA负责发现和归纳问题,技术负责定位问题并给出解决方案,美术、策划配合方案进行修改,PM排期、协调资源并决定何时入版。

2 组织方式



性能报告的应当按照一定的频次进行,性能周会的参与者为各组接口人。由技术/QA同学发起,性能小组全员参与。
性能报告的内容包括但不限于:


  • 上周的完成情况
  • 本周性能和上周的对比情况
  • 新增需要跟进的问题并分配Owner。
  • 给出解决的具体时间,如果会上不能给出,则需要给出能给出的时间。
  • 性能周会上不讨论方案细节,可以在会后的专项群讨论。


所有确认的问题,并非是由接口人亲自解决。接口人需要将问题带回职能组内部,确定由谁解决,并确保确实已经解决。简单来说,性能小组成员不必亲自解决问题,但他必须保证问题被解决了。职能内部则需要有经验的同学参与性能的讨论和方案的制定。


  • 如果问题涉及多人或者多个组协作,则拉性能PM协调和跟进。
  • 如果方案复杂(比如需要10天工时等),则由PM和对应职能的leader商量排期。但最后入版由PM决定。(PS:若为线上项目,所有较大的改动都需要有兜底方案,由解决问题的人给出)
当问题已经归属到责任人之后,由责任人自己判定是否需要拉专项群来解决专项问题。问题解决之后需要关注是否将该问题列为常规的性能监测点。如果需要,则是否有对应的检测工具和流程。

3 测试方式


QA同学负责调研竞品数据,给出对标产品的性能指标。技术同学根据提供的数据设定项目各项性能指标的基准值。
构建专属的性能优化测试包,采购性能优化专项测试机。将Perfdog、UPR/UWA、自研性能检测工具等纳入常规的手段。针对专项的性能测试,还可使用RenderDoc、android Profiler、XCode等多项工具进行细致分析,定位问题。
一些常用的性能检测工具如下:
Unity


  • Profiler 自带。 常规性能分析工具,用于简易查看Unity所分配的内存、CPU开销,GPU渲染压力等。也可以查看一些UI的批次和效率。
  • Frame Debug 自带。常规性能分析工具,用于查看渲染和Shader绘制情况。
  • ShaderProfiler 自带,插件需单独下载。 用来分析当前帧的Shader情况。
  • Memory Profiler 自带,插件需单独下载。内存分析的高级模式。
  • Profile analyzer 自带,插件需单独下载。CPU分析的高级模式。


Lua


  • LuaProfiler。 开源工具 https://github.com/leinlin/Miku-LuaProfiler 用于分析Lua的内存、GC和函数耗时。
服务:


  • UWA

    • 提供GOT工具可以自主测试
    • 提供真人真机服务并生成性能报告



  • UPR

    • Unity的官方性能测试工具,分析维度和指标和UWA类似。好处是可以自主极速生成。但免费版会有次数限制。


Android


  • Android Profiler The Android Profiler  |  Android Developers
  • Proffto Android 性能分析工具——Perfetto 介绍_卜大爷的博客-CSDN博客_perfetto
可以以安卓的视角来测试CPU 内存 能耗 网络等数据情况。需要将Unity工程导出为安卓工程。

IOS


  • XCode 最难掌握也是最好最全的性能分析工具集。可以以IOS真机视角来分析CPU 内存 能耗 渲染 带宽 shader等性能,IOS真机分析必备。


专项:


  • PerfDog/GamePerf  检测宏观的指标数据。比如FPS CPU使用率 内存 发热 纹理数量等等。
  • Renderdoc RenderDoc使用详解 。非常好用的真机截帧分析工具。不仅可以查看和分析各种渲染数据,还可以将当帧的各种美术资源导出使用。
  • Snapdragon Profiler  使用Snapdragon Profiler工具分析。 主要用来分析使用了高通骁龙处理器的Android设备。
  • Arm Mali Offline Compiler 。

    • Arm Mobile Studio之Streamline使用(配合unity)
    • Documentation – Arm Developer
    • 静态Shader分析工具,可以支持Vulkan



其他:

解决专项问题的自制/开源工具。
4 困难和挑战

项目优化目前的困难之一在于缺乏全局性能优化的意识。一个良好的性能优化组需要防患于未然,越早的发现问题,解决的代价就越小。

性能优化是一个比较吃专业经验的事情,需要有经验的同学组在一起进行“专家会诊”。因此每一位经验丰富的同学,不仅仅要承担常规的开发任务,更要随时的去review过往的技术框架和方案,有勇气挑战过去的自己,或者别人的“屎山”。

性能根据收益程度可以分为瓶颈和热点。瓶颈指的是,解决之后能获得巨大的收益,而热点则是指问题不大,但解决的收益也不大。在前期,我们着重解决瓶颈问题,但随着瓶颈不断的被解决,剩下的就是毛如雨的热点问题。
一个良好的性能团队周期性面对的是个别瓶颈和一堆热点。而项目整体的收益就来自于一个一个小的热点问题的解决。所以在后期,很多问题会被看做是“上纲上线”或者“收益不大”而不去做,不愿意做。但应该认识到,小的问题放任不管,时间一久就会变成大的问题。再者,每次效能的提升都是对自己和项目的一次升级,A项目的“砒霜”会成为B项目的“蜜糖”。
发表于 2023-2-9 10:55 | 显示全部楼层
大佬回来啦[飙泪笑]
发表于 2023-2-9 10:59 | 显示全部楼层
哈哈 失踪人口回归
发表于 2023-2-9 11:07 | 显示全部楼层
欢迎浩哥回归
发表于 2023-2-9 11:13 | 显示全部楼层
大佬好,“3.测试方式”这里提到的ShaderProfiler是Unity的Package吗,我在Unity的package manager里找不到呢
发表于 2023-2-9 11:16 | 显示全部楼层
[赞同][赞同][赞同][赞同]
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-2-24 17:11 , Processed in 0.428048 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表