说起游戏的优化,在游戏开发中经常分为这几步:
首先要确定游戏中经常会出现哪些问题 - Profile
然后确定在哪些方向进行性能优化 - Analyze
最后再尽可能将问题逐个解决 - Solve
游戏开发中一定是先做工具,进行Profile,再进行优化,所以,说优化就不得不再扯一下Profile。
常见的工具有一些是引擎和IDE自带的,比如Unity自带的Profiler,就包含了CPU,GPU,Memory等等各式各样的性能分析工具, 其他的比如GPA,Xcode Instrument和Visual Studio,Intel自带的内存管理工具在必要的时候也使需要去学习和使用的。
另外一些工具,就需要根据游戏的需求去编写了,比如一键关闭所有特效,一键更改分辨率等等,一键设置场上NPC数量,简单的游戏如啪啪三国是做成快捷键开启Profile功能的,更为复杂的游戏如神秘海域则是通过游戏内控制台来进行更为细致的Profie。
接着,我们再来说说游戏优化中主要的四个考虑方向:
1、CPU
引发的问题:
由于短时间内的计算量太大,导致画面流畅性降低,俗称跳帧
发热严重,耗电量高
常见的优化手段:
将计算分到多个逻辑帧中进行计算,避免短时间内的性能超过负荷,俗称“分帧”(time-slice)。
将可以缓存的数据尽可能的缓存起来,避免重复计算和重复分配内存,常见的示例为“内存池”。
使用合理的算法和数据结构,比如:冒泡排序和直接插入排序在整体数组比较有序的情况下效率大大好于快速排序。把快排替换成是优化程序排序效率的一个常见的思路。
2、GPU
引发的问题:
发热严重,耗电量高
FPS降低
常见的优化手段:
优化美术资源,比如合理规划图集,约定好模型的最大三角形面数,制定合理的粒子效果规范。这个可以说是游戏优化中最重要的一个,因此,技术美术在游戏开发中作用巨大。
简化或者优化着色器(shader)
使用Batching,尽量减少DrawCall
使用平台推荐的压缩格式,比如安卓平台的ETC1和IOS平台的PVRTC
3、IO和网络
引发的问题:
网络延迟甚至掉线
加载资源导致的跳帧
加载时间过长
常见的优化手段:
使用独立的线程进行加载,有些引擎如Unity中还能利用协程
减少网络包里面的冗余数据
合并小包,减少请求数据的次数
分帧对回包进行处理
限制一定时间内的发包频率
4、内存
引发的问题:
闪退和卡死,比如安卓的Low Memory Killer会在低内存情况下杀掉内存占用过大的程序。
常见的优化手段:
动态加载和卸载资源,比如在游戏内的时候,我们可以把游戏外的一些UI图集卸载掉。
降低资源质量或屏幕分辨率,这是有损优化,一般作为最后的手段。
其实这四个方面的优化总是相互制衡的,你把一个方面的优化做好了,另一个方面的问题又会出现了,比如,我们如果使用动态加载和卸载资源,这就虽然减少了内存占用量,会在IO上造成加载时间延长的问题。
所以,我们在做游戏优化的时候,不能太追求完美,刚刚好就是真的好(Good Enough Is Fine)。最终使得以上这四个方面能达到均衡即可,切忌在某一方面优化过头,又引发其他方面的问题,此消彼长的情况下,有时反而不如不做优化。
- 浏览: 92128 次
- 性别:
- 来自: 上海
相关推荐
2022年公募基金投资策略:均衡配置,攻守兼备.pdf
《实用负载均衡技术:网站性能优化攻略》 英 Peter Membrey [PDF] @ckook pdf
4G优化案例:RF结合参数调整精准解决VOLTE质差小区问题优化案例.docx4G优化案例:RF结合参数调整精准解决VOLTE质差小区问题优化案例.docx4G优化案例:RF结合参数调整精准解决VOLTE质差小区问题优化案例.docx4G优化...
一周集萃:股指:均衡配置抓阶段性反弹机会.pdf
SQL Server性能优化 SQL Server语句查询大型数据库运行缓慢,此资源从几方面分析。
nginx配置优化+负载均衡+动静分离详解 每个请求按照ip的hash结果分配,同一个ip的访客固定访问一个后端服务器,可解决动态网页session共享问题
网络安全:均衡、主权与军控.pdf
2021年宏观中期策略:均衡之道.pdf
城轨车辆制动(中英双语)课件:均衡阀.pptx
包含多种负载均衡手段,如nginx、Dns、http负载均衡、数据库负载均衡、SSL、集群、云平台的负载均衡等,学到就是赚到
基金产品研究:房地产ETF基金(515060):均衡布局行业复苏.pdf
2021年宏观中期策略:均衡之道(19页).pdf
有色周观点:均衡配置黄金及5G、新能源相关材料.pdf
2021年10月权益基金投资策略报告:均衡配置,攻守并重.pdf
实用负载均衡技术网站性能优化攻略.pdf
网络游戏-网络编码环境下优化负载均衡的方法.zip
Nginx常用配置、负载均衡及优化