文档中心 > 开发指南

性能优化概述

更新时间:2024/05/09 访问次数:798

一、运行性能与玩家体验

游戏运行性能,对于玩家核心玩法的体验至关重要,优秀的运行性能是玩家长期留存、在线时长的重要保证。

1)游戏画面品质既要精美,而且要顺畅的运行。

2)开发者要保证游戏流畅度的情况下,也需要考虑设备发热量等问题。

3)确保小游戏在不同的运行设备、网络等环境下依然能足够稳定。

运行性能需要关注的数据指标可以参考评测标准。要提升小游戏的运行性能,我们需要理解小游戏的运行框架与常见的游戏优化方案。

二、运行环境

运行环境的不同,必然导致相同的游戏代码在不同平台下的运行性能表现不同,我们需要考虑小游戏在不同平台下的差异。

1)淘宝的 js 虚拟机是自研的,不是基于 v8 开发。draw call 次数相比其他平台对帧率的影响更大,应该尽量减少 draw call 的次数。 引擎中可以开启图集合批功能来降低 draw call 次数。

2)iOS则与淘宝相同进程,对于内存OOM限制则更为苛刻。

三、最佳实践

1. 降低小游戏内存使用

  • 提前规划美术资源
    项目初期根据玩家设备能力与业务需求,规划不同场景下资源的大小。比如创建角色、大厅、战斗单局等图片尺寸与像素精度,音效采样率等。
  • 资源尽快释放
    在检测到内存紧张的时候采取更为积极的释放策略,优先保证游戏的稳定性。
  • 使用纹理压缩
    纹理压缩是一种专为在计算机图形渲染系统中存储纹理而使用的图像压缩技术。与普通图像压缩算法的不同之处在于,纹理压缩算法为纹素的随机存取做了优化。目前淘宝Android支持 ETC/ASTC 格式、iOS支持 PVRTC 格式。

2. 合理利用设备的计算能力

  • 控制计算复杂度与频率
    目前JS脚本执行效率问题,对于较为复杂的游戏比如MOBA、FPS的游戏需要注意控制计算逻辑复杂度。
  • 关注垃圾回收带来的计算负担
    在权衡内存压力的情况下使用对象池,减少对象的临时创建,垃圾回收本身也会对CPU造成压力,从而造成游戏的瞬间卡顿,影响游戏操作体验。
  • 将更多的计算转到GPU
    在CPU出现瓶颈而GPU较为空闲时,可以采用GPU进行分担,比如GPU骨骼动画、GPU粒子等。

3. 资源规划与渲染能力

  • 图集合并
    合成图集时会去可以一定程度上减少整体游戏包体,并且有利于引擎进行批次优化,降低CPU处理时间。
  • 渲染合批
    开发者可以将一些使用相同材质的物体模型合并成一个模型,或游戏引擎工具在处理渲染队列时进行渲染批次优化,降低DrawCall的数量。
  • 降低模型复杂度
    评测不同机型能处理的模型定点数、面数的上限,使用LOD技术或在低端设备降低模型精度来提升游戏流畅程度。


FAQ

关于此文档暂时还没有FAQ
返回
顶部