UNITY3D手游优化1认识硬件和资源规范/优化

发表于2016-12-20
评论2 3.6k浏览

  谈Unity3D优化前,我们首先针对需要优化的机型硬件有个认识。对于每种类型机型有个大概的了解,在优化的时候才更有针对性,每次优化的预期效果才能做到更精准.

  以下数据参考比较权威的GeekBench4gfxBench的数据针对CPU/GPU性能做对比

机型

CPU/GPU

单核(GB4)

多核(GB4)

1080p T-Rex Offscreen
(gfxBench)

备注

SmartisanM1

Snapdragon821/Adreno 530

1877

4685

92.7

 

OnePlus 3

Snapdragon820/Adreno 530

1707

4135

90.1

 

Galaxy S5

Snapdragon801/Adreno 330

961

2542

26.8

 

Mi 2S

Snapdragon600/Adreno 320

715

1666

15.3

中配机最低要求

RedMi 1S

Snapdragon400/Adreno 305

501

1185

5.7

低配机最低要求

 

 

 

 

 

 

iphone 7

A10

3412

5611

106.8

强大的单核性能

iPhone 6s

A9

2495

4199

81.6

 

iPhone 6

A8

1548

2587

48.1

 

 

 

 

 

 

 

 

i7 4790

4332

13886

 

 

 

i3 3240

3135

5908

 

 

 

AMD Phenom II X4 955

2170

6377

 

 

 

i3 380M

1816

3478

 

一代i3笔记本U

 

T2130

845

1292

 

2007的笔记本CPU

 

 

 

 

 

 

 

gtx970

 

 

984.2

桌面主流GPU依然强大

 

hd 530

 

 

121.7

i3-6100核显

 

hd 4400

 

 

55.9

i3-4130核显

 

hd 3000

 

 

30.3

i3 380M核显

 

gt 640M

 

 

98.5

 

数据来源

GeekBench4: http://browser.geekbench.com/v4/cpu/search

gfxBench (1080pT-Rex Offscreen):     https://gfxbench.com/result.jsp     

  从以上数据可以看出:

1、IOS系统的流畅一部分得益于单核性能的强大

2、Android而言, 高配的性能瓶颈更可能出现在CPU,中低配可能出现在GPU.低配的效果可以砍的狠点

3、手机硬件发展还是挺快的.可以乐观预期,不久后出现3A制作的手游

4、即使跑分接近,受限于散热,高温降频.手机真实性能也会打些折扣.

  大致了解手机硬件后,首先需要做的是制作资源规范.好的规范和自动检测流程是游戏优化的基础.

对于MOBA类游戏,规范如下:

  3D角色规范

 

 

(展示)

(展示)

英雄

面数

1650

900

900

6500

6500

贴图

_MainTex(256)
_LightTex(64)
_MaskMap(64)

_MainTex(256)
_LightTex(64)
_MaskMap(64)

_MainTex(256)

_MainTex(512)
_LightTex(64)
_MaskMap(512)
_BumpMap(512)

_MainTex(512)
_LightTex(64)
_MaskMap(512)
_BumpMap(512)

野怪

面数

1650

600

600

 

 

贴图

_MainTex(256)
_LightTex(64)

_MainTex(256)
_LightTex(64)

_MainTex(256)

 

 

小兵

面数

600

300

300

 

 

贴图

_MainTex(128)
_LightTex(64)

_MainTex(128)

_MainTex(128)

 

 

 骨骼数 英雄不要超过40,其他不要超过20

  技能特效规范

 

 

特效
(
单个Prefab)

粒子数量

15

11

8

贴图尺寸

320

320

320

面数

500

500

500

渲染器数量

6

4

3

  场景规范

 

高配

中配

低配

同屏最高面数

1.8W

1.8W

1.5W

drawcall

15

15

15

贴图数量
注:31024贴图尽量制作成(1024*2+512*1

贴图1024*3

透贴512*1

地表256*6

河道256*1

天空盒512*1

基地箭塔512*2

贴图1024*3

透贴512*1

地表256*6

河道256*1

天空盒512*1

基地箭塔512*2

贴图1024*3

透贴512*1

地表256*6

河道256*1

天空盒512*1

基地箭塔256*2

lightmap

1024*1

1024*1

512*1

功能草透贴(alpha)

透贴

透贴

实模

其他透贴(alpha)

地图周边配景

出生点特效

其他场景特效

地表混合

单块地表多维子材质数量最多为2个材质球,特殊情况可考虑3个。

模型Animation Type

None

None

None

  声音规范:

 

同时音效个数

20

15

10

环境音

   其他制作的注意事项

1、3D角色动画和特效上的动画,CullingType默认设置成BaseOnRender,可以减少CPU消耗.
某些特殊的特效动画,是通过把相应的结点设置成active false来做的.如果Anim的所有Render子结点都成false,动画的再次激活就会有问题
对于这些特殊的特效,可以手动检测并相应修正CullingTypeAlwaysAnimate.

2、场景内的小物件去掉static,手动合批.能省内

3、不要用UNITY_Terrain

4、Mesh除非有特殊用途,都设置成不可读/

  规范最终保证中配情况的数据如下:

       平均dc不超过100,峰值不超过200.三角形峰值不超过60000,均值不超过35000.PSS内存峰值不超过350M,均值不超过320M

  在上面规范的基础上,还要有一个自动检测资源的流程,每日把检测结果通知到相关人并敦促修改.

  除了资源规范外,还需要:

1、由于技能机制问题(比如单技能产生了5+的同一特效),可能存在资源符合规范但是实际跑起来性能比较差的情况.那么就需要单一英雄实际跑的渲染信息收集.超过一定的值给予警告.

2、每次出新英雄,都要做专项的性能测试.如果性能过差,找出可能的问题并修复

3、引入资源池,循环复用.使用完回收时,不做active = false.通过挪出屏幕来做.

4、自动分析单局信息,做充分的预加载.如果确实限于内存不能完全预载,可以内存越多预载越多的方式来做.

5、团战时,引入一个当前渲染压力的参数值,超过一定值,自动播放低级的效果.

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引