Antigravity 2D Game Studio is an all-in-one 2D game development plugin and live WebAssembly Playtest Studio UI extension for Google Antigravity. Build 2D games in Go with Ebitengine and Google Gemini, compile and playtest them live at 60 FPS in the side pane, rewind a 10-second DVR buffer, annotate visual bugs, and export 10-second animated GIF clips directly into your chat session.
agy-game-studio ships with prebuilt UI assets (dist/) and uses Antigravity's bundled Node.js runtime and sidecar_sdk. Installing the plugin as a user requires no npm install or frontend build step — only a Go toolchain (1.26+ recommended) to compile your games to WebAssembly (GOOS=js GOARCH=wasm).
Choose the installation method for your Antigravity surface:
Install directly from GitHub in your shell:
agy plugin install https://github.com/danicat/agy-game-studioOr inside an interactive agy TUI session using /plugin:
/plugin install https://github.com/danicat/agy-game-studio
Place the plugin directory in one of Antigravity's plugin discovery roots:
-
Global (all workspaces):
- macOS / Linux:
~/.gemini/config/plugins/agy-game-studio - Windows:
%USERPROFILE%\.gemini\config\plugins\agy-game-studio
git clone https://github.com/danicat/agy-game-studio.git ~/.gemini/config/plugins/agy-game-studio - macOS / Linux:
-
Workspace (project-scoped): Place the plugin at
.agents/plugins/agy-game-studioin your repository root, or declare its parent directory in.agents/plugins.json(workspace) or~/.gemini/config/plugins.json(global):{ "entries": [ { "path": "/path/to/plugins" } ] }
- If you created a new plugin directory manually on disk, restart Antigravity so it discovers the directory on startup.
- In Antigravity 2.0 or Antigravity IDE, open Customizations in the left sidebar, select the Installed tab, and verify Antigravity 2D Game Studio (
agy-game-studio) is enabled. (Or run/pluginin chat /agy plugin enable agy-game-studioin the CLI.) - Once enabled, Antigravity automatically starts and supervises the
agy-game-studio/studiosidecar process.
Use these slash commands inside any Antigravity conversation:
/vibe-game-developer— Start a new 2D game from scratch. Interviews you to create aGDD.md, architects the Ebitengine loop, generates procedural or Gemini art/music, and launches Playtest Studio./playtest-studio— Open the Playtest Studio side pane (or click ⋮ → Extensions → Playtest Studio in the top-right corner of a conversation)./grill-me— Run an interactive game design interview to flesh out mechanics and produce aGDD.md.
The nano-banana (image generation) and lyria (music generation) skills support either a Gemini API key or Google Cloud Vertex AI Application Default Credentials (ADC):
# Option A: Gemini API Key (Google AI Studio)
export GEMINI_API_KEY="your-api-key"
# Option B: Vertex AI ADC
gcloud auth application-default login
export GOOGLE_CLOUD_PROJECT="your-gcp-project-id"
export GOOGLE_CLOUD_LOCATION="global"Run ./scripts/check_env.sh at any time to verify Go, wasm_exec.js, Node.js, uv, Python 3, and your Gemini credentials.
Open Playtest Studio in the right-hand side pane via /playtest-studio, [Playtest Studio](sidecar://agy-game-studio/studio/), or ⋮ → Extensions → Playtest Studio:
- Unified Project Path & 1-Click WASM Build: Enter any Go game directory or package path (e.g.
/path/to/gameor/path/to/repo/cmd/game) and pressEnteror click 🚀 Run. The sidecar automatically resolvesgo.mod, compiles withGOOS=js GOARCH=wasm, and streams any compiler or runtime panic tracebacks directly to chat. - 60 FPS Zero-Copy DVR Ring Buffer: Continuously records the last 10 seconds (250 frames @ 25 FPS) onto GPU-backed 2D canvases without dropping frame rate.
- Pause, Scrub & Annotate (
F8or`): Pause gameplay, scrub frame-by-frame through the 10s DVR timeline, draw boxes/arrows/callouts over visual bugs, and send either:- 📸 Frame: Smart-cropped PNG screenshot (true-to-screen resolution when unannotated, or automatically expanded to include any margin notes drawn in the scratch space) + WASM console logs.
- 🎞️ 10s GIF: Pure 10-second animated GIF89a replay locked strictly to the game's screen resolution + WASM console logs.
| Skill | What it does |
|---|---|
vibe-game-developer |
Main entry point (/vibe-game-developer). Routes your prompts to the right design, code, art, or audio skill. |
playtest-studio |
Launches the live 60 FPS Ebitengine WASM Playtest Studio in the side pane (/playtest-studio) with a 10s DVR rewind buffer, 10s GIF export, and visual bug annotations. |
game-design |
Asks focused design questions (/grill-me) to turn your idea into a clear GDD.md. |
ebitengineer |
Writes Ebitengine v2 game loops, scenes, 2D cameras, physics, tilemaps, shaders, and WebAssembly builds. |
procedural-art |
Draws 2D sprites, shapes, color ramps, and particles in pure Go code without image files. |
sprite-animation |
Slices sprite sheets, plays frame animations, and reads Aseprite files. |
procedural-composer |
Generates retro sound effects and music loops in pure Go code. |
nano-banana |
Generates sprites, tilesets, and game art with Nano Banana (gemini-3.1-flash-image-preview, gemini-3-pro-image-preview). |
lyria |
Generates 44.1 kHz stereo music tracks and loops with Lyria (lyria-3-pro-preview, lyria-3-clip-preview). |
godoctor |
Checks Go code quality, test coverage (testquery), and mutation score (selene). |
swarm-coding |
Splits multi-system game features across parallel subagents with disjoint file ownership. |
Only contributors modifying Playtest Studio's TypeScript frontend (src/), sidecar server (server/), or bundled skills need to install dev dependencies and rebuild dist/.
Clone the repository and symlink it into ~/.gemini/config/plugins/ so Antigravity loads your live working tree:
git clone git@github.com:danicat/agy-game-studio.git
cd agy-game-studio
ln -s "$(pwd)" ~/.gemini/config/plugins/agy-game-studio
./scripts/check_env.shnpm install
npm run build
npm run typecheck
npm testnpm run build typechecks the TypeScript source (src/) and runs Vite to produce the self-contained frontend bundle (dist/index.html, dist/app.js, dist/styles.css) so the committed dist/ folder runs with zero external node_modules.
Antigravity writes sidecar stdout and stderr to:
~/.gemini/antigravity/sidecar_data/agy-game-studio/studio/logs/sidecar.log
- Frontend changes (
src/): Runnpm run build, then refresh or close and reopen the Playtest Studio panel. The sidecar server readsdist/index.html,dist/app.js, anddist/styles.cssfresh from disk on every request. - Backend changes (
server/orsidecars/studio/): Disable and re-enable Antigravity 2D Game Studio (agy-game-studio) in Customizations → Installed (or via/plugin) to restart the background sidecar process.
# Generate or edit images with Nano Banana
uv run skills/nano-banana/scripts/banana.py --help
# Generate music tracks with Lyria
uv run skills/lyria/scripts/lyria.py --help
# Slice a sprite sheet PNG into an Aseprite JSON manifest
uv run skills/sprite-animation/scripts/slice_spritesheet.py --helpDISCLAIMER: I AM NOT A GAME DEVELOPER.
I am Daniela Petruzalek, a Developer Relations Engineer at Google. I might not be a game developer, but I am a lifetime gamer and game collector. I enjoy using projects like this to teach software engineering, agentic coding, and creative ways to build with AI.



