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

一.日本Marza 分享 《The Gift》

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

二.Unity5.4 渲染改善

a.实时渲染

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

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

附上两个关于渲染的文章链接:http://www.cnblogs.com/alonecat06/archive/2012/09/24/2700747.html

https://community.arm.com/community/arm-cc-cn/blog/2014/06/06/mali-gpu-%E6%8A%BD%E8%B1%A1%E6%9C%BA%E5%99%A8-%E7%AC%AC%E4%B8%80%E9%83%A8%E5%88%86-%E5%B8%A7%E7%AE%A1%E7%BA%BF%E5%8C%96

b.一些新技术

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

2.Cinematic Image Effects: 对影视常用效果提供了一些脚本和资源,大都作用已Camera上,并且是开源的https://bitbucket.org/Unity-Technologies/cinematic-image-effects/downloads

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

4.Memory Profiler : unity开发的一款开源内存监视器,用起来还是蛮方便的https://bitbucket.org/Unity-Technologies/assetbundledemo

5.另外发现了unity的开源仓库原来在https://bitbucket.org/Unity-Technologies/,里面有不少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的门票吧,哈哈

2016Unite Shanghai 总结的更多相关文章

  1. 将一句话里的单词进行倒置,标点符号不倒换。比如将“I come from Shanghai.”倒换后变为“Shanghai. from come I”

    string str = "I come from Shanghai."; //根据空格切割 string[] strS = str.Split(' '); string temp ...

  2. Shanghai Regional Online Contest 1004

    Shanghai Regional Online Contest 1004 In the ACM International Collegiate Programming Contest, each ...

  3. Amazon Kindle Device is hiring in Beijing Shanghai and Shenzhen!

    This is Angela from recruitment team of Amazon Kindle Device Software & Applications, we are exp ...

  4. 为什么选择Premium Fabric Shanghai

    展商首页 为什么选择Premium Fabric Shanghai

  5. Unite'17 Shanghai再一次问候

    Unite'17 Shanghai再一次问候 --暨Unity2017年度大会 2017年5月11日,主题为"再一次问候"的Unity年度盛会在上海国际会议中心举行,这是Unity ...

  6. 王者齐聚!Unite 2017 Shanghai 日程讲师全揭晓

    汇聚了来自全球的 Unity开发者.发行商.培训家及爱好者的 Unite 2017 Shanghai 即将于于 5 月 11 日-13日在上海·国际会议中心隆重举行.Unite 大会是由 Unity ...

  7. 解决mysql设置时区时的错误Unknown or incorrect time zone: 'Asia/Shanghai'

    Mysql默认时区格式是'+8:00'的格式,这个时区可以在my.ini中[mysqld]节点下设置 default-time-zone = '+8:00' 默认这个设置是没有的 但是mysql不支持 ...

  8. 关于服务器时区BEIST-8、GMT-8、Asia/Shanghai、CST、GMT+8:00等缩写的含义

    http://www.talkwithtrend.com/Article/147961 AIX系统时区总结 字数 2078阅读 5844评论 0赞 0 前几天NTP的问题牵涉出时区问题,大家可能被眼花 ...

  9. Unite Shanghai 2019全日程曝光(建议收藏)

    https://mp.weixin.qq.com/s/KvAyXpDhqWROtTX1Ol3a4Q 5月10-12日,Unite Shanghai 2019即将在上海国际会议中心正式开幕.本次大会共设 ...

随机推荐

  1. SQL Server ALwayson 正在解析

    原因:把主库切换到辅助副本以后,集群全部出现正在解析的情况,数据库显示“恢复挂起” 过程:把服务器重启,原以为正在解析会恢复正常.结果失败. 解决方法:出现“正在解析”的情况跟故障转移群集有关,进故障 ...

  2. selenium2 TestNG参数化

    想要参数化,首先要加入@Parameters({"参数1","参数2"}) package com.demo.test; import java.util.co ...

  3. #ifndef、#def、#endif说明

    你所遇到的这几个宏是为了进行条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一 部分内容指定编译的条件,这就是“条件编译”.有时,希望 ...

  4. HDU 5238 Calculator 线段树 中国剩余定理

    题意: 给一个计算器,有一系列计算步骤,只有加,乘,幂三种运算. 有一种查询操作:查询初始值为\(x\)的时候,最终运算结果模\(29393\)的值. 有一种修改操作:可以修改第\(p\)个运算的运算 ...

  5. 【Jenkins】Jenkins的安装与配置

    一.环境准备 1.下载jdk 官方下载地址:http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133 ...

  6. luogu2123 皇后游戏

    好题. 网上看到的范围是:\(T \leq 10\),$ n \leq 50000$, $ a_i,b_i \leq 10^9$. 我们按照贪心惯常的思路考虑交换相邻的两个人.容易发现,对于相邻的两个 ...

  7. dubbo rpc filter实现剖析(一)

    2.6.3版本,之前读的是2.4.9版本 本篇主要阐述dubbo rpc的filter的实现,包括作用,用法,原理,与Spring Cloud在这些能力的对比. 共提供了多少个?是哪些?发布时默认装配 ...

  8. python - 接口自动化测试实战 - case1 - 优化版

    题目: 基于以下两个接口和数据完成接口自动化测试,并生成测试报告: '''登录 login='http://47.107.168.87:8080/futureloan/mvc/api/member/l ...

  9. dict的特性和基本语法——python3.6

    特性 key:value结构,字典中的每一个元素,都是键值对 key必须可被hash,且必须为不可变数据类型,必须唯一 可存放任意多个值,可修改,可以不唯一 无序 查找速度快,因为hash可以把key ...

  10. JAVA-两种后台页面跳转方式

    1.请求转发 RequestDispatcher rd = request.getRequestDispatcher("url"); rd.forward(request, res ...