虚幻3引擎针对性能和内存的优化办法
发表于2016-09-28
制作关卡时除了要考虑视觉效果以外,还需要关注性能和内存。
内存即载入关卡时所需要的数据量,被暂存在内存里。包括:贴图、Mesh、VFX、音效等。XBOX360的总内存是512M(比现在的PC的内存要小很多),被分配给各个部分。各个部分有一处内存不足时,游戏就会报错跳出。就好像现在的PC游戏都要求一个最低配置,达不到配置时,就玩不了这个游戏。
在实时游戏中,以某款游戏为例,Xbox360 内存是这样划分的:
Xbox 360 Memory distribution
48 MB for meshes (static & skeletal)
175 MB textures (texture cache)
--120 MB Texture Cache
--55 MB non-streamed textures
UI
Light Map textures
Other textures flagged to not stream
32 MB Animation
32 MB Audio
性能即每一帧的计算速度,计算每一帧花费的时间越长表明性能越差。影响性能的因素有:同屏面数,同屏DPC(物件个数),材质球的复杂程度等
以FPS游戏为例,它的FPS(Frame per second)底限是30帧/秒,有时候高于30帧/秒时也会人为锁定在30.
在制作时,优先考虑内存,在内存不超的情况下考虑性能。处理性能和内存的方式不是固定的,需要根据实际情况而定。
Level制作中针对内存的优化方法:
1、避免出现只有使用1-2次的物件,用类似的频繁使用的物件替换,提高重用率
2、提高贴图重用率=减少贴图数量或提高贴图精度
3、尽量使用24位TGA图
4、通过玩游戏确认哪些是看得到的,通常mesh被加到玩家看不到的地方
5、确保没有隐藏的不起作用的mesh
6、通过跑游戏确认哪些是看得到的,避免mesh被加到玩家看不到的地方,玩家不太注意的地方也可以用精度比较低的模型贴图,如远景
7、在U3中优化ASE属性,一般用在游戏场景外的模型
Level制作中针对性能的优化方法:
1、利用大的遮挡减少出现在屏幕中的物件数量,尽量避免开阔的空间(能看到很多东西)
2、合理利用实时光,尽量用半径小的区域光,避免同一物体受多盏实时光的照射
3、使用静态光替代实时光,使用LightMap或顶点光
4、简化Shader,用便宜的方法模拟;经常用到有类似功能的Shader整合成模版;尽量不要使用双面显示
5、使用次数很多的高面mesh去掉或减面;确保使用次数很多的为简单Mesh,例如一个2000面的物件用了100次,考虑用200面的物件替换
6、通过修改设定,达到同样的视觉效果(原设没有太多限制的情况下可以使用)
腾讯GAD游戏程序交流群:484290331