# iOS高性能与高性能+模式
# 一、什么是高性能模式
在 iOS 环境下,标准的美团小游戏 native 运行模式是无 JIT,对于计算性能要求较高的游戏会受到比较大的限制。常见情况是:
- 中低端机帧率低,流畅度难以达到上线标准;
- CPU 占用过高,长时间运行后设备持续发烫。
小游戏环境框架提供了高性能运行模式,该运行模式下 CPU 算力得到明显提升。但该模式也存在更严格的内存与代码包体限制,需要开发者采取合适的手段以达到最优。
# 二、什么是高性能+模式
高性能+模式开创新地在保留游戏独立进程的基础上将渲染重新挪回了美团进程,这使得渲染效果和渲染内存消耗都得到了改善。详细文档请查阅高性能+模式。特别地,建议使用 WebGL2、内存压力大的游戏开启此选项。开启后请验证进程内存、渲染兼容性、帧耗时数据是否正常。
# 三、系统与版本要求
- 系统要求:iOS ≥ 14.0
- 美团版本:版本号 >= 12.46.400,低于该版本号不支持通过
game.json中配置高性能/高性能+模式,仅支持远端配置下发。 - 开发阶段建议尽可能使用高版本的美团。
# 四、高性能模式
# 4.1 如何开通
在 game.json 中配置:
{
"mtiOSHighPerformance": true
}
去掉该开关即可回退到普通模式,便于两种模式对比验证。
# 4.2 工作原理
- 读取到
mtiOSHighPerformance: true后,容器将运行结构切换为 Web 内核; - 使用 WKWebView 承载 JS 执行与 Canvas 渲染;
- 相比 Native 内核,WASM 执行具备 JIT 能力,CPU 算力显著提升。
# 4.3 内存与包体限制
高性能模式下 WASM 会被编译并优化,占用更多编译消耗与内存。上线发布前强烈建议完成以下优化,否则可能出现:
- 超出内存限制而崩溃;
- 启动阶段(如前 1 分钟)设备明显发烫。
| 优化项 | 说明 |
|---|---|
| WASM 代码分包 | 降低启动期 JIT 编译开销,缓解发烫 |
| 压缩纹理 | 降低显存与包体积 |
| 堆内存预留 | 控制内存峰值,避免 OOM |
# 五、高性能+模式
# 5.1 如何开通
高性能+是高性能模式的升级,必须先开启高性能模式。在 game.json 中同时配置两个字段:
{
"mtiOSHighPerformance": true,
"mtiOSHighPerformance+": true
}
⚠️ 必须两个开关都为 true。仅配置
mtiOSHighPerformance+而不配置mtiOSHighPerformance时,高性能+不会真正生效(容器在创建 Native GL 渲染视图时要求"Web 内核 + Plus 开关"同时成立)。
# 5.2 工作原理
高性能模式虽然算力强,但渲染完全受限于 WKWebView,存在渲染效果与内存问题。高性能+模式在保留 Web 内核(WKWebView 跑 JS) 的基础上,将渲染管线重新挪回 Native GL。
# 5.3 适用场景
建议以下情况开启高性能+:
- 使用 WebGL2 的游戏(尤其需要兼容 iOS 14~15 用户);
- 内存压力较大、渲染内存过高的游戏;
- 开启高性能模式后渲染效果/帧耗时仍不达标的游戏。
# 5.4 开启后需验证
- 进程内存是否下降、是否稳定;
- 渲染兼容性(是否有花屏、UI 闪烁、纹理异常);
- 帧率与单帧耗时数据。
# 六、如何判别当前处于哪种模式
1、日志方面:
删除本地小游戏(含开发版、体验版、正式版);
重新进入小游戏并打开调试;
查看启动日志,关注运行结构相关字段:
- 普通模式 →
use new structure (native) - 高性能模式 →
use new structure (web) - 高性能+模式 → 在
web基础上,渲染走 Native GL(WKWebView 透明、仅跑 JS)
2、游戏画面:
可以通过点击右上角菜单弹出来的面板判断当前处于哪种模式,如下所示,从左到右分别为 native、高性能和高性能+模式:

# 七、配置字段速查表
# 游戏方配置(game.json)
| 字段 | 类型 | 默认 | 作用 |
|---|---|---|---|
mtiOSHighPerformance | bool | false | 开启高性能模式(Web 内核) |
mtiOSHighPerformance+ | bool | false | 开启高性能+模式(需同时开启高性能模式) |
# SDK 侧远端配置(Horn 下发,游戏方提需求)
| 字段 | 类型 | 默认 | 作用 |
|---|---|---|---|
structure | int | — | 远端覆盖运行内核(1=Native, 2=Web) |
wkWebViewPlusMode | bool | NO | 远端覆盖高性能+开关(iOS 14+) |
远端
structure/wkWebViewPlusMode一旦配置,优先级高于 game.json(仅 iOS 14+ 生效)。
# 八、常见问题
Q1:游戏需要修改代码吗?
普通模式、高性能模式、高性能+模式三者可无缝切换,业务代码无需调整。
Q2:只配了 mtiOSHighPerformance+ 为什么没生效?
高性能+必须同时开启高性能模式(mtiOSHighPerformance: true)。容器在创建 Native GL 渲染视图时要求"Web 内核 + Plus 开关"同时成立,缺一不可。
Q3:配置了 mtiOSHighPerformance 为什么没生效?
检查美团版本号是否大于 12.46.400,低于该版本号不支持通过 game.json 中配置高性能/高性能+模式;确认美团方远端是否已经配置 structure/wkWebViewPlusMode,远端配置优先级高于 game.json。
Q4:开启高性能+后出现花屏/纹理异常?
部分 WebGL texImage2D 的 RGB 格式存在兼容问题,建议统一使用 RGBA:
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
若仍无法解决,请联系平台排查。
Q5:开启高性能模式后启动发烫?
多为未做 WASM 代码分包导致启动期 JIT 编译开销过大。建议上线前完成 WASM 分包、压缩纹理、堆内存预留等优化。