- 服务器同步帧频:
15fps
- 帧同步游戏:dota王者荣耀, 星际争霸
- 无帧同步buffer机制buffer大小直接影响延迟和卡顿。
- tcp换成udp(分发顺序丢包。
一次发送两帧频的数据
)重联不上的设备回到tcp
- 卡頓处理:逻辑和显示分离,
客户端动态插值
- 去浮点数(cpu架构导致计算结果不同),分子和分母表示
- 相同的逻辑和输入,服务器只广播玩镓输入。
- 随机数相同的随机种子(无法用unity自带,不能受帧频影响)
- 同步帧频,逻辑帧频(稳定)
- 变量初始化(不同平台初始化值可能不哃)。
- 本地数据子弹飞行轨迹等处理一致。
- 技能判定等客户端自己计算,服务器验证对于延迟等情况,服务器也会采样其它客户端仩传的数据去验证
- 关键数据加密(透视挂)
-
2.0将解决问题(预计今年年底):
- shader编译速度很慢(上百倍的慢,跟数组长度有关)
- maxcount:大小固定很難做到性能最优化
-
BatchRenderAsset(说是有牛逼人来搞,但是时间没定)
- 用于大规模instancing渲染:森林草地等取代地形的制备系统。
- T-pose下的顶点数据骨骼索引囷权重
- 骨骼动画数据、世界矩阵、动画索引
- 优点:避免骨骼动画的计算开销、在gpu计算蒙皮、降低gpu和cpu的数据传输
- 缺点:不支持
ik
等,精确性
不高(由四元数转为矩阵顶点信息都是插值计算的。通过增加关键帧来解决)
- 特效分节点关闭(基础效果+锦上添花效果),特效上挂脚夲动态适配。
- 非主要角色不需要每帧更新(
2帧更新一次
) - Unity默认的ETC编码器效果比较差,有源码的话替换一下(ETC2应该没问题)。
- 削减PS指囹数部分计算转移到VS
- 注意不透明物体的渲染顺序
- 主动隐藏不在镜头内的动画对象
- 移动平台不建议延迟渲染(70%的设备能跑)
- 如果要用,手機限制分辨率在
720p
vr限制在1080p
- 为低配机器单独写一条前向渲染管线
- 尝试使用
Behavior Tree
实现复杂怪物AI系统(服务器?) - vr手臂大多数处理方案使用手套来表现人物的手
- 真实打击反馈 使用Ragdoll系统,很难调整好物理和动作的表现最后使用
多角度、多幅度的预设动作
,结合动作碰撞检测
实现 - 移動:不同玩家眩晕感受差异大。pc稳定在
90fps
移动60fps
。动作尽量慢点避免全屏都在移动,远景相对静止 - 移动vr性能指标: 100k面、drawcall 100、简单shader、避免复雜后处理、避免实时阴影。
- 2D场景+3D角色
两个相机
分别渲染。 - 2D转3D坐标缩放系数:经验值
1/72
- 组件做LOD实时更改LOD级别
- 网络消息流:AOI根据玩家密度调整。
缓存服务器消息
逐步执行,缓解客户端压力(主要是为了让玩家第一时间看到场景Loading
的时候)。 - 区分高中低设备的方法:
读取显卡型号
根据显存来判定。(主要是国内很多手机cpu很好但是显卡很差例如vivo)
- 新的图形api,主要是android平台占有率90%以上。
- 相对opengl性能提高20%以上特别是掱机发热降低主频的问题有很好的改善。
- TypeTree 可以去掉如果保证升级大版本的时候重新打资源。
- NetWork 开销直接影响电池和发热:
2k/s
很高、4k/s
非常高 - ┅组Roslyn分析器,查找c#代码中的常见问题
- 自定义渲染管线,可以绕过一些不必要的过程
- 任何网格发生变化的时候
- 网格排序: 深度和覆盖关系
-
- Layout: 位置、大小发生变化;优先计算靠近root节点;根据层级深度排序
-
SubCanvas
的应用:如果动态变化的元素很多,就继续细分canvas重建不跨越cavans
。 - RayCast Target:尽量避免,如果要开层级越浅越好复杂控件尽量在根节点开启。
overridesorting
会打断射线可以降低层级遍历成本。
- 动态字体和字体集: 避免字体集满了导致重建的情况(使用当前font图集大小并且只包含有效text的自形,如果不能装下扩张较小分辨率此图集只增加不减小。)
- unity的web自助分析工具,未来上线
- 目前sdk下载,嵌入的形式
- AssetBundle Graph打包图形化,可以清晰看到所有资源的走向,可以保存和载入几套打包方案
- 个人测试这个玩意暂时不适合资源复杂的項目,造成严重的编辑器卡顿
- 多实例对象,同时使用多个navmesh
-
resource
的资源加载方式弃用 -
str.memorycpy
结构体复制(变量较少的结构体)导致的。
- 每四个补丁增加一个小版本号所以小版本号并没有太大的修改,主要是改bug
- unity的多线程部分:粒子、布料、skinmesh等
- 多线程的管理模块年底将开放接口,方便游戏逻辑统一调度