SuperAPI AI 工具集

godot-performance-optimization

编程与开发

查看项目

更新于 10-15 18:28

技能介绍

技能定位

本技能为 Godot 引擎的性能剖析与优化提供专家级蓝图,目标问题包括帧率下降(frame drops)、内存泄漏(memory leaks)与绘制调用(draw calls)过多等,核心手段包括使用 Godot Profiler、对象池、可见性剔除以及瓶颈识别。适用于诊断卡顿、针对目标 FPS 优化或减少内存占用等场景。

主要原则(优化中的禁止事项)

技能强调在优化前必须先剖析,禁止在没有数据的情况下凭猜测优化;禁止在发布构建中使用 print();禁止忽略 VisibleOnScreenNotifier2D 对屏幕外实体的处理;禁止在热循环中实例化节点;禁止在 _process() 中调用 get_node();禁止忘记批处理绘制调用;禁止在主线程阻塞执行重型操作;禁止在物理查询中使用复杂碰撞形状;禁止忘记断开局部 lambda 信号;禁止对大型纹理不启用 VRAM 压缩(桌面推荐 S3TC/BPTC,移动端推荐 ETC2,像素艺术应禁用压缩以避免失真);禁止在物理步骤中修改场景树;禁止在 Compatibility 渲染器中跳过 shader 预热。

剖析入口与决策树

技能指明从 Debug → Profiler(F3)进入,包含 Time、Memory、Network、Physics 标签页。决策树按 Profiler 标签页或症状推断可能原因并对应脚本,例如:Time 标签下同一脚本过热,可能源于分配、get_node 或 process;屏幕外 AI/VFX 过热源于不可见时仍在处理;Memory 持续上升源于泄漏或唯一资源;Physics 碰撞尖峰源于查询或节点 RayCast 泛滥;GPU/绘制调用源于唯一精灵或网格;N 规模下的 SceneTree 开销源于 Canvas/网格项泛滥;主线程卡顿(生成/解析)源于同步重活;人群寻路尖峰源于导航代理同帧更新;自定义游戏指标缺失监视器等。

可用脚本

技能提供一组脚本作为参考路径:object_pool_system.gd(热路径生成/销毁的强制项,复用而非内联自造 Array pop 池)、manual_culling_logic.gd(VisibilityNotifier 驱动的屏幕外重型实体 process 禁用)、rendering_server_direct.gd(当 SceneTree 开销占主导时使用 RenderingServer canvas/网格路径)、low_level_physics_query.gd(用直接空间状态查询替代数百个 RayCast 节点)、worker_thread_pool_manager.gd(用 WorkerThreadPool 卸载重活)、multimesh_optimizer.gd 与 multimesh_foliage_manager.gd(密集网格/植被的硬件实例化)、texture_array_batching.gd(Texture2DArray 批处理以减少材质切换)、shared_resource_strategy.gd(共享与场景本地内存权衡)、navigation_agent_optimization.gd(人群错峰路径更新)、custom_monitor_profiler.gd 与 custom_performance_monitor.gd(使用 Performance.get_monitor / 自定义监视器捕捉游戏特定尖峰)。

使用方式

技能建议:先打开 Debug → Profiler,仅加载与热点标签页或症状对应的脚本,不要为单个卡顿加载全部性能脚本。按决策树定位后选用相应脚本。深入内容(如路径时间切片、Compatibility shader 预热、VRAM 编解码表)可按需查阅 references/profiler-budgets-and-prewarm.md。官方文档链接建议在调研特定 API 时再打开,相关技能在需要路由到同类领域时再加载,不必预载整个知识网络。

适用场景与限制

适用场景涵盖诊断卡顿、按目标帧率优化、降低内存占用、减少绘制调用、人群寻路优化、自定义指标监控等。限制与注意事项散见于原则部分:优化须以剖析数据为前提;不同渲染器(Compatibility、Forward+、Mobile)的 shader 预热策略不同;VRAM 压缩编解码依平台而异;AStar/路径预算应归入导航代理优化脚本。技能本身聚焦方法与脚本指引,具体项目效果与性能提升幅度暂未提供。