> 写得出还要跑得快、发得出。本篇前半讲性能分析的正确姿势,后半是完整发布地图——包括那个被误解最多的问题:「Godot 能上主机吗?」
一、性能分析:先测量,再动刀
Godot 内置三件测量工具:
- Profiler(调试器面板):按函数看耗时,勾「Frame Time」与「CPU 时间」,先找最贵的函数;
- Monitors(监视器):FPS、内存、draw call、对象数、视频显存——曲线级实时观测;
- Video/RenderingServer 信息:查 draw call 数与纹理显存。
- ObjectDB 快照与对比:运行时任意时刻抓「全部存活对象」快照,两份对比即知谁被创建、谁没被销毁——内存泄漏从「猜」变成「看」;
- 专业追踪器接入:Tracy、Perfetto、Instruments 一键对接(Android 上 4.7 起默认 Perfetto),GDScript/C#/GDExtension 全链路火焰图。
_process 里 get_node、每帧实例化、无节制的 Tween 与粒子。先修这些,再谈 GPU。二、渲染侧的四板斧
- 2D 批处理:同纹理连续提交合并 draw call。打散因素(贴图交替、canvas 层夹叠、独立 shader)逐项排查;图集(AtlasTexture/TexturePacker)是解药——4.7 还让
TextureRect支持 AtlasTexture 的区域重复绘制(nine-patch),低端机纹理切换再省一截。 - MultiMesh:几千个同款物体(草地、弹壳、粒子云)用 MultiMeshInstance3D,一次 draw call 画完全部。
- 合并与 LOD:静态小物件合并网格(Mesh 菜单)、远处开 LOD(4.6 的组件剪除让 LOD 保形更好)。
- 视口降采样 + 4.7 新增的最近邻缩放:低分辨率渲染再锐利放大,复古风游戏白赚一半帧率。
physics_ticks_per_second,需要更顺滑开物理插值(4.5 重做过)。线程侧:重活扔 WorkerThreadPool(add_task / add_group_task),别自己裸管 Thread 生命周期。三、导出:平台地图全览
导出前装模板(4.7 起模板下载器按平台按架构按需下载,不用再全量拉)。各平台现状:
- Windows:一键出 exe;4.5 起改元数据不再依赖 rcedit 工具(跨平台打包也能改图标与产品信息)。4.6 起 Windows 新项目默认 D3D12。
- Linux / macOS:Linux 直出;macOS 需要 Apple 开发者账号签名与公证(有 per-架构模板)。
- Web(HTML5):Compatibility 渲染器专用;4.5 起 WASM SIMD 白赚性能;SharedArrayBuffer 需要服务器正确响应头(itch.io 有现成托管方案)。
- Android:JDK + Android SDK 配置一次,之后 Gradle 导出;4.6/4.7 的 GABE 让这一切可以在安卓设备上完成;自适应图标、内嵌启动画面(4.7 可在导出面板直接编辑)、SAF 文件访问、PiP 小窗(4.7)齐备。
- iOS:需 macOS + Xcode 出 ipa;4.7 手柄支持切到 SDL3。
- visionOS(4.5+):导出为空间里的「窗口应用」,Vision Pro 首个原生支持 Godot 的平台——4.8 dev 还在加手部追踪与 PSVR2 控制器支持。
- 主机(Switch/PS5/Xbox):官方不提供,且这不是 Godot 独有的限制——主机 SDK 全在 NDA 之下,任何引擎(包括 Unity/UE)都不能公开分发主机导出模板。Godot 的解法是认证第三方:W4 Games 提供 Switch/PS5/Xbox 的官方中间件移植,另有 Lone Wolf Technology、Pineapple Works、RAWRLAB、mazette! 等一列服务商标在官方文档里。结论:能上主机,走商业服务,先和平台方签约拿到开发者资质。
- Steam Deck:官方支持(走 Linux 模板),Steam 上大量的 Godot 游戏已验证这条路。
godot --headless --export-release 自动出包。四、上线前检查清单
- 帧率目标下跑通完整一关(不只主菜单);
- 手柄全流程可玩(4.7 的
Ignore Joypad on Unfocused Application别忘了); - 存档兼容性(版本号存进存档,防升级炸档);
- 多语言(CSV
?context/?plural列,4.6 起连 C# 的Tr()都能自动提取进 POT); - 导出前跑一遍着色器预编译(4.5 的 shader baker),消灭玩家端首次编译顿挫。
*本篇配图:性能管线与多平台发布。*