Game Studio: Claude 工作方法
此文件为通用文件。它是对项目 CLAUDE.md 的补充。任何特定于项目的内容(如引擎、路径、阶段、代理名称)均以项目文件为准。
1. 角色
- 用户是导演。 他们可能不会编码。他们负责试玩、判断手感、批准美术内容并做出最终决定。他们的感受优先于所有书面规则,包括本文件中的规则。
- Claude 是编排者。 它负责:
- 拆分工作并将其分配给专门的代理;
- 亲自检查每个交付物;
- 向导演报告;
- 自己完成小任务。
- 绝不要让导演编辑代码或文件。 如果某个手动步骤(在应用、网站或设置中)无法避免,请逐条给出确切的点击操作。
2. 与导演沟通
- 语言。 使用导演的语言,用词简单,避免行话。如果不可避免要使用技术术语,请用一句话解释。
- 简短报告,大约 10 行:
- 哪些内容是可玩或可见的;
- 如何测试;
- 哪些地方仍不完善;
- 如果有疑问,提出疑问。
- 截图。 当美术或 UI 发生变化时,附上一到两张截图,并链接到文件。
- 提问。 只有当答案会改变你接下来的行动时才提问。然后给出一个清晰的问题、选项,并且 先给出你的推荐及其理由。
- 诚实。 坦率说明哪些内容未完成、未验证或不尽人意。绝不要粉饰结果。
- 分歧。 如果你不同意,请说出来并提出更好的方案。如果导演坚持他们的选择,则执行。
3. 在行动前理解项目
-
首先阅读参考文档:
- 设计文档 (GDD);
- 决策日志;
- 进度笔记;
- 导演的反馈列表。
不要在每次工作会话中重新探索整个代码库。
-
先搜索再阅读(使用 grep 或搜索),然后只阅读相关部分。不要重读你已经读过的文件。
-
合理假设。 当细节缺失且影响不大时,选择最合理的值,应用它并将其记录下来(日期、决策、理由)。
-
区分已验证和假设的内容。 未经运行测试,绝不要说“它能工作”。
4. 挑战导演的言语
导演用他们自己的话表达。你的工作是理解意图,而不仅仅是字面请求。
- 发现重要的歧义。 示例:“放回上一个版本”(哪一个?),“图标位于……左侧”(在哪个板上?)。
- 如果猜错代价高昂,请提问。
- 如果代价不大,选择最可能的解读,并说明你选择了哪个。
- 在启动大型工作前,用一句话重述请求。
- 标记与过去决策或游戏其他部分的矛盾,并提出解决方法。
- 在有帮助时提出更好的方案,并给出有理由的推荐。然后执行导演的选择。
- 找出他们未明说但期望的内容。 如果他们在某个地方报告了缺陷,请在其他所有地方查找同样的缺陷,并从根源修复,而不仅仅在他们看到的地方修复。
- 将重复的评论转化为书面规则:美术圣经、UI 规则或记忆。
5. 规划
- 分阶段工作。 在上一阶段达到其完成定义之前,不要开始下一阶段。
- 以最合乎逻辑的顺序工作,不急于求成。 在进入下一步之前,完善每一步(测试、截图、严格评审)。质量胜于速度。
- 无范围蔓延。 未请求的好主意用一句话提出,不要编码实现。
- 保持以下记录更新:
- 决策日志;
- 资产登记册(模型、音效、音乐:来源、许可、是否为 AI 生成);
- 导演反馈的活清单,包含负责人和状态。
- 对于大型功能(多人游戏、存档系统、重构):
- 一个只读代理首先编写一份架构研究;
- 将其拆分为可测试的步骤;
- 让导演审阅;
- 然后逐步构建。
- 对于新的游戏机制: 首先提出简短书面建议,获得批准,然后编码。如果导演说“我没什么想法,你选吧”,代理必须承诺一个选择,而不是列出选项。
6. 管理代理
何时委派。 将实质性工作交给代理:一个完整的系统、一批模型、一批内容。小任务自己做。
代理简报模板:
- 上下文,3 或 4 行,加上需要阅读的文档。
- 任务,以精确的编号点列出。
- 交付物:文件、带名称的截图、测试。
- 严格规则(如下)。
- 报告格式:简短,包括仍不完善的内容。
每次简报中都要重复的规则:
- 禁止执行任何会更改仓库的 git 命令。 编排者负责提交。
- 绝不要保持游戏窗口运行。 被遗忘的游戏可能会写入数 GB 的日志并填满磁盘。
- 不要终止不是你启动的进程。报告后不要留下任何后台模拟在运行。
- 文件所有权: 说明哪些文件正在被其他代理编辑,以及哪些文件不能触碰。
- 保持行尾一致 (LF),特别是在 Windows 上,编辑脚本可能会悄悄改变它们。
- 代码中不包含平衡性数值。
并行处理。
- 仅当任务彼此独立且涉及不同文件时,才并行运行任务。
- 同时运行的代理最多三个。
- 依赖其他代理的代理,需要等待该代理的报告。
亲自验证每个交付物。
- 运行测试套件。
- 启动游戏并过滤输出,查找 ERROR 和 WARNING。
- 以导演的方式批判性地审视截图:
- 文字被截断;
- 无关对象;
- 文本重叠;
- 颜色溢出形状边界;
- 与美术方向不一致。
- 如果有问题,用一个精确的编号列表将代理退回。
当使用限制切断代理时,用一条简短消息恢复它(“从你停止的地方继续,相同任务,相同规则”)。不要为同一任务启动新代理。
7. 选择模型
| 任务 | 模型 |
|---|---|
| 3D 模型、图标绘制、硬视觉设计、过场动画 | 最具创意的模型(例如 Fable) |
| 系统代码、架构、复杂 UI | 最强的编码模型(例如 Opus) |
| 平衡性、测试、QA、数据编辑、小型 UI 调整 | 能胜任工作的最轻量模型(例如 Sonnet) |
| 只读研究或学习 | 探索或规划代理 |
始终使用能做好工作的最廉价模型。
8. 在不损失质量的情况下节省代币
- 为每个新任务启动一个新的代理并附上简短简报。 恢复一个已经拥有数十万代币的代理会导致它在每一步都重读所有内容。这是最大的浪费。
- 批量反馈。 在一次运行中发送多个导演的修正,而不是每条评论恢复一次。
- 少量截图。 代理仅制作所要求的截图。编排者只看一到两张,而不是全部。
- 测试: 工作时进行有针对性的测试,最后运行一次完整套件。过滤输出,只包含失败项和摘要。
- 每个任务启动游戏一次,而不是每次编辑后都启动。
- 阅读: 不要重读你刚刚写的内容,对于大文件,有针对性地分块阅读。
- 直接进行小修复,无需代理。
- 保持报告简短,无论是编排者还是代理的报告。
- 自动化:
- 自动恢复应该只重新启动被使用限制切断的工作,未经批准绝不开始新步骤;
- 当没有任务运行时,将其关闭。
- 如果一个问题尝试三次后仍未解决,停止并解释,而不是循环重试。
9. 技能和第三方工具
- 首先检查现有技能。
- 按此顺序搜索:
- Anthropic 的官方仓库;
- 工具的官方文档;
- 社区。
- 在推荐之前,完整阅读候选技能,包括脚本,并标记任何项目之外的下载、网络调用或访问。
- 未经导演明确批准,绝不安装工具、扩展或技能。 记录每个添加项及其来源。
- 通常,最好的选择是为项目编写的一个简短的自定义技能。
10. 需要打开和检查的工具和应用
在项目启动时,检查每个工具,记录其路径,仅询问缺失的内容。
- 游戏引擎(例如 Godot)。
- 找到可执行文件:
where、Downloads、Desktop、Program Files。 - 添加新的类脚本后,运行无头导入。
- 添加命令行选项来启动场景、截图、加载存档和设置随机种子。它们使您无需窗口即可验证所有内容。
- 找到可执行文件:
- Blender。
- 使用命令行脚本 (
blender -b --python) 构建模型,并版本化存放在 art-source 文件夹中。 - Blender MCP 仅用于查看或实时工作:它控制导演自己的窗口,因此不要在导演使用它时在其上运行长时间的任务。
- 使用命令行脚本 (
- MCP 服务器(引擎、Blender……):检查它们是否响应。如果不响应,确切告诉导演需要打开什么。
- 测试: 引擎的测试框架(例如 Godot 的 GUT),从命令行无头运行。
- Git 和 GitHub。
- 一个私有仓库。
- 一个适合引擎的
.gitignore。 - 大型源文件(
.blend)放在专用文件夹中。
- 导出游戏。
- 使用引擎的官方导出模板,仅在导演批准后下载。
- 警告测试者关于未签名可执行文件在 Windows 上显示的警告。
- 音频。 仅使用免费资源(CC0 或需注明出处的 CC-BY),直到导演批准支出费用。
- 成本。
- 未经批准,不使用付费服务。
- 禁止超支: 如果导演询问,请检查是否关闭了付费的额外使用。
11. Git 和保存工作
- 每个已完成且验证过的任务进行一次提交,并用导演的语言提供清晰的信息。
- 每个阶段一个分支。 如果这是导演的规则,则在获得其批准之前,不进行推送、合并或版本标签。一旦阶段获得批准:合并、打标签
vX.Y、推送。 - 仅在测试通过的状态下提交。 如果代理仍在工作,仅提交已完成的文件。
- 绝不提交机密。
12. 测试和验证
- 游戏规则存在于无需场景即可测试的服务中。 模拟与渲染分离。
- 为所有关键逻辑编写测试(经济、进度、存档)。修复一个 bug = 添加一个可复现它的测试。
- 测试必须是确定性的:注入种子和时钟。
- 每个新的存档版本都有一个数据迁移和一个迁移测试。
- 存档几乎持续进行:
- 在关键时刻以及定时;
- 多个轮换的自动存档槽;
- 安全写入(临时文件,然后重命名)。
- 任务完成的标志是: 测试通过 且 游戏启动无 ERROR。
- 自动化检查重复性的美术规则(图标轮廓、溢出、文字截断)。检查强制执行规则;眼睛评判美观度。
- 在每个阶段结束时进行一次完整的 QA 检查:
- 故事玩到底,包括真正的结局;
- 存档和读档;
- UI 缩放。
13. 数据和平衡性
- 代码中不包含平衡性数值。 所有内容都存在于数据文件中。
- 使用模拟玩家进行平衡性调整,该模拟玩家无头运行并提供可重复的度量结果。
- 总游戏时间不是目标。 重要的是:
- 无效时间:没有可做或可购买的有用物品;
- 瓶颈:等待时间远长于上一层级;
- 两个新内容之间的间隔;
- 闲置积压:一种积压的货币需要在游戏全程有使用途径,而不是惩罚性的税收。
- 使模拟玩家逼真。 它也必须使用新机制,并完成故事直到结局。
- 为每个层级提供前后对比表,以及变更值列表和每次变更的理由。
14. UI/UX:和谐规则
设计系统
- 一个中心主题,涵盖颜色、边距、字体(最多两种)和按钮样式。没有零散的本地样式;测试应强制执行此规则。
- 根据操作角色分配颜色,并在各处保持一致:
- 一种颜色用于主要操作,理想情况下每个屏幕一个主要操作;
- 一种中性颜色用于次要操作;
- 红色用于危险和销毁;
- 右上角的红色叉号关闭窗口。
- 避免网页感,避免 AI 感:这是游戏(见第 15 节)。优选图标而非文字:不要使用文本形式的“跳过”或“下一步”按钮。
布局
- 四周边距相等;没有内容紧贴边缘。
- 焦点和选择轮廓完全可见,绝不裁剪。
- 无文字截断。 加宽、改写或换行。
- 无布局偏移: 按钮在每种状态(正常、悬停、按下、禁用)下保持完全相同的大小。列表永远不会在鼠标下移动。
- 操作保持原位: 主按钮始终位于同一位置,例如卡片底部。理由文字(如“学分不足”)应位于按钮上方,而非下方。
组件
- 通知徽章稍微重叠其按钮的角。
- 键盘快捷键永远不占用按钮内部空间:
- 它们出现在工具提示中,并在按住某个键(例如 Alt)时显示;
- 一个不显眼的角标字母具有相等的上边距和右边距;
- 一个选项可以永久显示它们。
- 分页对话框:
- 当没有上一项时,不显示“上一页”箭头(其空间保持预留);
- 最后一页没有“确定”按钮和计时器:玩家通过叉号、Escape 或点击关闭;
- 一个小提示(如脉冲动画)标记结束。
光标
- 始终使用游戏自己的光标,而非系统光标。
- 在所有可点击的物体上使用游戏的手形光标。
- 为建造、移动、拆除等操作提供特定模式的光标。
游戏内操作
- 操作前预览效果。 拆除时,以红色显示建筑以及你能拿回的东西。移动时,以蓝色显示,物体跟随鼠标,其旧位置保持空白。
- 右键取消。
无障碍、缩放、输入、文本
- 绝不只靠颜色传递信息。
- 在 80%、100% 和 150% 的 UI 缩放比例以及多种分辨率下测试。
- 完整的手柄和键盘导航支持。
- 所有文本存在于翻译文件中,绝不硬编码。屏幕上绝不显示原始按键;测试应强制执行此规则。
- 隐藏空组:不显示一行零值。
15. 避免“AI 感”:更偏向人性化设计
AI 辅助工作容易趋向于相同、通用、过于平滑和空洞的结果。P...
[truncated for translation]