网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,为客户提供稳定流畅、低时延、高并发的视频直播、录制、存储、转码及点播等音视频的PaaS服务。在线教育、远程医疗、娱乐秀场、在线金融等各行业及企业用户只需经过简单的开发即可打造在在线音视频平台。接下来为大家介绍游戏开发性能优化经验总结。
优化概论
说起游戏的优化,在游戏开发中经常分为这几步:
1.首先要确定游戏中经常会出现哪些问题 – Profile
2.然后确定在哪些方向进行性能优化 – Analyze
3.最后再尽可能将问题逐个解决 – Solve
接着,我们再来说说游戏优化中主要的四个考虑方向:
CPU
引发的问题:
由于短时间内的计算量太大,导致画面流畅性降低,俗称跳帧
发热严重,耗电量高
常见的优化手段:
将计算分到多个逻辑帧中进行计算,避免短时间内的性能超过负荷,俗称“分帧”(time-slice)。
将可以缓存的数据尽可能的缓存起来,避免重复计算和重复分配内存,常见的示例为“内存池”。
使用合理的算法和数据结构,比如:冒泡排序和直接插入排序在整体数组比较有序的情况下效率大大好于快速排序。把快排替换成是优化程序排序效率的一个常见的思路。
GPU
引发的问题:
发热严重,耗电量高
FPS降低
常见的优化手段:
优化美术资源,比如合理规划图集,约定好模型的最大三角形面数,制定合理的粒子效果规范。这个可以说是游戏优化中最重要的一个,因此,技术美术在游戏开发中作用巨大。
简化或者优化着色器(shader),如在游戏开始前就对Shader进行编译和加载。
使用Batching,尽量减少DrawCall
使用平台推荐的压缩格式,比如安卓平台的ETC1和IOS平台的PVRTC
IO和网络
引发的问题:
网络延迟甚至掉线
加载资源导致的跳帧
加载时间过长
常见的优化手段:
使用独立的线程进行加载,有些引擎如Unity中还能利用协程
减少网络包里面的冗余数据
合并小包,减少请求数据的次数
分帧对回包进行处理
限制一定时间内的发包频率
内存
引发的问题:
闪退和卡死,比如安卓的Low Memory Killer会在低内存情况下杀掉内存占用过大的程序。
常见的优化手段
动态加载和卸载资源,比如在游戏内的时候,我们可以把游戏外的一些UI图集卸载掉。
降低资源质量或屏幕分辨率,这是有损优化,一般作为最后的手段
更多技术分享,请关注网易视频云官方网站或者网易视频云官方微信(vcloud163)进行交流与咨询