2 cases built from this template
Same prompt, different [VARIABLES]. Click one to preview it above.About this template
Open World City Driving Game is a single-page browser game on a small city grid at dusk. The first screen is the district itself: low-poly blocks, a pocket park, six parked pool cars, and traffic already moving, with a title card beside the view. The player then walks the sidewalks, sits in any club car, and drives with simple arcade steering. Those cars belong to an invented neighborhood car club. The errands are porch deliveries and a friendly lap.
The default world is Amber Row Club in Reed Wharf. Members borrow mint-striped pool cars, carry bakery boxes from the club to three shops, or run the Lantern Lap: six gates around the outer streets, par 52 seconds. A north-up minimap, an evening clock, and street lamps keep the grid readable. Across about two and a half minutes the sky eases from lilac dusk to deep night and more windows turn on. Road shapes stay put when the names change.
Controls work on a desk and a phone. The keyboard walks, drives, enters and leaves cars, and uses doors. A phone uses a left stick plus gas, brake, and action buttons that can be held together. Pause, help, a sound toggle that starts muted, and saved bests are part of the loop. Reduced motion stops the title camera's drift and extra pulses. Driving itself stays direct.
Developers and indie hackers can ship the game as static files. Five variables rename the club, the district, the cargo, the race, and the tagline. Shop signs, street labels, and small props follow that text. The roads, car handling, missions, and lighting stay fixed. A night flower market is the second case. Nothing here needs a server, an account, or a downloaded city model.
The template prompt
The live demo was built from exactly this text — nothing added. The other cases only change the values of the [VARIABLES].
# Open World City Driving Game Build this website exactly as described below. Replace the [VARIABLES] with your own values; keep everything else. ## Brief Build [BRAND], a complete single-page 3D browser game in the invented district of [DISTRICT]. The player walks a small low-poly city at dusk, borrows any mint-striped pool car, and either carries [ERRAND] to three doors or drives [RACE_NAME], a six-gate lap. The whole district is loaded at once and is the first thing on screen. Lighting eases from lilac dusk to night over two and a half minutes of play. Default tagline: [TAGLINE]. - Audience: Indie hackers, front-end developers, and designers who want a polished static Three.js driving toy with keyboard and on-screen gamepad controls, readable at neighborhood speed on both a desk and a phone. - Goal: Ship one replayable evening: a title card over a living street grid, free walking, entering and leaving pool cars, arcade driving, eight ambient traffic cars, a north-up minimap, a porch-run errand, a lap time trial, dusk-to-night light, pause and help, and local bests. Two different name sets must keep the same roads, handling, and mission geometry. - Tone: Warm, local, and playful. Short US English, concrete place names, and the manners of a neighborhood car club. The player is a welcome member borrowing club cars and dropping parcels or flowers at doors. ## Stack - Framework: Vite 6 + TypeScript 5 - Styling: Vanilla CSS - Libraries: three (MIT), lucide (ISC), @fontsource-variable/fraunces (OFL), @fontsource-variable/outfit (OFL), @fontsource/ibm-plex-mono (OFL) - Build: `npm run build` → static files in `dist/`. No backend, no server code, no external APIs. - Setup: - Scaffold Vite's vanilla TypeScript template. Scripts: dev=vite, build=tsc && vite build, preview=vite preview. Package name is the slug of BRAND, not a fixed template id. Set vite base to './', build.outDir to dist, build.emptyOutDir to true, and build.sourcemap to false. tsconfig: strict true, noEmit true. - Install only three, lucide, @fontsource-variable/fraunces, @fontsource-variable/outfit, and @fontsource/ibm-plex-mono as runtime dependencies, plus Vite and TypeScript as dev dependencies. Do not add React, a physics engine, a game framework, postprocessing, or a tween library. - Import Fraunces variable weights 600 and 700, Outfit variable weights 400, 500, and 600, and IBM Plex Mono weight 500 from those packages. Import only the Lucide icons Play, Pause, Volume2, VolumeX, CircleHelp, Car, Flag, Package, and X. Wait for document.fonts.ready before drawing canvas signs. - Use modules src/content.ts, main.ts, world.ts, drive.ts, traffic.ts, missions.ts, lighting.ts, minimap.ts, ui.ts, audio.ts, and styles.css. Keep every proper name, button label, help line, toast, and sign string in content.ts. Simulation code reads that module. - World axes: +x east, +y up, +z north. Heading yaw for a mesh is Math.atan2(forwardX, forwardZ) assigned to rotation.y. Yaw 0 faces +z. Verify the Kiln pool car points north; if it points south, flip the yaw sign rather than mirroring the map. - Use BRAND, DISTRICT, ERRAND, RACE_NAME, and TAGLINE everywhere player-facing copy is built. When any value differs from the defaults, rewrite signs, shop names, awning props, and board sentences in content.ts and keep every coordinate, speed, color, and gate. If DISTRICT is Orchid Blocks and ERRAND is flower crates, use the alternate name table in the world section exactly. - Persist only porch best points, best lap seconds, and mute in localStorage under a key slugified from BRAND plus -evening. No calendar dates. Parse nothing from the network. - One index.html, lang=en, viewport with viewport-fit=cover, a full-view canvas, and HTML overlays. Document title is BRAND + an em dash + DISTRICT. Body overflow hidden. No router. ## Variables - [BRAND] — Club name (default: "Amber Row Club"). Invented club or market name on the title card, clubhouse sign, and save key. - [DISTRICT] — District (default: "Reed Wharf"). Invented neighborhood. Used in the eyebrow, idle objective, and title. - [ERRAND] — Cargo (default: "bakery boxes"). Lowercase plural noun for the porch-run cargo. - [RACE_NAME] — Lap name (default: "Lantern Lap"). Short name of the six-gate time trial. - [TAGLINE] — Title deck (default: "Walk the blocks before the lamps take over."). One sentence under the club name on the title card. - [CREDIT] — keep a small "Template by VibeFather" link to https://vibefather.ai/t/open-world-city-driving-game in the footer (default: yes; delete this line to remove it) The copy under Pages & Sections is written for the default values. If your values differ, rewrite every headline, paragraph, label and image for them — same length, tone and structure. Layout, colors, type and motion stay as described. Keep all copy, image paths and links in one content file (for example `src/content.ts`), keyed by section, so the content can be swapped later without touching components.
Pro template. The design, sections, motion and assets parts of this prompt are for Pro members. The live demo and DESIGN.md stay free.
DESIGN.md
The design system on its own — colors, type, spacing and motion. Apply this look to a project you already have.
---
name: "Open World City Driving Game"
colors:
night_ink: "#141821"
paper: "#F4EFE4"
lilac: "#6E5B8A"
zenith: "#1B2440"
fog_plum: "#4C4568"
mint: "#3DDCB5"
clay: "#C47A6A"
window_gold: "#F2C56B"
lamp: "#F6E2A8"
asphalt: "#2C3140"
sidewalk: "#6E675C"
park: "#3E6B52"
lane: "#E7D7A8"
brake: "#E07A5F"
typography:
title_card_name_and_clubhouse_sign: { family: "Fraunces Variable", weights: [600, 700] }
hud_buttons_help_and_signs: { family: "Outfit Variable", weights: [400, 500, 600] }
clock_lap_timer_and_speed: { family: "IBM Plex Mono", weights: [500] }
spacing: "Use a 4 px base. Desktop HUD inset 16 px, cluster gap 8 px, title card padding 28 px. Mobile inset 10 px plus safe-area insets, cluster gap 8 px. Buttons are at least 44 px; the stick and GAS are at least 72 px. The center of the frame stays clear of chrome."
radius: "Title card 20 px, HUD chips 14 px, buttons 12 px, gamepad buttons fully round. World forms stay faceted; only wheels, lamp bulbs, heads, and the fountain are round."
---
# Open World City Driving Game — Design System
Apply this design system to an existing project. It describes the look and feel only; for the full site, use prompt.md.
## Colors
- **Night ink** `#141821` — Page background, HUD chips, text on paper, dark pool-car paint
- **Paper** `#F4EFE4` — Title card, toasts, street signs, light car paint, crosswalks
- **Lilac** `#6E5B8A` — Dusk horizon, hemisphere sky at the start of the evening
- **Zenith** `#1B2440` — Sky top, renderer clear color, night fog target
- **Fog plum** `#4C4568` — Dusk fog color
- **Mint** `#3DDCB5` — Pool-car stripe, primary button, active lap gate, player scarf, minimap player
- **Clay** `#C47A6A` — Selected roofs and awnings, one pool car, brake-light neighbor
- **Window gold** `#F2C56B` — Lit windows and the active errand dot
- **Lamp** `#F6E2A8` — Street-lamp bulbs and the driven car's headlights
- **Asphalt** `#2C3140` — Road surfaces
- **Sidewalk** `#6E675C` — Ground plane and curbs
- **Park** `#3E6B52` — Pocket-park grass and a few tree crowns
- **Lane** `#E7D7A8` — Lane dashes, cargo box, bay rectangles
- **Brake** `#E07A5F` — Brake lights and the single wrong-way toast
## Typography
- **Title card name and clubhouse sign** — Fraunces Variable (OFL), weights 600/700. Self-host the font files.
- **HUD, buttons, help, and signs** — Outfit Variable (OFL), weights 400/500/600. Self-host the font files.
- **Clock, lap timer, and speed** — IBM Plex Mono (OFL), weights 500. Self-host the font files.
## Spacing & shape
- Spacing: Use a 4 px base. Desktop HUD inset 16 px, cluster gap 8 px, title card padding 28 px. Mobile inset 10 px plus safe-area insets, cluster gap 8 px. Buttons are at least 44 px; the stick and GAS are at least 72 px. The center of the frame stays clear of chrome.
- Radius: Title card 20 px, HUD chips 14 px, buttons 12 px, gamepad buttons fully round. World forms stay faceted; only wheels, lamp bulbs, heads, and the fountain are round.
## Motion
- Fixed simulation step of 1/60 second, accumulator capped at 0.05 seconds. Render with the latest state. Decorative motion uses the frame delta.
- Title camera drifts by a sine of 0.09 radians over about 20 seconds. Chase camera damps with exponential smoothing. Wheels roll from distance traveled. The driven car leans at most 3 degrees into a turn. No camera shake.
- Dusk is a single 0 to 1 mix over 150 seconds of unpaused play, applied to sky, fog, sun, windows, and lamps. It holds at 1. It does not advance on the title card, board, help, or pause.
- Gates and the objective dot pulse scale from 1 to 1.06 over 1.2 seconds. Toasts fade in 160 ms. Buttons darken on press in 80 ms.
- With prefers-reduced-motion, freeze the title drift, cloud cards, fountain bob, gate pulse, and figure sway. Snap UI in place. Keep walking, driving, traffic, and the slow dusk mix, because those are the game.
## Imagery
Draw the entire district from original Three.js primitives with MeshLambertMaterial, flatShading true, roughness not used, and no texture maps, HDRIs, or downloaded models. The first screen is the 3D district beside a paper title card, never type on a flat field. People are geometric: a sphere head with no face, a box coat, and simple legs. Vary coat colors. They are fictional and do not resemble any real person. No photographs.
## Tone
Warm, local, and playful. Short US English, concrete place names, and the manners of a neighborhood car club. The player is a welcome member borrowing club cars and dropping parcels or flowers at doors.
---
Inspired by One-prompt open-world city driving demo by @XFreeze — https://www.tweaktown.com/news/113703/forget-gta-6-ahem-grok-4-7-made-a-gta-style-game-from-one-prompt-as-musk-boasts-of-ai-developing-photo-realistic-games/index.html
— Prompt by VibeFather · https://vibefather.ai/t/open-world-city-driving-game · CC BY-NC 4.0 (non-commercial; commercial use needs a VibeFather Pro license) · Request removal: https://vibefather.ai/takedown
Make it yours
- A local car club: set BRAND to your club name, DISTRICT to your neighborhood, and swap the porch cargo for parts or coffee runs between member shops.
- A night market organizer: rename the club to your market, set ERRAND to flower crates and RACE_NAME to a market loop, then rewrite the shop signs to match your stalls.
- An indie game portfolio piece: keep the Amber Row Club world, change TAGLINE to your studio line, and use the saved lap bests as a replayable demo on your site.
- A city tourism board: set DISTRICT to a real-feeling downtown, rename the errand to local deliveries, and relabel the six gates as landmark stops along the lap.
Open World City Driving Game: questions and answers
What is there to actually do in the Open World City Driving Game?
The Open World City Driving Game gives you one evening in a small city grid. You walk the sidewalks, borrow any mint-striped pool car, and choose between a porch run that carries bakery boxes from the club to three shops or the Lantern Lap, a six-gate time trial around the outer streets with a par of 52 seconds. A minimap, evening clock and saved bests keep the loop going.
How do I rename the club, district, cargo and race in the Open World City Driving Game?
The Open World City Driving Game exposes five variables: BRAND for the club name, DISTRICT for the neighborhood, ERRAND for the porch-run cargo, RACE_NAME for the lap, and TAGLINE for the title deck. Change them in the content module and the title card, clubhouse sign, shop names, street labels, awning props and board sentences follow. Roads, car handling, gate positions and lighting stay fixed.
Can I use the Open World City Driving Game for a client project or a commercial site?
Commercial and client use of the Open World City Driving Game requires Pro. The template is a Pro template, so its brief, stack and variables are public while the full prompt and the demo source code come with Pro membership. Free prompts and every DESIGN.md are licensed for personal, non-commercial use only.
How does the Open World City Driving Game control on a phone?
The Open World City Driving Game uses a left stick plus gas, brake and action buttons on a phone, and those buttons can be held together. The keyboard walks, drives, enters and leaves cars, and opens doors on a desk. Pause, help and a sound toggle that starts muted are always available, and reduced motion stops the title camera drift and extra pulses while driving stays direct.
What do I need to host the Open World City Driving Game, and what changes over the evening?
The Open World City Driving Game builds to static files with no server, account or downloaded city model, so any static host works. During about two and a half minutes of play the sky eases from lilac dusk to deep night and more windows turn on. Saved porch bests, best lap seconds and mute are stored locally in the browser, never sent to a backend.
How do I build an open world city driving game with AI?
Copy the full prompt (Pro) from this page or run npx vibefather add open-world-city-driving-game, replace [BRAND], [ERRAND], [TAGLINE] and [DISTRICT] with your own content, and paste it into Claude Code, Codex, Cursor or another AI coding agent. The live demos were built from exactly that text.
Which AI model built the Open World City Driving Game demo?
The Reed Wharf Car Club case was built by Grok 4.7 in Grok Build; the Night flower market case was built by Grok 4.7 in Grok Build. Each build used the published prompt with nothing added.
What tech stack and pages does the Open World City Driving Game template use?
Open World City Driving Game is a single-page site built with Plain HTML and Three.js, with 3d / webgl and micro-interactions. The prompt fixes the stack so every AI tool builds the same kind of project, and the result runs as a static site you can host anywhere.
Is the Open World City Driving Game template free to use?
Open World City Driving Game is a Pro template: the brief, stack and variables are public, and the full prompt, the source code of the live demo and a commercial license come with VibeFather Pro. Its DESIGN.md is free for personal projects.
Does the Open World City Driving Game template work on mobile?
Yes. Every Open World City Driving Game build was tested on a phone-sized screen as well as desktop before it went live, checking layout, text size and touch targets. Open the live demo on your phone, or switch the preview on this page to mobile view, to check it yourself.