Unite’17 开发者大会经验分享

来源:互联网 发布:长春知远画室怎么样 编辑:程序博客网 时间:2024/06/06 03:18

Unite’17 开发者大会经验分享

有幸能够来参加一次Unite开发者大会,博主的实际工作经验也就一年的时间,大会上的很多东西都在开发中不曾涉及过、或者是因为行业的区别没有涉及过,但是将大会上学习到的其他经验列举出来给自己梳理一个努力的方向,也希望能够帮助到没有参加到大会的其他Unity程序员,大牛可以多加指点。

Keynote专场:

在KeyNote专场中,Unity官方人员主要介绍了新版Unity的新特性,以及他们针对Unity底层所做过的优化,新版Unity5.6以后的版本,渲染性能、效果都有所提升,而且针对UGUI做了更多的优化和拓展,使得基于UGUI的2D游戏开发更加的便捷,以及功能更加强大的TimeLine工具,具体的更新内容大家可以去unity官网查看。

在参加两天的大会之后,博主发现很多公司都是一直在更新Unity引擎的版本,可能大公司因为稳定性的问题或是对低版本熟练的问题,某些游戏的开发可能是使用了低版本的Unity引擎,比如《王者荣耀》《龙之谷》,但是在大会上他们都有表示会将引擎升级至5.x以后的更新版本,因为更新版本的会有更好的性能优化和功能拓展,使得开发者有更多的精力去集中于创新功能、玩法的实现,而不是专注于插件的开发和性能的优化。

Keynote专场告诉我们一个道理,在允许的条件下,一定要使用他们的最新版本,这样才能让你更加专注于产品的开发,而非引擎本身。

案例分享专场

A.基于Unity5的次世代卡通渲染技术: 琪亚娜·极乐净土

很短的视频很炫丽的《琪亚娜·极乐净土》利用N多顶级Shader。

B.在游戏引擎的VR环境中探索视听语言:

一段很感性的经验分享。

C.成熟项目优化经验分享
1.资源控制
1.1 动作
删除相同关键帧,自定义关键帧压缩
1.2 特效
监控ParticleSystem和动画的数量
1.3 UI
a.按需区分图集,平衡共有图集数量和使用率b.拆分alpha,对于没有渐变过度的alpha图进行尺寸压缩
2.内存控制
2.1 protobuf优化
a.多线程序列化反序列化b.减少协议数量,减低反射内存消耗
2.2 表格二进制化
a.前期大约20mb table 使用txt读取解析b.使用binary读取可以节省一半运行时内存c.string使用的intern处理d.共享存储相同的数据结构e.减少再次索引的数量,dictionary,quene等
3.控制DrawCall
a.合并场景材质,减少静态物体的Draw Callb.合并任务Meshc.特效分层显示,设置layerd.裁剪控制,镜头控制,Occlusion Culling 
4.UI优化
4.1 优化Panel,调整层级顺序,动静分离,降低DrawCall
4.2 针对飘子特别优化
a.控制飘字频率,减少UIMesh的动态更新b.控制飘字的最大数量
5.减少更新
5.1 Unity Animator Optimize Game Object
5.2 及时减少不必要的Update
a.Animatorb.ParticleSystem
5.3 减少BillBoard和Amimation和Update的操作
6.优化渲染效率
6.1 按需重写默认的Shader
6.2 优化复杂的Shader
a.复杂特效的Shader需要图形程序或者TA特别优化(去除cutout,合并blend,优化指令)b.使用数学手段c.使用shaderlod显示不同的效果,按机型使用vertex light和pixel light
7.减少卡顿
7.1 加载
a.使用加载队列b.人物分帧异步加载c.平衡预加载与及时加载的数量和大小d.小心其他操作对加载的影响e.与ab卸载的冲突
7.2 写出
a.大量数据的一次性写出
D.王者技术修炼<王者荣耀>

主要是针对《王者荣耀》状态同步VS帧同步、网络、性能优化进行讲解。

状态同步VS帧同步

1.状态同步优点:

a.安全性非常高b.另外状态同步对于网络的带宽和抖动包有一个更强的适应能力它的断线重回比较快c.客户端性能优化也,客户端在做性能优化的时候,可以做裁剪,避免不必要的渲染

2.状态同步缺点:

a.开发效率要相对帧同步差一些,调试周期比较长,想要达到优化好的水平,也是比较难的。b.它比较难做出动作类游戏打击感和精确性。因为某些功能(射击)会在短时间内消耗大量运算性能c.会随着游戏的复杂度,角色的多少,流量也会逐渐增长。

3.帧同步优点:

a.开发效率比较高b.另外它的打击感确实比较强c.流量消耗是稳定的

4.帧同步缺点:

a.网络要求比较高b.断线重回时间很长
王者荣耀性能优化
a.避免使用反射b.避免使用SetActive,用layer代替c.减少拆箱装箱操作d.Unity官方推荐CG每帧200字节e.控制DrawCall,画面裁剪f.UI复杂使用3DUI,不适用UGUI,比如血条等g.减少IOh.表现与逻辑分离,逻辑可以利用C++,进一步降低GC消耗i.创建自己的内存管理,对象管理,重新实现容器类,甚至是反射功能

总结:

大会虽然不会给开发者带来实质性的提升,但是它却可以给我们指明一条努力前进的道路。
原创粉丝点击