SuperAPI AI 工具集

godot-optimization

编程与开发

查看项目

更新于 10-15 15:33

技能介绍

godot-optimization 是一个面向 Godot 引擎的性能优化技能,提供性能分析、瓶颈定位与优化技术方面的专业知识,适用于 2D 与 3D 游戏。

用途

用于帮助改善 Godot 游戏的性能问题,例如卡顿、掉帧、加载缓慢、内存问题或崩溃等场景。技能会在用户提及 lag、stuttering、性能缓慢、优化技术、性能分析、FPS 下降、帧率问题、性能测试、移动端/Web 优化、内存问题或崩溃,或询问“为什么我的游戏很慢”时启用。

主要能力

性能分析

  • 内置 Godot Profiler:在游戏运行时通过 Debug → Profiler 打开,包含 Frame、Monitors、Network、Visual 标签页。
  • 关键指标:FPS(流畅游戏应为 60,移动端可为 30)、帧时间(60 FPS 应小于 16.67ms)、物理帧时间、空闲时间。
  • Performance 监视器:可在代码中通过 Performance.get_monitor() 获取,包括 TIME_FPS、TIME_PROCESS、TIME_PHYSICS_PROCESS、MEMORY_STATIC、MEMORY_DYNAMIC、OBJECT_COUNT、OBJECT_NODE_COUNT、RENDER_OBJECTS_IN_FRAME、RENDER_VERTICES_IN_FRAME 等。

常见性能瓶颈及处理

  1. 过多的 _process() 调用:建议使用计时器或降低调用频率,或在不需要时通过 set_process(false) 关闭处理。
  2. 低效的节点查找:避免每帧 get_node(),改用 @onready 缓存节点引用。
  3. 过多的 get_tree() 调用:缓存分组结果或使用信号更新。
  4. 低效的碰撞检测:使用 Area2D/Area3D 自动检测替代每帧遍历所有对象计算距离。
  5. 过多的绘制调用:使用 TileMap 替代单独 Sprite2D、使用 MultiMeshInstance 渲染重复对象、使用纹理图集批处理、限制灯光与粒子数量。
  6. 未优化的脚本:避免每帧创建新对象,复用已有对象。

优化技术

  • 对象池(Object Pool):避免频繁创建/销毁对象。
  • 细节层次(LOD):根据与相机距离切换高/中/低细节模型或隐藏。
  • 空间分区:通过 ChunkManager 按区块加载与卸载。
  • 高效的碰撞层:合理设置 collision_layer 与 collision_mask。
  • 物理延迟调用:在物理回调中使用 call_deferred 修改物理对象。

内存优化

  • 纹理压缩:导入时压缩纹理,桌面使用 VRAM 压缩,移动端使用 ETC2/ASTC,适当减小纹理尺寸。
  • 音频优化:长音频(音乐、语音)使用流式,短音频(音效)使用采样;设置合适的循环模式与压缩模式。
  • 场景实例化:使用 preload 的场景 instantiate 共享资源,避免 duplicate。
  • 资源管理:使用 queue_free() 释放,必要时 ResourceLoader.clear_cache()。

渲染优化

  • 2D:UI 使用 CanvasLayer,限制粒子数量,谨慎使用 Light2D,同纹理精灵批处理。
  • 3D:使用遮挡剔除、烘焙光照、远距离 LOD、限制投影灯数量、限制视距、使用 SDFGI(Godot 4)。

平台特定优化

  • 移动端:检测 Android/iOS 后减少粒子数量、简化着色器、降低分辨率、关闭 SSAO 与 glow 等昂贵效果。
  • Web (HTML5):减少初始加载、资源流式加载、限制内存、避免重度物理计算。

使用方式

技能以工作流形式组织:

  1. 度量(Profile):使用 Godot Profiler 识别瓶颈,判断慢在 Process、Physics、Rendering 还是 Script。
  2. 定位(Locate):对可疑代码添加计时(Time.get_ticks_usec())打印耗时。
  3. 优化(Optimize):缓存查找、降低频率、使用更高效算法、移除不必要工作。
  4. 测试(Test):重新运行 Profiler 验证改善且无回归。
  5. 记录(Document):记录改动内容与原因。

技能会说明:为什么慢、采用何种优化技术、如何实现、预期改善。

适用场景

  • 游戏出现卡顿、掉帧、帧率不稳。
  • 需要性能分析或基准测试。
  • 移动端或 Web 平台的性能优化。
  • 内存问题或崩溃排查。
  • 2D/3D 游戏渲染、物理、脚本层面的优化。

限制

资料未提供该技能的安装方式、依赖要求、授权方式、收费信息或具体版本支持范围,这些信息暂未提供。