关于 quick-game
quick-game 是用于快速制作可玩的浏览器游戏原型的技能,可根据概念或推文搭建 Phaser 2D 或 Three.js 3D 项目,实现基础玩法循环并启动开发服务器。
主要功能
- 01搭建 Phaser 2D 或 Three.js 3D 游戏
- 02实现输入、移动、计分与重开
- 03从推文提炼游戏概念
- 04启动本地开发服务器
- 05检查项目构建
适用场景
- 01根据简短概念制作游戏原型
- 02将推文转化为游戏创意
- 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 逐步添加内容。
你将获得:
- 一个架构清晰的脚手架游戏项目
- 核心玩法——输入、移动、计分、失败条件、重新开始
- 一个立即可玩的运行中开发服务器
你将跳过的内容(如果需要,可以之后再运行):
/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/*):
- 使用
fetch-tweet技能获取推文 - 默认使用 2D
- 从推文中创意地提炼游戏概念
- 生成 kebab-case 名称
- 告知用户你将构建什么
Meshy API Key(仅限 3D): 如果是 3D,检查是否存在 MESHY_API_KEY。如果缺失,请询问用户(提供链接 https://app.meshy.ai)。保存该密钥以用于模型生成。
步骤 1:搭建脚手架 + 实现
基础设施(主线程):
- 定位模板目录——检查
~/.claude/plugins/cache/local-plugins/game-creator/*/templates/或相对于此插件的templates/ - 目标目录:如果位于
game-creator仓库内,则在examples/<game-name>/中创建。否则,在./<game-name>/中创建。 - 复制模板:
- 2D:
templates/phaser-2d/→ 目标目录 - 3D:
templates/threejs-3d/→ 目标目录
- 2D:
- 更新
package.json名称和index.html标题 - 运行
npm install - 在后台启动开发服务器(
npm run dev)。先检查端口是否可用——如果 3000 已被占用,则尝试 3001、3002 等。
游戏实现(通过 Task 启动子 Agent):
使用以下内容启动一个 Task 子 Agent:
你正在构建一个快速游戏原型。速度优先——尽快实现可玩的核心循环。
项目路径:
<project-dir>引擎:<2d|3d>游戏概念:<description>要加载的技能:phaser(2D)或threejs-game(3D)按以下顺序实现:
- 输入(从一开始就支持触控 + 键盘)
- 玩家移动 / 核心机制
- 失败条件(死亡、碰撞、计时器)
- 计分
- 重新开始流程(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:验证
子代理返回后:
- 在项目目录中运行
npm run build,确认没有错误 - 如果构建失败,修复问题(最多重试 2 次)
- 如果 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,使用完整的一键式流程(资源、润色、部署、变现,一步完成)。