#Build a game with AI
You don't have to be an engineer to put a game on the arcade. An AI coding assistant can write the whole thing. You supply the idea and the rules it has to follow. This page is those rules, in a form you can paste straight into a chat.
You need three things: the repo on your machine, Node 24+, and an AI coding tool that can edit files in it (Claude Code, Cursor, Copilot, or similar).
Never used GitHub? Getting started has a path that gets you set up with GitHub Desktop and no command line beyond three commands. Do that first, then come back here.
#1. Make the folder
npm run new-game -- my-game --template vanilla
my-game is your game's id: lowercase letters, digits and hyphens. It becomes the
folder name and the URL. Use --template vanilla unless you know you want a
build step. It's plain HTML and JavaScript, so there's nothing to compile and the
AI has fewer ways to get it wrong.
You now have games/my-game/ with a working (if boring) page in it.
#2. Give the AI the brief
Copy everything in this block, fill in the two bracketed parts, and send it.
I'm adding a game to the Gamesight Arcade, a repo of browser games. My game lives in
games/my-game/and is already scaffolded from the vanilla template.The game: [describe it in a few sentences: what the player does, how they win or lose, what it looks like]
Rules you must follow:
- Only edit files inside
games/my-game/. Never change anything elsewhere in the repo.- The game must be plain static files: HTML, CSS, JavaScript, images. No server, no backend, no npm packages, no build step. Put everything in
games/my-game/public/, withindex.htmlat the top of it.- Every URL in the game must be relative (
main.js,./art/ship.png), never absolute (/main.js). The game is served from a subfolder and absolute paths break it.- The arcade SDK is already loaded by
<script src="/sdk/v1/arcade.js">inindex.html. Leave that tag alone. It gives you a global calledArcade. It is undefined when the page is opened directly from disk, so keep thetypeof Arcade !== "undefined"guard that's already inmain.js.- Don't build a login, a user list, or a high-score server. The arcade provides sign-in and leaderboards; use the SDK calls below.
- Update
games/my-game/game.json: a realdescription, my name inauthors, and agenre(free text; it groups the game on the landing page). Don't changeslugor thebuildblock.- It must work with a keyboard and a mouse, and not depend on any file I'd have to download separately.
Arcade features you can use (all optional, all fail silently when offline, so wrap them in
try/catchand carry on):Arcade.init(); // once, at startup await Arcade.leaderboard.submit(score); // when a run ends const top = await Arcade.leaderboard.top(10); // [{ player, score, at }, …] const user = await Arcade.auth.getUser(); // { email, name, picture } | null await Arcade.achievements.unlock("first-win"); // see belowWhen you're done, tell me what you changed and how to try it.
#3. Try it
npm run build && npm run preview
Open http://localhost:8002. Your game is on the landing page, and playable at
http://localhost:8002/games/my-game/. Play it, then tell the AI what to change.
Rebuild with npm run build -- --only my-game to skip rebuilding everything else.
Keep the loop tight: one change, rebuild, play, react. That works far better than describing five changes at once.
#4. Add achievements
Achievements are the highest-value thing to add and the easiest to describe. Each game gets 1000 GS (Gamesight Score) to spend across up to 100 of them. Ask for them like this:
Add achievements to my game. Create
games/my-game/achievements.jsonfollowingschema/achievements.schema.jsonand the guide indocs/guides/achievements.md. Give me [6–10] achievements covering easy first steps through to hard mastery, with the points totalling exactly 1000. Then callArcade.achievements.unlock("<id>")at the right moments in the game code. Finally runnpm run gen-achievementsandnpm run validate.
The popup, the chime, the player's score and the browse page at
/achievements/my-game/ all appear on their own. Full detail: achievements.
#5. Check it before you share it
npm run validate
This is the same check CI runs, and it catches a broken game.json or an achievement
list that doesn't add up. If it prints an error, paste the whole error to the AI;
the messages name the file and the problem.
#When it goes wrong
Two things AI assistants get wrong on this repo more than anything else:
absolute URLs (the game is served from a subfolder, so /main.js 404s), and
inventing a backend for scores it could have got from Arcade.leaderboard.
Both are in the brief above. When you see one, point at the rule rather than
explaining the fix; it's shorter and it sticks.
Troubleshooting has the rest, including what to say back for each one.
#Get it reviewed
Your game needs approval from Anthony Kinson or Robert Syvarth before it goes live, on a GitHub pull request. Submitting your game walks through it both ways: with Git, and with GitHub Desktop if you'd rather not touch the command line.
You can ask the AI to do the git part for you. Read what it says it's doing first, and keep the change to your own game folder.
See also: getting started · adding a game · achievements · leaderboards