引擎优化

  1. 引擎渲染管线简化
  2. 引擎mipmap优化
  3. UI渲染管线分离
  4. Shader异步编译
  5. 引擎动画URO优化
  6. 引擎线程数量和堆栈优化
  7. IL2CPP元数据延迟装载优化
  8. 粒子相机外逻辑分帧优化
  9. 粒子面片CutOut优化
  10. 阴影缓存优化

业务优化

  1. 特效动态裁剪优化
  2. 战斗动态降档优化
  3. 资源LOD优化
  4. UI图集LOD优化
  5. 迷雾刷新分屏优化
  6. 相机内外特效优化
  7. TMP飘字渲染优化
  8. 团战音效裁剪优化
  9. 逻辑分帧优化
  10. 血条合批优化

其他优化

  1. 厂商绑核不降频优化
  2. 厂商CPU超频适配优化

优化类别

  1. 资产
  • LOD(网格、纹理、特效、骨骼)
  • 资产剥离
  1. 阴影
  • 实时阴影缓存(局部更新)
  • 投影阴影
  • 静态烘培阴影
  1. 线程
  • 双队列切换
  • 环形Buff无锁
  • 无锁容器
  • 读写锁
  • 减少临界区
  • 调整线程间卡点时间
  • 独立计算部分拆分成线程
  • 绑核
  • 减少引擎逻辑线程栈内存大小
  • 根据设备限制job线程数量
  1. 网络
  • 冗余发送
  • 调整窗口大小
  • 数据包切割
  • 发包缓存筛选提高效率
  • 弱网预表现
  1. UI
  • 关闭IMGUI
  • 定制层级
  • 图集拆分
  • 图集LOD
  • 预制体LOD
  • 动静分离
  • 遮罩替换
  • 节点复用
  • 镂空绘制减少OverDraw
  • 反转变色复用
  • 降低UI相机分辨率
  • 用RT减少重复绘制
  • 低端机UI裁剪(特效、功能、描边)
  • UI管线定制
  • 小地图3DUI
  1. 2D动画
  • 序列帧动画合批
  • Live2D替换骨骼动画
  • 粒子转帧动画
  1. IL2CPP
  • 去除IL2CPP黑名单缓存
  • 降低内存释放门槛
  • 按需加载元数据
  • 业务泛型代码裁剪优化
  • IL2CPP空对象和数组越界检查的优化
  • RTTI的数据冗余
  • 减少反射调用
  • 更换容器(更换为sprase_hash_map、bytell_hash_map)
  • 去掉NativeSymbol调用容器
  1. 渲染
  • Mipmap简化
  • 渲染管线分离 UI、Main管线分离
  • 渲染管线线程化
  • 减少CommandBuffer缓存大小
  • 简化低端机渲染管线
  • SRP脏标记
  1. Shader
  • 规范精简
  • 精度变量优化
  • 计算转移
  • 离线计算结果存入纹理
  • 预热
  • 异步编译
  1. 动画
  • 动画Job多线程
  • GPU Instance skin
  • 动画分帧
  • 顶点动画
  • Clip轨道简化
  • 静态模型帧动画
  • 弹簧骨骼代替Cloth飘带
  • 冗余帧剔除(冗余关键帧、隔帧、插值、低精度、ACL压缩)
  1. 音效
  • 音频资源LOD
  • 团战实时音效裁剪(按范围和类型裁剪)
  1. 战斗
  • 资产LOD(静态和动态)
  • 渲染剔除算法(距离剔除、遮挡剔除、九宫格场景管理)
  • 多物体渲染GPU Instance
  • 动态分辨率
  • 资源实例化预加载
  • 裁剪(非主角裁剪)
  • 非关键特效裁剪
  • 相机外裁剪
  • 相同特效裁剪
  • 特效动态降档
  • 团战屏蔽GC和资源卸载
  • 内存错峰加载和卸载
  • Loding提前预加载和预解析计算
  1. 模型
  • 模型改广告牌
  • 静态模型离线合批
  • 自定义网格动态合批
  1. 粒子
  • 粒子Cutout
  • 粒子拖尾改逻辑拖尾
  • 粒子转Mesh后LOD
  • 粒子转帧动画
  • 粒子逻辑分帧
  1. 血条飘字
  • 裁剪(非主角)
  • GPU Instance合批
  • 逻辑动画替换动画
  • 动态字体改静态
  • 模型面片替换UGUI
  1. 业务逻辑
  • 预加载
  • 分帧
  • Dirty机制
  • 事件机制
  • 缓存
  • 对象池
  • 离线预计算生成表格
  • 统一Update
  • 预扩容
  • 字符串内存自定义管理
  • 数据合并 指针偏移
  1. 地图与寻路
  • SDF距离场
  • 离线预计算导航点
  • 权重导航
  • 跳点寻路
  • 跳点缓存
  1. 第三方SDK
  • 战斗内关闭无关SDK
  • 减少SDK线程池预存数量
  1. 厂商策略
  • 掉核策略
  • CPU和发热数据驱动性能适配功能
  • 超频策略
  1. 编译优化
  • -fomit-frame-pointer使用fp寄存器
  • -o1、-o2、-o3优化力度
  • __builtin_unreachable主动告知不会命中

性能工具

  1. SimplePerf
  2. 内存问题
  • 快照
  • 插桩
  • 注入