Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
Make your own games and learn by making.
GamesTypeScript · HTMLGitHub @swiftugandanOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Chamuka Play — a vibe-coding playground where kids make their own games and learn by making
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗A vibe-coding playground where kids make their own games, play them, tweak them in plain language, and keep them — and learn by making. Non-commercial, open source, self-hostable.
v1 is the kid game playground. The learning-focused features (predict-the-diff, explanation gate) and sharing come later — see
docs/specs/.
No signup, no accounts, no telemetry. Games persist in your browser.
Next.js 16 (App Router) · React 19 · TypeScript · Tailwind v4 + shadcn/ui ·
Vercel AI SDK v6 (ToolLoopAgent, useChat) · Claude via Anthropic or the
Vercel AI Gateway · Vercel Sandbox + Playwright for playtests · Zod 4 ·
Dexie/IndexedDB · Vitest + RTL.
npm install
cp .env.example .env.local # then fill in the values below
npm run dev # http://localhost:3000
Everything is optional — with nothing set, MOCK_AI=1 runs the whole studio
offline. See .env.example for the full list.
| Variable | Purpose |
|---|---|
AGENT_MODEL | The agent's model as a provider/model slug. Default anthropic/claude-sonnet-5.5. |
ANTHROPIC_API_KEY | Call Claude directly. Without it, anthropic/* models go through the Vercel AI Gateway. |
AI_GATEWAY_API_KEY | Gateway auth for local dev. On Vercel, OIDC handles it — no key needed. |
GOOGLE_GENERATIVE_AI_API_KEY | Call Gemini directly when AGENT_MODEL is a google/* model (also used by the idea chips). |
AGENT_EFFORT | Claude thinking effort: low · medium (default) · high · xhigh · max. |
PLAYTEST_SNAPSHOT_ID | Turns on real-browser playtests in Vercel Sandbox (see below). |
MOCK_AI=1 | No key at all — a scripted offline agent builds and edits a real demo game. |
Mishi tests every game it builds. With a sandbox snapshot configured, each test
boots an isolated Firecracker microVM, loads the game in headless Chromium, plays
it (the keys it chose, a tap, a phone-sized pass) and reports uncaught errors,
frame rate, blank screens and sideways scrolling — plus a screenshot that Claude
looks at. The VM can reach only cdn.jsdelivr.net, so untrusted generated code
can't phone home. Without a snapshot, games get a fast compile-only check.
vercel link && vercel env pull # gives the Sandbox SDK an OIDC token
npm run playtest:snapshot # installs Chromium in a sandbox, verifies, snapshots
# → put the printed PLAYTEST_SNAPSHOT_ID in .env.local and the Vercel project
npm run dev # dev server (Turbopack)
npm run build # production build
npm run start # serve the production build
npm run lint # ESLint
npm run test # Vitest (unit + component tests; the playtest harness runs in
# real Chromium when `npx playwright install chromium` was run)
npm run playtest:snapshot # one-time: build the Vercel Sandbox playtest snapshot
Import the repo on Vercel. The AI Gateway and Vercel Sandbox both authenticate
via OIDC in production, so no keys are needed there (add ANTHROPIC_API_KEY to
bill Anthropic directly instead). Set PLAYTEST_SNAPSHOT_ID to enable browser
playtests. The agent route runs on Fluid compute with a 300s budget per turn.
There is no database to provision — it is local-first (IndexedDB in the browser).
src/
app/ # routes + API handlers (/api/agent, /api/examples)
components/play/ # Shell, PlayView (studio), StudioChat, AgentStep, GamesDrawer…
lib/
agent/ # the game agent: protocol, tools, workspace, prompt, playtests
ai/ # model routing, find/replace edits, offline demo game
games/ # starter registry + system prompt
safety/ # kid prompt filter
diff/ # friendly change summary
storage/ # Dexie repository (game versions)
docs/ # product spec + implementation plan
MIT — see LICENSE.