mcpField
Q
quick-game

quick-game

github.com/playableintelligence开发350876 次安装22 周前更新
代码仓库

关于 quick-game

quick-game 是用于快速制作可玩的浏览器游戏原型的技能,可根据概念或推文搭建 Phaser 2D 或 Three.js 3D 项目,实现基础玩法循环并启动开发服务器。

主要功能

  1. 01搭建 Phaser 2D 或 Three.js 3D 游戏
  2. 02实现输入、移动、计分与重开
  3. 03从推文提炼游戏概念
  4. 04启动本地开发服务器
  5. 05检查项目构建

适用场景

  1. 01根据简短概念制作游戏原型
  2. 02将推文转化为游戏创意
  3. 03先测试核心玩法再添加润色

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/playableintelligence/game-creator --skill quick-game

安装后在 Claude Code 中输入/quick-game确认已加载。

详细介绍

性能说明

  • 请花时间彻底完成
  • 质量比速度更重要
  • 不要跳过验证步骤

快速游戏(快速原型)

尽可能快速地构建一个可玩的游戏原型。这是精简版的 /viral-game,不做润色——只搭建脚手架并实现核心循环。先让画面跑起来,再通过 /add-assets、/design-game、/add-audio、/game-deploy 和 /monetize-game 逐步添加内容。

你将获得:

  1. 一个架构清晰的脚手架游戏项目
  2. 核心玩法——输入、移动、计分、失败条件、重新开始
  3. 一个立即可玩的运行中开发服务器

你将跳过的内容(如果需要,可以之后再运行):

  • /add-assets — 像素艺术精灵(2D)或 3D 模型
  • /design-game — 视觉润色、粒子效果、转场
  • /add-audio — 音乐和音效
  • /record-promo — 宣传视频录制
  • /game-deploy — 部署到 here.now
  • /monetize-game — Play.fun 集成

操作说明

步骤 0:解析参数

解析 $ARGUMENTS 以确定游戏概念:

直接指定: [2d|3d] [game-name]

  • 引擎:2d(Phaser)或 3d(Three.js)。如果未指定,默认为 2d。
  • 名称:kebab-case。如果未指定,请询问用户。

推文 URL: 如果参数中包含推文 URL(x.com/*/status/*、twitter.com/*/status/*、fxtwitter.com/*/status/*):

  1. 使用 fetch-tweet 技能获取推文
  2. 默认使用 2D
  3. 从推文中创意地提炼游戏概念
  4. 生成 kebab-case 名称
  5. 告知用户你将构建什么

Meshy API Key(仅限 3D): 如果是 3D,检查是否存在 MESHY_API_KEY。如果缺失,请询问用户(提供链接 https://app.meshy.ai)。保存该密钥以用于模型生成。

步骤 1:搭建脚手架 + 实现

基础设施(主线程):

  1. 定位模板目录——检查 ~/.claude/plugins/cache/local-plugins/game-creator/*/templates/ 或相对于此插件的 templates/
  2. 目标目录:如果位于 game-creator 仓库内,则在 examples/<game-name>/ 中创建。否则,在 ./<game-name>/ 中创建。
  3. 复制模板:
    • 2D:templates/phaser-2d/ → 目标目录
    • 3D:templates/threejs-3d/ → 目标目录
  4. 更新 package.json 名称和 index.html 标题
  5. 运行 npm install
  6. 在后台启动开发服务器(npm run dev)。先检查端口是否可用——如果 3000 已被占用,则尝试 3001、3002 等。

游戏实现(通过 Task 启动子 Agent):

使用以下内容启动一个 Task 子 Agent:

你正在构建一个快速游戏原型。速度优先——尽快实现可玩的核心循环。

项目路径:<project-dir> 引擎:<2d|3d> 游戏概念:<description> 要加载的技能:phaser(2D)或 threejs-game(3D)

按以下顺序实现:

  1. 输入(从一开始就支持触控 + 键盘)
  2. 玩家移动 / 核心机制
  3. 失败条件(死亡、碰撞、计时器)
  4. 计分
  5. 重新开始流程(GameState.reset() → 全新状态)

范围:1 个场景、1 种机制、1 个失败条件。 保持精简。

规则:

  • 所有跨模块通信都通过 EventBus
  • 所有魔法数字都放在 Constants.js 中
  • 不要标题画面——直接启动游戏
  • 不要游戏内计分 HUD——由 Play.fun 小组件处理分数显示
  • 移动设备优先的输入:触控 + 键盘,使用统一的 InputSystem 模式
  • 从 Constants.js 导入 SAFE_ZONE——将 UI 放在 SAFE_ZONE.TOP 以下
  • 收集物 / 危险物的宽度至少为画布宽度的 7-8%
  • 角色尺寸:对于角色驱动型游戏,使用 GAME.WIDTH * 0.12 到 GAME.WIDTH * 0.15
  • 保留 GameOverScene 模板中的 createButton() 辅助函数——不要重写
  • 接入精彩事件:SPECTACLE_ENTRANCE、SPECTACLE_ACTION、SPECTACLE_HIT、SPECTACLE_COMBO、SPECTACLE_STREAK、SPECTACLE_NEAR_MISS
  • 在 GameState 中添加 isMuted,为未来的音频支持做准备
  • 确保重新开始流程干净——连续重新开始 3 次的表现应完全一致
步骤 2:验证

子代理返回后:

  1. 在项目目录中运行 npm run build,确认没有错误
  2. 如果构建失败,修复问题(最多重试 2 次)
  3. 如果 Playwright MCP 可用,访问开发服务器,截取屏幕截图并快速检查视觉效果

使用示例

2D 游戏
/quick-game 2d asteroid-dodge

结果:复制 Phaser 模板 → 实现玩家飞船、陨石生成、碰撞死亡、得分计数器、重新开始流程 → 约 2 分钟后,开发服务器在 localhost:3000 运行。仅使用形状,未经润色。

来自推文
/quick-game https://x.com/user/status/123456

结果:获取推文 → 提炼游戏概念 → 搭建脚手架并实现受推文内容启发的可玩原型。

故障排除

游戏已搭建脚手架,但无法启动

原因: Vite 配置或导入路径不正确。 修复: 确认 vite.config.js 中的 root 正确。检查 index.html 是否引用了 main.js。

缺少核心文件

原因: 搭建脚手架时跳过了 EventBus/GameState/Constants。 修复: 每个游戏都需要 core/EventBus.js、core/GameState.js、core/Constants.js。重新运行脚手架流程,或手动创建这些文件。

完成

告诉用户:

你的游戏正在 http://localhost:<port> 运行。在浏览器中打开即可游玩!

要继续开发,请运行以下命令:

  • /add-assets — 将形状替换为像素艺术精灵
  • /design-game — 增添视觉润色效果(粒子、渐变、动感)
  • /add-audio — 添加音乐和音效
  • /game-deploy — 部署到 Web
  • /monetize-game — 添加 Play.fun 集成

或者下次运行 /viral-game,使用完整的一键式流程(资源、润色、部署、变现,一步完成)。

评论

支持 Markdown