Performance Notes
- Take your time to do this thoroughly
- Quality is more important than speed
- Do not skip validation steps
Quick Game (Fast Prototype)
Build a playable game prototype as fast as possible. This is /make-game without the polish — just scaffold + implement the core loop. Get something on screen, then incrementally add layers with /add-assets, /design-game, /add-audio, /game-deploy, and /monetize-game.
What you'll get:
- A scaffolded game project with clean architecture
- Core gameplay — input, movement, scoring, fail condition, restart
- A running dev server you can play immediately
What you skip (run these later if you want):
/add-assets— pixel art sprites (2D) or 3D models/design-game— visual polish, particles, transitions/add-audio— music and sound effects/record-promo— promo video capture/game-deploy— deploy to here.now/monetize-game— Play.fun integration
Instructions
Step 0: Parse arguments
Parse $ARGUMENTS to determine the game concept:
Direct specification: [2d|3d] [game-name]
- Engine:
2d(Phaser) or3d(Three.js). If not specified, default to2d. - Name: kebab-case. If not specified, ask the user.
Tweet URL: If arguments contain a tweet URL (x.com/*/status/*, twitter.com/*/status/*, fxtwitter.com/*/status/*):
- Fetch the tweet using the
fetch-tweetskill - Default to 2D
- Creatively abstract a game concept from the tweet
- Generate a kebab-case name
- Tell the user what you'll build
Meshy API Key (3D only): If 3D, check for MESHY_API_KEY. If missing, ask the user (link to https://app.meshy.ai). Store for model generation.
Step 1: Scaffold + Implement
Infrastructure (main thread):
- Locate the template directory — check
~/.claude/plugins/cache/local-plugins/game-creator/*/templates/ortemplates/relative to this plugin - Target directory: If inside the
game-creatorrepo, create inexamples/<game-name>/. Otherwise, create in./<game-name>/. - Copy the template:
- 2D:
templates/phaser-2d/→ target - 3D:
templates/threejs-3d/→ target
- 2D:
- Update
package.jsonname andindex.htmltitle - Run
npm install - Start the dev server (
npm run dev) in the background. Check port availability first — if 3000 is taken, try 3001, 3002, etc.
Game implementation (subagent via Task):
Launch a Task subagent with:
You are building a quick game prototype. Speed is the priority — get a playable core loop working.
Project path:
<project-dir>Engine:<2d|3d>Game concept:<description>Skill to load:phaser(2D) orthreejs-game(3D)Implement in this order:
- Input (touch + keyboard from the start)
- Player movement / core mechanic
- Fail condition (death, collision, timer)
- Scoring
- Restart flow (GameState.reset() → clean slate)
Scope: 1 scene, 1 mechanic, 1 fail condition. Keep it tight.
Rules:
- All cross-module communication via EventBus
- All magic numbers in Constants.js
- No title screen — boot directly into gameplay
- No in-game score HUD — Play.fun widget handles score display
- Mobile-first input: touch + keyboard, use unified InputSystem pattern
- Import
SAFE_ZONEfrom Constants.js — keep UI belowSAFE_ZONE.TOP- Minimum 7-8% canvas width for collectibles/hazards
- Character sizing:
GAME.WIDTH * 0.12toGAME.WIDTH * 0.15for character-driven games- Preserve the template's
createButton()helper in GameOverScene — do NOT rewrite it- Wire spectacle events:
SPECTACLE_ENTRANCE,SPECTACLE_ACTION,SPECTACLE_HIT,SPECTACLE_COMBO,SPECTACLE_STREAK,SPECTACLE_NEAR_MISS- Add
isMutedto GameState for future audio support- Ensure restart is clean — 3 restarts in a row should work identically
Step 2: Verify
After the subagent returns:
- Run
npm run buildin the project directory to confirm no errors - If the build fails, fix the issues (up to 2 retries)
- If Playwright MCP is available, navigate to the dev server, take a screenshot, and do a quick visual check
Example Usage
2D game
/quick-game 2d asteroid-dodge
Result: Copies Phaser template → implements player ship, asteroid spawning, collision death, score counter, restart flow → dev server running at localhost:3000 in ~2 minutes. Shapes only, no polish.
From tweet
/quick-game https://x.com/user/status/123456
Result: Fetches tweet → abstracts game concept → scaffolds and implements a playable prototype inspired by the tweet content.
Troubleshooting
Game scaffolds but won't start
Cause: Vite config or import paths incorrect. Fix: Verify vite.config.js has correct root. Check that main.js is referenced in index.html.
Missing core files
Cause: Scaffold skipped EventBus/GameState/Constants. Fix: Every game needs core/EventBus.js, core/GameState.js, core/Constants.js. Re-run scaffold or create manually.
Done
Tell the user:
Your game is running at
http://localhost:<port>. Open it in a browser to play!To keep building, run these commands:
/add-assets— replace shapes with pixel art sprites/design-game— add visual polish (particles, gradients, juice)/add-audio— add music and sound effects/game-deploy— deploy to the web/monetize-game— add Play.fun integrationOr run
/make-gamenext time for the full pipeline.