setup-engine
$
npx mdskill add pixel-cellar/Claude-Code-Game-Studios/setup-engine配置游戏引擎和版本,确保知识覆盖并补充缺失信息
- 解决项目缺少明确引擎配置或版本不匹配的问题
- 依赖文件读取、网络搜索和用户输入进行决策
- 根据游戏类型、平台、团队规模和预算推荐引擎
- 通过锁定版本并填充文档提供可操作的开发起点
SKILL.md
.github/skills/setup-engineView on GitHub ↗
--- name: setup-engine description: "配置项目的游戏引擎和版本。将引擎锁定到 CLAUDE.md 中,检测知识缺口,当版本超出 LLM 训练数据时通过 WebSearch 填充引擎参考文档。" argument-hint: "[engine version] or no args for guided selection" user-invocable: true allowed-tools: Read, Glob, Grep, Write, Edit, WebSearch, WebFetch, Task --- 当此技能被调用时: ## 1. 解析参数 三种模式: - **完整规格**:`/setup-engine godot 4.6` — 已提供引擎和版本 - **仅引擎**:`/setup-engine unity` — 已提供引擎,版本将自动查找 - **无参数**:`/setup-engine` — 完全引导模式(引擎推荐 + 版本选择) --- ## 2. 引导模式(无参数) 如果未指定引擎,运行交互式引擎选择流程: ### 检查现有游戏概念 - 如果存在,读取 `design/gdd/game-concept.md` — 提取游戏类型、范围、目标平台、美术风格、团队规模,以及 `/brainstorm` 给出的引擎推荐 - 如果概念不存在,告知用户: > "未找到游戏概念。建议先运行 `/brainstorm` 发现你想构建什么 — 它还会推荐引擎。或者告诉我你的游戏想法,我可以帮你选择。" ### 如果用户想在无概念的情况下选择,询问: 1. **什么类型的游戏?**(2D、3D,或两者兼具?) 2. **什么平台?**(PC、移动端、主机、网页?) 3. **团队规模和经验?**(单人新手、单人经验丰富、小团队?) 4. **有强烈的语言偏好吗?**(GDScript、C#、C++、可视化脚本?) 5. **引擎授权预算?**(仅免费,还是可接受商业授权?) ### 给出推荐 使用以下决策矩阵: | 因素 | Godot 4 | Unity | Unreal Engine 5 | |------|---------|-------|-----------------| | **最适用于** | 2D 游戏、小型 3D、单人/小团队 | 移动端、中等规模 3D、跨平台 | 3A 级 3D、照片级写实、大型团队 | | **语言** | GDScript(+ C#,通过扩展支持 C++) | C# | C++ / Blueprint | | **费用** | 免费,MIT 许可证 | 收入门槛以下免费 | 收入门槛以下免费,5% 版税 | | **学习曲线** | 平缓 | 中等 | 陡峭 | | **2D 支持** | 优秀(原生) | 良好(但以 3D 为优先) | 可行但非理想选择 | | **3D 质量上限** | 良好(快速提升中) | 非常好 | 业界领先 | | **Web 导出** | 支持(原生) | 支持(有限制) | 不支持 | | **主机导出** | 通过第三方 | 支持(需要授权) | 支持 | | **开源** | 是 | 否 | 源码可用 | 给出排名前 1-2 的推荐及其与用户回答相关联的理由。 让用户自行选择 — 永远不要强制推荐。 --- ## 3. 查找当前版本 引擎确定后: - 如果提供了版本,直接使用 - 如果未提供版本,使用 WebSearch 查找最新稳定版: - 搜索:`"[engine] latest stable version [当前年份]"` - 与用户确认:"最新稳定版 [引擎] 是 [版本]。使用这个吗?" --- ## 4. 更新 CLAUDE.md 技术栈 读取 `CLAUDE.md` 并更新技术栈部分。将 `[CHOOSE]` 占位符替换为实际值: **Godot:** ```markdown - **引擎**:Godot [版本] - **语言**:GDScript(主要),通过 GDExtension 支持 C++(性能关键场景) - **构建系统**:SCons(引擎),Godot 导出模板 - **资产管线**:Godot 导入系统 + 自定义资源管线 ``` **Unity:** ```markdown - **引擎**:Unity [版本] - **语言**:C# - **构建系统**:Unity Build Pipeline - **资产管线**:Unity Asset Import Pipeline + Addressables ``` **Unreal:** ```markdown - **引擎**:Unreal Engine [版本] - **语言**:C++(主要),Blueprint(游戏玩法原型开发) - **构建系统**:Unreal Build Tool (UBT) - **资产管线**:Unreal Content Pipeline ``` --- ## 5. 填充技术偏好 更新 CLAUDE.md 后,创建或更新 `.claude/docs/technical-preferences.md`,填入引擎对应的默认值。先阅读现有模板,然后填入: ### 引擎和语言部分 - 根据第 4 步的引擎选择填入 ### 命名约定(引擎默认值) **Godot (GDScript):** - 类名:PascalCase(如 `PlayerController`) - 变量/函数:snake_case(如 `move_speed`) - 信号:snake_case 过去时(如 `health_changed`) - 文件名:snake_case 与类名匹配(如 `player_controller.gd`) - 场景:PascalCase 与根节点匹配(如 `PlayerController.tscn`) - 常量:UPPER_SNAKE_CASE(如 `MAX_HEALTH`) **Unity (C#):** - 类名:PascalCase(如 `PlayerController`) - 公共字段/属性:PascalCase(如 `MoveSpeed`) - 私有字段:_camelCase(如 `_moveSpeed`) - 方法:PascalCase(如 `TakeDamage()`) - 文件名:PascalCase 与类名匹配(如 `PlayerController.cs`) - 常量:PascalCase 或 UPPER_SNAKE_CASE **Unreal (C++):** - 类名:带前缀的 PascalCase(`A` 表示 Actor,`U` 表示 UObject,`F` 表示结构体) - 变量:PascalCase(如 `MoveSpeed`) - 函数:PascalCase(如 `TakeDamage()`) - 布尔值:`b` 前缀(如 `bIsAlive`) - 文件名:与类名匹配但不带前缀(如 `PlayerController.h`) ### 其余部分 - 性能预算:保留为 `[TO BE CONFIGURED]` 并附带建议: > "典型目标:60fps / 16.6ms 帧预算。现在设置这些吗?" - 测试:建议引擎对应的框架(Godot 用 GUT,Unity 用 NUnit 等) - 禁止模式/允许的库:保留为占位符 ### 协作步骤 向用户展示填好的偏好设置: > "这是 [引擎] 的默认技术偏好。要自定义其中任何一项,还是直接保存默认值?" 等待用户批准后再写入文件。 --- ## 6. 确定知识缺口 检查引擎版本是否可能超出 LLM 的训练数据。 **已知的大致覆盖范围**(随着模型更新调整): - LLM 知识截止日期:**2025 年 5 月** - Godot:训练数据可能覆盖到 ~4.3 - Unity:训练数据可能覆盖到 ~2023.x / 6000.x 早期版本 - Unreal:训练数据可能覆盖到 ~5.3 / 5.4 早期版本 将用户选择的版本与这些基线进行比较: - **在训练数据范围内** → `低风险` — 参考文档可选但推荐 - **接近边界** → `中风险` — 推荐参考文档 - **超出训练数据** → `高风险` — 必须有参考文档 告知用户所属的类别及原因。 --- ## 7. 填充引擎参考文档 ### 如果在训练数据范围内(低风险): 创建一个精简的 `docs/engine-reference/<engine>/VERSION.md`: ```markdown # [Engine] — 版本参考 | 字段 | 值 | |------|-----| | **引擎版本** | [版本] | | **项目锁定日期** | [今天的日期] | | **LLM 知识截止** | 2025 年 5 月 | | **风险等级** | 低 — 版本在 LLM 训练数据范围内 | ## 说明 此引擎版本在 LLM 的训练数据范围内。引擎参考文档为可选项, 但如果代理建议了错误的 API,可稍后添加。 随时运行 `/setup-engine refresh` 来填充完整参考文档。 ``` 不要创建 breaking-changes.md、deprecated-apis.md 等文件 — 它们会增加上下文成本但价值有限。 ### 如果超出训练数据(中风险或高风险): 通过搜索网络创建完整的参考文档集: 1. **搜索官方迁移/升级指南**: - `"[engine] [旧版本] 到 [新版本] 迁移指南"` - `"[engine] [版本] breaking changes"` - `"[engine] [版本] changelog"` - `"[engine] [版本] deprecated API"` 2. **从官方文档获取并提取**: - 从知识截止到当前版本之间的每个版本的 breaking changes - 已废弃的 API 及其替代方案 - 新功能和最佳实践 3. **创建完整的参考目录**: ``` docs/engine-reference/<engine>/ ├── VERSION.md # 版本锁定 + 知识缺口分析 ├── breaking-changes.md # 逐版本的 breaking changes ├── deprecated-apis.md # "不要用 X → 用 Y" 对照表 ├── current-best-practices.md # 知识截止后的新实践 └── modules/ # 各子系统参考(按需创建) ``` 4. **使用网络搜索的真实数据填充每个文件**,遵循现有参考文档的格式。每个文件必须有"最后验证:[日期]"标题。 5. **对于模块文件**:仅对发生了重大变化的子系统创建模块。不要创建空白或内容稀少的模块文件。 --- ## 8. 更新 CLAUDE.md 导入 更新"引擎版本参考"下的 `@` 导入,指向正确的引擎: ```markdown ## 引擎版本参考 @docs/engine-reference/<engine>/VERSION.md ``` 如果之前的导入指向不同引擎(例如从 Godot 切换到 Unity),请更新。 --- ## 9. 更新 Agent 指令 对于所选引擎的专家代理,验证它们是否有"版本感知"部分。如果没有,按照现有 Godot 专家代理的模式添加。 该部分应指示代理: 1. 读取 `docs/engine-reference/<engine>/VERSION.md` 2. 建议代码前检查已废弃的 API 3. 检查相关版本过渡的 breaking changes 4. 使用 WebSearch 验证不确定的 API --- ## 10. Refresh 子命令 如果以 `/setup-engine refresh` 调用: 1. 读取现有的 `docs/engine-reference/<engine>/VERSION.md` 获取当前引擎和版本 2. 使用 WebSearch 检查: - 自上次验证以来的新引擎发布 - 更新的迁移指南 - 新废弃的 API 3. 用新发现更新所有参考文档 4. 更新所有修改文件的"最后验证"日期 5. 报告变更内容 --- ## 11. 输出摘要 设置完成后,输出: ``` 引擎设置完成 ===================== 引擎: [名称] [版本] 知识风险: [低/中/高] 参考文档: [已创建/已跳过] CLAUDE.md: [已更新] 技术偏好: [已创建/已更新] 代理配置: [已验证] 后续步骤: 1. 查看 docs/engine-reference/<engine>/VERSION.md 2. [如果来自 /brainstorm] 运行 /map-systems 将概念分解为独立系统 3. [如果来自 /brainstorm] 运行 /design-system 逐系统编写 GDD(引导式,按章节) 4. [如果来自 /brainstorm] 运行 /prototype [核心机制] 测试核心循环 5. [如果是全新开始] 运行 /brainstorm 发现游戏概念 6. 创建第一个里程碑:/sprint-plan new ``` --- ## 护栏 - 绝对不要猜测引擎版本 — 始终通过 WebSearch 或用户确认来验证 - 没有询问前绝不要覆盖现有参考文档 — 应追加或更新 - 如果已有不同引擎的参考文档,替换前先询问 - 始终在编辑 CLAUDE.md 之前向用户展示将要修改的内容 - 如果 WebSearch 返回模糊结果,展示给用户并让其决定
More from pixel-cellar/Claude-Code-Game-Studios
- architecture-decision创建架构决策记录(Architecture Decision Record, ADR),记录重大技术决策及其背景、备选方案和影响后果。每个重大技术选择都应有对应的 ADR。
- estimate通过分析复杂度、依赖关系、历史速度和风险因素来估算任务工作量。生成包含置信水平的结构化估算。
- localize运行本地化工作流:提取字符串、验证本地化就绪状态、检查硬编码文本,并生成可供翻译的字符串表。
- map-systems将游戏概念拆解为独立系统,映射依赖关系,确定设计优先级,并创建系统索引。
- milestone-review生成全面的里程碑进度审查,包括功能完成度、质量指标、风险评估和推进/暂停建议。在里程碑检查点或评估里程碑截止日期的准备情况时使用。
- patch-notes从 git 历史记录、Sprint 数据和内部更新日志生成面向玩家的补丁说明。将开发者语言转化为清晰、有吸引力的玩家沟通内容。
- perf-profile结构化的性能分析工作流。识别瓶颈、与性能预算对比测量,并生成带有优先级排序的优化建议。
- playtest-report生成结构化的试玩报告模板,或将现有试玩笔记分析为结构化格式。用于标准化试玩反馈的收集和分析。
- project-stage-detect自动分析项目状态、检测开发阶段、识别缺失项,并根据现有工件推荐后续步骤。
- release-checklist生成全面的发布前验证清单,涵盖构建验证、合规要求、商店元数据和发布准备就绪情况。