关于 router
面向游戏开发任务的技能路由器:根据项目特征识别引擎,并按请求筛选最少的专用技能,指导读取与组合。它负责分发而不讲解引擎 API。
主要功能
- 01按项目特征识别引擎
- 02根据请求分类任务
- 03选择最少的相关技能
- 04安排技能读取与组合
- 05引擎未知时提供回退流程
适用场景
- 01开始制作或调试游戏
- 02判断某项游戏任务应加载哪些技能
- 03任务转向新引擎或开发关注点时重新路由
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ gamedev-skills/ awesome-gamedev-agent-skills --skill router安装后在 Claude Code 中输入/router确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/engine-detection.mdrouting-table.md详细介绍
主路由器 — 游戏开发技能分发器
游戏开发任务的入口。它会识别项目特征以选出一个引擎,根据请求对任务进行分类,列出最少的一组专业技能,并要求你在采取行动前阅读这些技能。它负责分发和组合,不会重新讲解引擎 API。
何时使用
- 在任何游戏开发请求开始时使用——无论是构建或调试游戏、关卡、玩家角色、敌人、着色器、UI、存档系统、多人游戏、输入、音频、AI、对话、程序化内容还是视觉资源集——以确定要加载哪些技能。
- 当用户指定引擎或类型、说“做个游戏”,或询问“我该使用哪项技能?”时使用。
何时不要使用:加载了正确的技能,且任务明确属于该技能的范围后,就根据该技能开展工作——不要在每一轮都重新运行路由器。只有当任务转向新的引擎或关注点时,才重新路由(路由器第 6 步)。
路由算法
- 检测引擎和版本——项目特征 → 至多一组引擎技能(或“未知”),然后读取项目的版本来源。§1。
- 对任务分类——措辞 → 领域 + 至多一个类型 + 工作流。§2。
- 解析——最少集合:引擎技能 + 领域 + 类型 + 工作流。§3。
- 阅读(披露)——仅打开选定的
SKILL.md正文;仅在需要时查阅references/。§4。 - 组合——顺序:引擎基础知识 → 领域概念 → 类型衔接 → 工作流。§5。
- 回退——引擎未知或没有合适的技能 → 询问或默认使用 Godot;说明存在的缺口。§6。
1. 引擎检测(项目特征)
扫描置信度最高的信号;只选择一个引擎。遇到第一个匹配项时停止。
| # | 引擎 | 主要信号 | 技能集根目录 |
|---|---|---|---|
| 1 | Godot | project.godot | skills/godot/ |
| 2 | Unreal | *.uproject | skills/unreal/ |
| 3 | Unity | Assets/ 和 ProjectSettings/ProjectVersion.txt | skills/unity/ |
| 4 | Bevy | Cargo.toml 中含有 bevy 依赖 | skills/other-engines/bevy-ecs/ |
| 5 | Phaser | package.json 依赖 phaser | skills/web-engines/phaser-* |
| 6 | PixiJS | package.json 依赖 pixi.js | skills/web-engines/pixijs-rendering/ |
| 7 | three.js | package.json 依赖 three | skills/web-engines/threejs-* |
| 8 | LÖVE | conf.lua / main.lua 调用了 love.* | skills/other-engines/love2d-core/ |
| 9 | pygame | *.py 中包含 import pygame | skills/other-engines/pygame-core/ |
| 10 | Roblox | *.rbxl(x) / *.project.json(Rojo) | skills/other-engines/roblox-* |
有关次要信号、Godot-C#/Unity/Bevy 和多个 Web 引擎的消歧规则、单体仓库,以及纯文本中的引擎名称,请阅读 references/engine-detection.md。
识别引擎后,在选择 API 前,从项目元数据或依赖锁文件中读取其版本。除非用户要求迁移,否则现有项目应保留其锁定的版本;目录基准版本仅适用于新项目。具体的版本来源见检测参考文档和 ../docs/VERSION-SUPPORT.md。
2. 任务分类(措辞 → 类别)
确定引擎后,读取请求中的任务信号(以下三类可叠加):
- disciplines(跨引擎概念):
create-game-assets、game-ai、ai-behavior-trees-utility-ai、procedural-gen、dialogue-systems、save-systems、audio-design、shader-programming、physics-tuning、level-design、input-systems、game-feel、camera-systems、game-ui-ux、performance-optimization。 由概念词触发(“精灵表”“美术指导”“纹理”“寻路”“存档槽”“片段着色器”“屏幕震动”“摄像机跟随”“HUD/菜单”“优化/低 FPS”)。 - genres(完整游戏模板):
platformer、roguelike、rpg、fps-shooter、tower-defense、card-game、visual-novel、survival-crafting、puzzle。由游戏类型词触发 (“制作一款 roguelike”“牌组构筑游戏”)。 - workflows(流程/发布):
game-jam、prototype-fast、steam-publish、itch-publish。由流程词触发(“在 Steam 上发布”“垂直切片”)。
文件信号可进一步缩小范围:*.yarn/*.ink → dialogue-systems/visual-novel;steam_appid.txt
→ steam-publish;*.inputactions → unity-input-system。
3. 路由表(任务 → 类别 → 技能)
3a. 引擎技能 — 读取与检测到的引擎和子任务匹配的那一项
- Godot(
skills/godot/):语言godot-gdscript/godot-csharp;结构godot-nodes-scenes、godot-signals-groups;2Dgodot-2d-movement、godot-tilemap;3Dgodot-3d-essentials;物理godot-physics;UIgodot-ui-control;动画godot-animation;着色器godot-shaders;数据godot-resources;音频godot-audio; 网络代码godot-multiplayer;无头 CLI 测试godot-gdscript-headless-testing;发布godot-export。 - Unity(
skills/unity/):脚本编写unity-csharp-scripting;输入unity-input-system; 物理unity-physics;动画unity-animation;数据unity-scriptableobjects;2Dunity-tilemap-2d;AI 导航unity-navmesh;发布unity-build-pipeline。 - Unreal(
skills/unreal/):可视化脚本unreal-blueprints;C++ 游戏玩法unreal-cpp-gameplay;输入unreal-enhanced-input;AIunreal-behavior-trees;VFXunreal-niagara;发布unreal-packaging。 - Web(
skills/web-engines/):phaser-core、phaser-arcade-physics;pixijs-rendering;threejs-scene-setup、threejs-gltf-loading、threejs-materials-lighting。 - 其他(
skills/other-engines/):bevy-ecs、pygame-core、love2d-core;Roblox 基础roblox-luau、持久化roblox-datastores、UIroblox-ui、远程调用/安全roblox-networking、角色生命周期roblox-characters、模拟/查询roblox-physics,以及 Studio 内操作roblox-studio-workflow。
3b. 学科 — 与引擎技能一起加载(概念 ↔ 引擎 API)
概念(says:) | 学科技能 | 配合使用(引擎 API) |
|---|---|---|
| 美术指导、游戏资源、精灵、图块集、纹理、图标、3D 道具 | create-game-assets | 引擎导入/渲染技能;若可用,使用 imagegen |
| 敌人 AI、行为树、寻路、转向 | game-ai | unity-navmesh / unreal-behavior-trees / Godot 导航 |
| BT 运行时、黑板、装饰器、选择器/序列、效用 AI、响应曲线、考量项 | ai-behavior-trees-utility-ai | game-ai(模型选择)/ unreal-behavior-trees(引擎资源) |
| 程序化、噪声、种子、地牢生成器 | procedural-gen | 引擎图块地图/网格技能 |
| 对话、Yarn、Ink、对话树 | dialogue-systems | 引擎 UI 技能 |
| 保存/加载、存档槽、持久化 | save-systems | roblox-datastores / 引擎 IO |
| 自适应音乐、混音器、闪避、音效 | audio-design | godot-audio / Unity AudioMixer |
| 着色器、片元、溶解/描边 | shader-programming | godot-shaders / 引擎材质 |
| 抖动、穿透、固定时间步长 | physics-tuning | godot-physics / unity-physics |
| 白盒、灰盒、图块布局、节奏 | level-design | godot-tilemap / unity-tilemap-2d |
| 重新绑定、游戏手柄、输入缓冲 | input-systems | unity-input-system / unreal-enhanced-input / Godot InputMap |
| 屏幕震动、受击停顿、爽感、挤压与拉伸、“让它更有冲击力” | game-feel | 引擎动画/补间 + camera-systems(震动) |
| 摄像机跟随、死区、前视、环绕、第一人称 | camera-systems | godot-2d-movement / godot-3d-essentials / Cinemachine |
| HUD、菜单、UI 布局、缩放、安全区域、焦点导航 | game-ui-ux | godot-ui-control / Unity UI(UGUI/UI Toolkit) |
| FPS 低、优化、绘制调用、GC 峰值、对象池、分析器 | performance-optimization | 引擎分析器 + physics-tuning |
对于 Roblox,将跨引擎概念与针对性引擎技能组合使用:HUD/菜单请求使用
roblox-ui + game-ui-ux(+ 游戏操作绑定使用 input-systems);远程利用或
复制请求使用 roblox-networking + roblox-luau;重生/角色绑定请求使用
roblox-characters;物理模拟/查询请求使用 roblox-physics(+
稳定性调优使用 physics-tuning);直接编辑场景也使用 roblox-studio-workflow。
3c. 类型 — 组合引擎 + 学科(将 * 绑定到检测到的引擎)
类型(says:) | 组合 |
|---|---|
| 平台跳跃、跳跃、二段跳 | godot-2d-movement(或引擎物理)+ godot-tilemap/unity-tilemap-2d + level-design + camera-systems + game-feel |
| Roguelike、程序化地牢、永久死亡 | procedural-gen + godot-tilemap/unity-tilemap-2d + game-ai + save-systems + game-feel |
| RPG、属性、物品栏、任务 | godot-resources/unity-scriptableobjects + dialogue-systems + save-systems + game-ui-ux |
| FPS、第一人称、射线命中 | godot-3d-essentials/unreal-cpp-gameplay + input-systems + game-ai + camera-systems + game-feel |
| 塔防、波次、路径 | game-ai + 引擎移动 + level-design + game-ui-ux |
| 卡牌游戏、卡组构筑、集换式卡牌游戏(TCG) | godot-resources/unity-scriptableobjects + game-ui-ux(+ 引擎 UI) |
| 视觉小说、分支故事 | dialogue-systems + save-systems + game-ui-ux |
| 生存、制作、采集 | save-systems + godot-resources/unity-scriptableobjects + procedural-gen + game-ui-ux |
| 解谜、三消、网格逻辑 | godot-tilemap/unity-tilemap-2d + level-design + game-feel |
3d. 工作流 — 与引擎无关的流程与发布
game-jam(游戏创作活动、48 小时、Ludum Dare/GMTK)· prototype-fast(垂直切片、MVP、灰盒)·
steam-publish(Steam、Steamworks、内容库;steam_appid.txt)· itch-publish(itch.io、butler;
.itch.toml)。
如需查看详尽的技能触发条件列表和每种引擎的绑定方式,请阅读
references/routing-table.md。
4. 阅读协议(渐进式披露)
- **预加载:**上下文中仅包含每项技能的
name+description。根据这些信息和指纹做出判断——不要提前读取正文。 - 选定后:读取每项选定技能的正文
skills/<category>/<name>/SKILL.md,且只读取这些技能。切勿一次性加载整个类别。 - **按需读取:**只有在子任务需要深入了解时,才读取技能附带的
references/文件(技能正文会说明何时需要)。 - **任务转向时重新路由:**如果任务发生变化(从移动转为存档),请选定并读取新相关的技能,而不是继续加载所有内容。
说明你加载了什么以及原因,例如:“检测到 Godot(project.godot)。加载
godot-2d-movement 以处理控制器,并加载 platformer 以调整跳跃手感;如果你需要土狼时间/输入缓冲,我会打开平台游戏技能的
feel-tuning.md 参考文件。”
5. 组合规则
- 一组引擎技能,概念可叠加。恰好使用一组引擎技能;添加任务所需的学科技能,通常最多添加一种游戏类型技能。工作流可独立附加。
- **顺序:**引擎基础 → 学科概念 → 游戏类型编排 → 工作流。对于资源制作,先确认视觉目标再生成一组资源,最后完成引擎导入设置并进行上下文捕获。
- **职责划分:**遇到重叠时,引擎技能负责 API/语法;学科技能负责可移植的概念/算法,并将代码交由引擎技能处理;游戏类型技能负责结构/衔接,并通过链接指向相关内容,而不是重复讲解基础概念。
- **交接:**当游戏类型技能的
composes指定了类似*-2d-movement的槽位时,将其绑定到检测到的引擎。如果该引擎没有完全匹配的技能,请参阅 §6 和references/routing-table.md(“Binding gaps”)。
6. 未知引擎与无技能时的回退方案
引擎未知(没有指纹,也未指定引擎):
- 检查请求中是否以纯文本提到引擎名称(“在 Unity 中”、“使用 Phaser”)。如果有,就采用该引擎。
- 如果任务纯粹是概念/游戏类型/工作流问题,直接路由到与引擎无关的学科/游戏类型/工作流技能——无需引擎(“什么存档格式比较好?” →
save-systems)。 - 只有当引擎选择确实会影响回答时,才提出一个有针对性的问题(“你使用哪种引擎——Godot、Unity、Unreal,还是 Web/其他引擎?”)。如果用户没有偏好且必须选择一种,默认使用 Godot(此处覆盖最全面的引擎),并说明这一点。
- 切勿臆造引擎,或凭猜测加载引擎技能。
已知引擎,但没有技能覆盖该子任务:加载最接近的引擎技能和相关学科技能,并明确说明缺口(例如:“没有专门的 Unity 2D 移动技能;改用
unity-csharp-scripting + unity-physics”)。切勿虚构技能名称。
**游戏类型冲突/多种并存:**根据措辞选定主要游戏类型;提及次要类型,并表示用户确认后可加载该技能。
实例
| 请求 | 检测到的引擎 | 加载的技能(按顺序) |
|---|---|---|
| "为我的 Godot 玩家角色添加二段跳" | Godot(project.godot) | godot-2d-movement → platformer |
| "为我的 Unity RPG 制作一套物品栏" | Unity(Assets/+ProjectSettings/) | unity-scriptableobjects → rpg → save-systems |
| "在 Godot 中制作程序化生成的地牢 Roguelike" | Godot | godot-tilemap → procedural-gen → roguelike |
"基于 .yarn 文件制作分支对话" | (不需要) | dialogue-systems(+ 检测到引擎时加载对应的引擎 UI 技能) |
| "如何设计支持迁移的存档位?" | (无) | 仅 save-systems |
| "用 butler 在 itch 上发布我的游戏" | (任意/无) | 仅 itch-publish |
| "我想制作一款游戏,但不知道该用什么" | 未知 → 询问,默认 Godot | 路由器询问一次;然后例如加载 godot-nodes-scenes |
| "让我的 Godot 游戏里的打击感更强" | Godot(project.godot) | game-feel(震动效果还需加载 camera-systems) |
| "摄像机应平滑跟随我的玩家角色" | (已检测到引擎) | camera-systems(+ 对应的引擎移动技能) |
| "我的 Unity 游戏帧率降到了 30 FPS,优化一下" | Unity(Assets/+ProjectSettings/) | performance-optimization(先进行性能分析)→ 引擎技能 |
| "制作一套风格统一的像素风玩家角色和敌人" | (已检测到引擎) | create-game-assets → 对应的引擎导入/渲染技能 |
参考资料
- 完整的引擎特征、次级信号和消歧信息:
references/engine-detection.md。 - 各技能详尽的触发词、引擎绑定和绑定缺口:
references/routing-table.md。