name: game-development description: 游戏开发编排器。根据项目需求路由到平台特定技能。 allowed-tools: Read, Write, Edit, Glob, Grep, Bash
游戏开发
编排器技能 提供核心原则并路由到专业子技能。
何时使用此技能
您正在开发一个游戏项目。此技能教授游戏开发的原则,并根据上下文指导您到正确的子技能。
子技能路由
平台选择
| 如果游戏目标是… | 使用子技能 |
|---|---|
| 网页浏览器 (HTML5, WebGL) | game-development/web-games |
| 移动 (iOS, Android) | game-development/mobile-games |
| PC (Steam, 桌面) | game-development/pc-games |
| VR/AR 头显 | game-development/vr-ar |
维度选择
| 如果游戏是… | 使用子技能 |
|---|---|
| 2D (精灵, 瓦片地图) | game-development/2d-games |
| 3D (网格, 着色器) | game-development/3d-games |
专门领域
| 如果您需要… | 使用子技能 |
|---|---|
| GDD, 平衡, 玩家心理学 | game-development/game-design |
| 多人游戏, 网络 | game-development/multiplayer |
| 视觉风格, 资产管道, 动画 | game-development/game-art |
| 声音设计, 音乐, 自适应音频 | game-development/game-audio |
核心原则 (所有平台)
1. 游戏循环
每个游戏,无论平台,都遵循此模式:
INPUT → 读取玩家动作
UPDATE → 处理游戏逻辑 (固定时间步)
RENDER → 绘制帧 (插值)
固定时间步规则:
- 物理/逻辑: 固定速率 (例如,50Hz)
- 渲染: 尽可能快
- 在状态之间插值以实现平滑视觉效果
2. 模式选择矩阵
| 模式 | 何时使用 | 示例 |
|---|---|---|
| 状态机 | 3-5 个离散状态 | 玩家: 空闲→行走→跳跃 |
| 对象池化 | 频繁生成/销毁 | 子弹, 粒子 |
| 观察者/事件 | 跨系统通信 | 生命值→UI 更新 |
| ECS | 数千个相似实体 | RTS 单位, 粒子 |
| 命令 | 撤销, 重放, 网络 | 输入记录 |
| 行为树 | 复杂 AI 决策 | 敌人 AI |
决策规则: 从状态机开始。仅在性能需求时添加 ECS。
3. 输入抽象
将输入抽象为动作,而不是原始键:
"jump" → 空格, 游戏手柄 A, 触摸点击
"move" → WASD, 左摇杆, 虚拟操纵杆
为什么: 实现多平台、可重新绑定的控制。
4. 性能预算 (60 FPS = 16.67ms)
| 系统 | 预算 |
|---|---|
| 输入 | 1ms |
| 物理 | 3ms |
| AI | 2ms |
| 游戏逻辑 | 4ms |
| 渲染 | 5ms |
| 缓冲 | 1.67ms |
优化优先级:
- 算法 (O(n²) → O(n log n))
- 批处理 (减少绘制调用)
- 池化 (避免 GC 峰值)
- LOD (按距离调整细节)
- 剔除 (跳过不可见)
5. AI 选择按复杂性
| AI 类型 | 复杂性 | 何时使用 |
|---|---|---|
| FSM | 简单 | 3-5 个状态,可预测行为 |
| 行为树 | 中等 | 模块化,设计师友好 |
| GOAP | 高 | 涌现的,基于规划的 |
| 效用 AI | 高 | 基于评分的决策 |
6. 碰撞策略
| 类型 | 最适合 |
|---|---|
| AABB | 矩形,快速检查 |
| 圆形 | 圆形对象,廉价 |
| 空间哈希 | 许多相似大小对象 |
| 四叉树 | 大世界,大小不一 |
反模式 (通用)
| 不要 | 做 |
|---|---|
| 每一帧更新所有内容 | 使用事件,脏标志 |
| 在热循环中创建对象 | 对象池化 |
| 不缓存任何内容 | 缓存引用 |
| 未进行分析就优化 | 先分析 |
| 混合输入与逻辑 | 抽象输入层 |
路由示例
示例 1: “我想制作一个基于浏览器的 2D 平台游戏”
→ 从 game-development/web-games 开始选择框架
→ 然后 game-development/2d-games 用于精灵/瓦片地图模式
→ 参考 game-development/game-design 用于关卡设计
示例 2: “针对 iOS 和 Android 的移动拼图游戏”
→ 从 game-development/mobile-games 开始用于触摸输入和商店
→ 使用 game-development/game-design 用于拼图平衡
示例 3: “多人 VR 射击游戏”
→ game-development/vr-ar 用于舒适和沉浸感
→ game-development/3d-games 用于渲染
→ game-development/multiplayer 用于网络
记住: 伟大的游戏来自迭代,而不是完美。快速原型,然后抛光。