博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2016Unite Shanghai 总结
阅读量:5321 次
发布时间:2019-06-14

本文共 3271 字,大约阅读时间需要 10 分钟。

有幸参加了Unite 2016 Shanghai unity开发者大会,这里做一些简单总结

一.日本Marza 分享 《The Gift》

Marza用unity做渲染,加上一些自己的扩展技术实现了效果非常棒的动画效果,《The Gift》就是Marza团队在unite向开发者展示的作品,当然他们也简介了他们怎么减少DrawCall,做presudo-instancing技术……不过都是思路,很难get到具体做法,公司网址。整体介绍虽然跟我们并没什么关系,但是也告诉我们一个信息:unity做渲染的品质还是可以的,哈哈。最干货的是Marza在github上开源了他们做录屏的库,还是可以看看的(可惜的是资料都是日文)

二.Unity5.4 渲染改善

a.实时渲染

Unite开场相关嘉宾就开始鼓吹unity5.4以后的实时渲染有多么牛X,播放了一段电影般画质的CG,一开始由于还陷入误区,以为实时渲染是unity新技术呢,结果查了各种资料也没有相关介绍,最后才发现原来仅仅是为了鼓吹unity对渲染的优化可以达到很高的品质,并不是某种新技术,汗……

不过播放的那段CG动画的确很吊,unity对渲染的处理也还是可以的,哈哈

附上两个关于渲染的文章链接:

b.一些新技术

1.Mulithreaded Reandering多线程渲染在unity5.x以后就开始慢慢使用了,但是unity5.4有使用了一个DW(double wide rendering 具体是什么还得5.4出来后看看)据介绍可以使得整体渲染效率提升30%左右吧

2.Cinematic Image Effects: 对影视常用效果提供了一些脚本和资源,大都作用已Camera上,并且是开源的

3.progressive LightMapper : 具体是什么网上资料很少,据描述应该就是一个渲染优化的技术

4.Memory Profiler : unity开发的一款开源内存监视器,用起来还是蛮方便的

5.另外发现了unity的开源仓库原来在,里面有不少unity开源项目,如:AssetBundle、IAP、Networking……值得学习一下

三.unity 提出的一些常见优化

a.Asset Auditing

在资源导入时进行检测,避免资源出错,规范资源命名等,具体做法可以参考AssetPostprocessor类,直接在文档里检索就可以了

b.Common Rules : Texture

1.Make sure Read/Write is disable

2.Disable mipmap if possible

3.Make sure textures are Compressed

4.Ensure sizes aren’t too large

   2048*2048  / 1024*1024  for UI atlas

   512*512 or smaller for model textures

c.Common Rules : Model

1.Make sure Read/Write is disable

2.Disable rig on non-character models

3.Enable mesh compression

d.Common Rules : Audio

1.MP3 compression on IOS

2.Vorbis compression on Android

3.”Force Mono”for mobile games

d.set bitrate as low as possible

e.内存优化建议

1.unity mono堆内存的分配是只增不减的,也就是说尽量降低在堆上内存分配的峰值

2.减少在临时内存的分配,不然会提高GC频率,对帧率有很大影响

3.合理使用匿名方法和闭包,避免不必要的内存分配

4.避免装箱拆箱的操作

5.避免使用反射的机制去序列化或反序列化json,可以使用unity自己提供的JsonUtility(5.3以后支持)

四.VR 介绍

1.unity 对VR做了一些渲染层的优化,具体就是一定层度上提高VR Game 的渲染效率,当然只有默认支持的VR设备才可以使用到这些优化。目前已经支持的只有Oculus,unity5.4以后就会支持htc Vive 和PlayStation设备,当然也介绍了一些简单用法,在文档里直接可以查到

2. htc VR 产品经理分享:

a.VR目前还无法被玩家接受,主要受限于硬件设备

b.VR 的体验并不完全在于帧率保持在90帧,更重要的是不能出现帧率的频繁波动,也就是说稳定的帧率>=75fps可以有降低眩晕感

c.VR 的性能问题给开发者预留的发挥空间并不多,所以只有必须对资源和代码做的精益求精才能做出靠谱的产品

d.VR 的UI,VR中尽量少用UI

e.htc vive 推荐了一款NewtonVR(免费的vive 输入套件)

五.暴风产品经理分享

1.资源管理:把unity所有资源标识一个单独的key,做一张key与其存放路径的映射表,资源的房问就可以通过解析映射表完成,隔离了项目中对路径的依赖,不过要维护这种索引表还需要做一些支持工具,也有一定得代价

2.资源再次压缩。很多项目也采用了多AssetBundle的再次压缩操作,不过值得一提的是:暴风的团队他们根据自己的需求改了一些压缩算法,使得压缩率更高了

3.标准化资源存放路径,几乎所有项目都是遵守这种规则的,不过值得一提的是,我们可以对使用前面的AssetPostprocessor完成对资源的自动化处理

4.资源更新:在对资源更新有比较大的需求时,他们觉得使用untiy的www去更新资源效率太低,于是他们使用C# 的httpRequest加上多线程去下载资源,断点续传,更好的保证了资源下载的效率。

5.针对Json的数据压缩:他们主要提出了这么一个优化想法,当有一个序列itemList[{name : XXX1 ,price : 12},{name : XXX2 ,price : 13} ,{name : XXX3 ,price : 14} …….  ],这时我们发现数据中大量包含了“name”,“price”等关键key,造成数据冗余,这时可以选择以这种方式去做压缩itemList[{name : XXX1 ,price : 12},{ XXX2 ,13} ,{ XXX3 ,14} …….  ],减少了重复key的冗余

6.对代码的加密。这里也是很常规的做法,重新编译mono,从而加密dll,实现代码加密

7.兼容和适配:他们为了兼容各种低高端机型,做了各种对应的配置文件,当玩家首次进入游戏会高数服务器当前的机型,然后下载一份对应配置表,这样很大层度上可以解决机型适配问题。但是显而易见,这样做的工作量还是蛮大的

六.Instancing 技术分享

instancing技术网上信息很多,不做过多介绍,有兴趣的自己百度

1.instancing 可以减少drawCall 减低CPU的消耗,无法减少GPU负载。根据展示的demo,有一个一万多小石头的场景,draw call已经达到一万多了,但是使用instancing技术后draw call可以降到63

2.只有大量使用相对材质和相同网格的物体使用instancing技术才有价值,典型的植被系统

3,下图是一些使用注意事项

 

七.总结

unite大会大多数都是广告时间,但是也可以感受到新技术的气息,尤其高内暴风的干货分享值得点赞,遗憾的是,unite展示的各种游戏中没发现一款国内团队的作品,国内两大巨头网易和腾讯的分享也是广告+无聊的吹嘘。总体上说两天的收获勉强对得起1.2k的门票吧,哈哈

转载于:https://www.cnblogs.com/lixiang-share/p/5394671.html

你可能感兴趣的文章
spring-使用MyEcilpse创建demo
查看>>
DCDC(4.5V to 23V -3.3V)
查看>>
kettle导数到user_用于left join_20160928
查看>>
activity 保存数据
查看>>
typescript深copy和浅copy
查看>>
linux下的静态库与动态库详解
查看>>
hbuilder调底层运用,多张图片上传
查看>>
深入理解基于selenium的二次开发
查看>>
较快的maven的settings.xml文件
查看>>
Git之初体验 持续更新
查看>>
软件开发模型之瀑布模型
查看>>
Exception in thread "AWT-EventQueue-0" java.lang.IllegalThreadStateException
查看>>
随手练——HDU 5015 矩阵快速幂
查看>>
Python默认调用路径
查看>>
启动redis一闪就关
查看>>
Maven之setting.xml配置文件详解
查看>>
python简单小常识
查看>>
可视化框架设计-图表类型
查看>>
HDU1823 Luck ans Love 二维线段树
查看>>
富数据控件 DetailsView 和 FormView
查看>>