godot-builder 是面向 Godot 4.7-stable 命令行(CLI)的专家级程序化游戏开发与无头自动化技能。它通过环境变量 GODOT_PATH 与 GODOT_CONSOLE_PATH 覆盖引擎路径,便于在自定义安装位置运行。
主要用途
该技能围绕四类目标设计:(1)以编程方式构建复杂场景树或 UI 布局;(2)自动化 3D 资产管线,例如将 glTF 转为带碰撞体的场景;(3)无头优化程序化几何体,例如把 CSG 烘焙为静态网格;(4)搭建生产级 CI/CD 流水线。
专家自动化工作流
工作流一:加固的 3D 资产管线。目的是把原始 3D 资产自动导入为带准确物理碰撞的场景。流程为 gltf_processor.py → collision_generator.py → save_scene.py,随后执行 godot -e --headless --import(或 import_automator.py)。该流程为每个节点显式设置 owner,并在最后强制无头导入以修补缺失的 UID 序列化。常见失败情形包括:无头保存后 UID 缺失(属预期,因 ResourceSaver 在无头模式不序列化 UID,可重跑 --import,必要时再用 update_project_uids.py);导入挂起不退出(脚本缺少 quit() 或等待 GPU,需确保调用 get_tree().quit() 并借助 XDG_* 隔离);碰撞网格为空或错误(源 glTF 缺少网格数组或节点路径有误)。
工作流二:程序化关卡优化与 4.4+ 缩放。目的是生成优化的程序化关卡区块,且不在实例间造成共享资源状态损坏。流程为 csg_optimizer.py → duplicate_deep(Resource.DEEP_DUPLICATE_ALL) → navmesh_baker.py。使用 duplicate_deep 隔离材质与资源,在触发 NavMesh 寻路前先将 CSG 烘焙为静态几何。失败情形包括:在实时 CSG 上烘焙 NavMesh 导致寻路空洞;材质或状态在区块间串扰(因使用了浅复制);无头烘焙挂起(缺少 quit())。
工作流三:生产 CI/CD 与强制导入验证。目的是验证跨平台构建并确保全局项目设置(如 VRAM 压缩)被严格应用。流程为 rm -rf .godot/imported → test_runner.py → profile_generator.py → ci_exporter.py。该流程强制完整重新导入以验证资产压缩,通过 XDG 变量隔离 CI 运行,并从环境变量注入安全密钥库路径。失败情形包括:导出预设缺失或平台错误(需在 --export-release 前无头运行 ci_export_prepper.gd);无头 CI 挂起不退出(脚本需以 quit() 结尾);缓存清空后 UID 或导入验证失败(需重跑 --import 后再执行 update_project_uids.py)。
自动化与 CI/CD 要点
程序化资产重新导入:使用 ConfigFile 修改 .import 文件,并通过 EditorFileSystem.reimport_files() 在主线程安全触发批量更新,避免手动逐张调整纹理压缩。孤立资源检测:用 ResourceLoader.get_dependencies() 递归追踪主场景实际引用的资产,把其余标记为冗余以减小构建体积。无头 CI/CD:用 --headless --script 执行版本化任务(修改 export_presets.cfg),再运行最终 --export-release;无头脚本务必以 quit() 结尾,否则 CI 运行器会无限挂起。
核心脚本
场景与资产管线:gltf_processor.py(无头将 .glb/.gltf 转为 Godot 场景)、collision_generator.py(从网格生成 ConcavePolygonShape3D)、save_scene.py(安全保存节点树,需先设 owner)、csg_optimizer.py(CSG 布尔运算烘焙为静态网格)、navmesh_baker.py(异步无头 NavMesh 烘焙)、tilemap_generator.py(按 JSON 生成 TileMapLayer 网格)、ui_assembler.py(按 JSON 构建 GUI 布局)、create_scene.py/add_node.py/load_sprite.py(程序化场景树构建)、export_mesh_library.py(场景转 .meshlib)、orphan_asset_scanner.gd(递归依赖追踪)。
CI/导入/导出管线:ci_exporter.py(无头编排多平台发布导出)、ci_export_prepper.gd(export_presets.cfg 无头版本化)、profile_generator.py(生成用于模块裁剪的特性配置)、test_runner.py(无头执行 GUT/doctest 单元与集成测试)、import_automator.py/asset_reimport_utility.gd(批量导入强制)、update_project_uids.py/get_uid.py(无头保存后 UID 同步)、config_compiler.py(JSON/CSV 编译为 .cfg)。
附录为轻量 CLI 包装器(按需加载,不建议预载):launch_editor.py、run_project.py、stop_project.py、get_debug_output.py、get_godot_version.py、get_project_info.py、list_projects.py。
关键约束与限制
不要无头保存运行时生成的 UID,需以 godot -e --headless --import 作为后处理;Godot 4.4+ 不要用 duplicate(true),改用 duplicate_deep;不要硬编码 .tscn/.tres 扩展名,用 uid:// 加载;GPU 相关调用应使用 RenderingServer.call_on_render_thread();专用服务器构建不要启用 Shader Baker;调用 ResourceUID.set_id() 前要先 has_id();单任务不要加载完整脚本目录,只加载工作流中指定脚本。具体收费、价格与商业条款暂未提供。