UWA-Day-2018分享
4月21和22日在青松城酒店,参加uwa的大会。
前言
uwa作为在unity优化方向的专业团队,在支持各个公司的产品优化的基础上,也等到了一些很有意思的内容。
目前在使用uwa的unity版本分布情况,目前主要使用的版本还是5.3-5.6居多
还有游戏类型也有不同的变化,有卡牌三消=》arpg=》moba=》沙盒游戏(吃鸡等等)
uwa团队讲了,unity引擎移动游戏性能优化全解析(张鑫),逻辑代码的性能瓶颈定位与优化方法(张强),移动游戏的GPU性能优化(张鑫),你需要知道的Unity2017的性能优势。
邀请嘉宾,重度MOBA的优化之路(王啸予),拥抱开放世界(成明),基于人工智能的艺术风格化研究(廖菁),Conneting The Dots:基于团队的持续优化之道(贾伟昊)以及UE4中国分享的大地图相关的内容。
接下来讲点零散的知识点,官方会把视频放出来,我就先把自己拍的一些内容,记录内容写一点
unity引擎移动游戏性能优化全解析(张鑫)
渲染模块小结
- 密切关注DrawCall
- 多用Frame Debugger
- GPU Instan的考虑
- 关注Culling
- 关注渲染模块的Self开销
UI模块小结
- 密切关注项目中Canvas的Rebuild性能
- 关注Image,text的重建频率
- 关注所在Canvas的复杂程度
加载模块
- Instantiate加载耗时、堆内存、频率
- shader的加载耗时
- GameObject Active/Deactive的调用频率
- AssetBundle的加载方式
物理模块
Physics.Prcessing调用次数
内存管理
纹理内存
* ASTC格式
* ios设备,A8芯片以上都可以支持
* Android设备,需要openGLES 3.2+
* 缓存问题需要时刻留意
网格内存
* 缓存问题需要时刻留意
动画片段内存的使用趋势
* 对动画文件精度进行完善
ShaderLab
* 特别注意standard Shader的使用
重度MOBA的优化
- UI和特效混排是使用RT
- 不使用skinmesh,gpu蒙皮和gpu实例化
- 实现UV合批,减少cup的工作
拥抱开放世界
主讲人是英雄互娱的制作人,沙盒游戏
比较有意思的是美术在低端机适配
* 画质选项根据机型自适应
* 阴影、草开关
* 水表现质量
* 视野距离
* Render texture
* 通过Render texture 降低低端机分辨率
逻辑代码的性能瓶颈定位与优化方法
借助UWA GOT来分析代码
* 堆内存
* 累积分析
* 泄漏分析
* CPU
* 瓶颈函数定位
* 高频函数优化
* Lua耗时分析
* IL2CPP
放上针对高频函数优化
1.不使用Coroutine
2.不使用MonoBehavior.update/LateUpdate/FixUpdate
3.尽可能用Arrary遍历DoUpdate
4.针对低逻辑,轮循环->事件队列
5.针对高频逻辑,将访问的属性分离到单独的Array中
移动游戏的GPU性能优化
- CPU
- 关注DrawCall、Material的使用情况
- 尝试Texture2DArray功能
- GPU
- 关注overdraw、纹理Minmap使用情况
- 关注网格渲染密度和屏占比
- 关注shader的屏占比
* 个人觉得很强大的部分在于分析一张图片早在不同的minmap情况使用率,将一些mipmap0的图片使用小一些的图片资源*
Conneting The Dots:基于团队的持续优化之道
之前有这样的观点认为过早优化是无效,因为策划的需求和美术要求的效果不可控制,后期为了包体大小,适应中低端机器,不得不去做美术资源优化。
贾伟昊,由他自身经历,重新制作美术资源是浪费公司的资源,觉得其次在开发初期就定义好,一些标准。
可借鉴的地方:
制作资源规范
- 游戏信息收集
游戏美观,镜头视角,美术预算,美术风格,团队经验,市场营销 - 确定目标机型
包括高、中、低三档区分Android和ios平台
美术资源制作
美术资源检查
* 包体大小统计:资源包监控,知道新增资源,大小和数量和信息
* 场景合法性检查:及时管理及时调整
程序代码优化
- 业务和数据使用lua
- 与引擎相关,计算密集的逻辑
- 代码质量;针对性的培训和分享,代码Recode、借助第三方的静态分析工具
团队工作流和工具构建
- 看到流程图的时候,很专业有及时反馈和反馈闭合
- 提高程序开发的效率 Hdg Remote Debug