Cindy Zhu.
← all free guides
Building & apps ChatGPT

Build a night Tokyo police chase game with GPT-6 Astra

Hey, it's Cindy ๐ŸŒฑ This is the whole game as one prompt. You paste it into GPT-6 Astra once, it writes every file, and Higgsfield makes the cars and the city. No game engine, no downloads, one folder that runs in a browser. Play mine first so you know what you are aiming for. ๐Ÿ‘ฉโ€๐Ÿ’ป

๐ŸŽฎ Play the game

What you are building. A midnight Tokyo street. You drive a red sports coupe through six lanes of traffic at 260 km/h, tap SPACE to boost to 360, chain near misses for points, and try not to let the three police cruisers on your tail fill the bust meter. Photo-real building facades, glowing signboards, wet asphalt, umbrellas on the sidewalk, rain, engine and siren sound. Astra writes the code from one prompt. The art comes from Higgsfield. Your job is taste: play it and give notes.

step one

Switch ChatGPT to GPT-6 Astra and turn the thinking up ๐Ÿง 

This is the kind of task Astra is actually for. The prompt hands it a whole interlocking system, a treadmill world, traffic rules, police AI, a post-processing chain, and expects it to hold all of it at once. That is the "novel environment" strength from the benchmarks (the full breakdown is in my Astra guide). On the older models this prompt comes back as a skeleton with comments saying "add traffic here". On Astra it comes back as a game.

1. Pick the model
Open a new chat, open the model picker at the top, and switch it to GPT-6 Astra. Do not leave it on auto: a long build prompt is exactly what auto routes to a cheaper model.
2. Turn the thinking level up
Next to the model, set the thinking level. High is fine for a first pass. Extra high is what I used for this game. If your plan shows Ultra (Astra Ultra), use it: the extra time goes on the parts that break, the police logic and the bloom.
3. Paste the prompt below, once
Copy the whole box in step two and send it as one message. Ask for the files in full, no placeholders. If it offers a zip, take the zip.
4. Run it
Save the files into one folder and open that folder with any local server (the Live Server extension in VS Code, or "python3 -m http.server" in a terminal), then open index.html. Double-clicking the file on its own will not load the models.
๐ŸŒฑ Give it notes like a person. Astra gets 90 percent of this right on the first pass. Then drive for two minutes and tell it what you feel: "the cops need to be on my tail", "the road is too dark", "the lights are too glowy", "normal speed should feel like a boost". Every one of those was a real note on this game and each was a two-minute fix. You are the art director, not the programmer.

step two

The one prompt ๐ŸŽฎ

Everything is in here: the game, the tuning numbers, the traps, and the exact image prompts for the assets. It is long on purpose so Astra builds the finished thing rather than a demo. Do not trim it.

๐ŸŽฎ paste this into GPT-6 Astra
You are building a complete browser game for me in one go. Produce every file in full, no placeholders, no "add later" comments. If anything is ambiguous, pick the option that looks best and keep going. At the end, give me the asset list from the ASSETS section so I can generate them in Higgsfield and drop them into the folder.

Build a browser game called Neon Pursuit: a night-time Tokyo street chase. Vanilla JavaScript with Three.js (ES modules, an importmap, no bundler, no framework). Everything lives in one folder: index.html, client.js, a vendor folder for Three.js plus its postprocessing and GLTFLoader modules, a models folder, a tex folder. It must run from any static host through a local server, with every asset path relative. It must run immediately with procedural fallbacks (box-built cars, canvas textures) before any asset exists.

THE FANTASY
Third-person chase camera low behind a red 1990s Japanese sports coupe. Six lanes of one-way traffic to weave through. Police cruisers glued to my bumper. Neon canyon of buildings on both sides, rain, wet reflective road, a Tokyo skyline with Tokyo Tower at the vanishing point. It should feel like a Forza or Need for Speed screenshot, not a tech demo.

WORLD (treadmill)
The player car stays near the origin facing negative Z. Everything else (road texture, buildings, traffic, pedestrians, police) moves toward positive Z at the player's speed and is recycled when it passes behind the camera. Road is 24 m wide (lanes at x = -10, -6, -2, 2, 6, 10), a 440 m long plane. City is built from 16 recycled slots of 24 m each on both sides: random building boxes 10 to 26 m wide, 14 to 70 m tall, with a separate 4.6 m ground-floor box. Every slot also has a streetlight, a concrete utility pole with three sagging wires drawn as line segments, a 50 percent chance of a glowing vending machine, and every fifth slot either a green overhead highway gantry sign (Japanese and English text drawn on a canvas texture) or a zebra crossing decal. Sidewalks are 5 m wide with a curb. Behind everything, a huge photo panorama of the Tokyo skyline on a plane at z = -600, 900 units tall so the widest field of view never sees its edge, with fog disabled on it.

GROUND
Three scrolling layers: asphalt texture on the road (metalness 0.45, roughness driven by a canvas puddle map so reflections break into patches, envMapIntensity 0.7), a transparent lane-paint decal on top with polygon offset, and a sidewalk texture. Scroll all of them every frame by distance travelled divided by tile length, and ADD to the offset (v grows away from the camera, so adding slides the pattern toward the player). Wrap offsets with modulo 1 so they never drift. Under every neon sign and streetlight lay a thin additive gradient streak plane on the road in that sign's colour: that is the wet reflection.

LOOK
ACES tone mapping, exposure 1.0. Scene fog dark indigo from 45 to 300 m. Hemisphere light 0.5, ambient 0.25, one warm directional key light at 0.85 from behind the camera so the hero paint reads, one spotlight headlight on the player. Postprocessing chain: RenderPass, UnrealBloomPass at half resolution (strength 0.6, radius 0.38, threshold 1.04), then a custom grade ShaderPass (cool blue shadow tint 0.74/0.84/1.18 mixed in below 70 percent luminance, 12 percent desaturation, vignette 0.6, lift 0.9), then OutputPass. Only things meant to glow may exceed 1.0: multiply neon sign colours by about 2.1, sign halos by 1.6, streetlight lamps by 1.7, taillight bars by 1.6, exhaust flames by 2.6. Building facades use the photo texture as both map and emissive map with emissive intensity 0.55 (storefronts 0.9) so windows glow without blooming. Reflections come from a PMREM environment generated once from a tiny room scene of magenta, cyan and warm emissive panels.

CARS
Load five GLB models: player, police, taxi, sedan, van. Normalise each on load: rotate so the longest horizontal axis runs along Z, scale to a real length (player 4.5 m, police 4.8, taxi 4.7, sedan 4.5, van 4.4), drop the base to y = 0, rotate 180 degrees if the model faces the camera. Set emissiveIntensity to 0.22 on every loaded material (generated models ship a full-strength emissive map that makes cars self-glow), metalness at most 0.55, roughness at least 0.38. Tint police to 0.5 and vans to 0.6 with matte settings so white bodywork never blooms. Until a model loads, use the box-built fallback car. Add slim emissive taillight bars, small additive glow sprites for lights, a pink additive underglow under the player, and two additive cone flames behind the exhausts that only show while boosting.

HANDLING
Forward: hold W for throttle, accelerate at (16 minus 0.1 times speed) m/s squared toward a 72 m/s (260 km/h) top speed, S brakes at 26, coasting decays at 5 with a floor of 8 m/s so the car never stalls mid-run. SPACE boost: a meter of 2.6 seconds that recharges over 9 seconds, plus 0.18 per near miss, only ignites above 5 percent, pushes to 100 m/s (360 km/h) at 34 m/s squared. Lateral: A and D set a target lateral velocity of (9 plus 0.16 times speed) m/s, damped at rate 7, position clamped to plus or minus 10.8 m with a spark burst and speed scrub when you scrape the curb. Visual yaw of minus 0.022 times lateral velocity, roll of 0.01 times it, slight pitch on boost and brake.

TRAFFIC
Pool of 56 cars (22 percent taxis, 14 percent vans, the rest sedans in white, silver, black, navy, maroon, green). Target count 30 at the start rising to 50 by distance travelled. Guarantee a spawn attempt every 14 m travelled plus random extras, spawning 260 to 330 m ahead in a random free lane, never more than 5 cars within a 14 m band so one lane always stays open, 16 m minimum gap per lane. Speeds 12 to 28 m/s. Cars change lanes every 3 to 9 seconds if the neighbouring lane is clear. Cull 30 m behind the player.

COLLISIONS AND NEAR MISSES
Axis-aligned box test against the player. Rear-ending drops the player to max(traffic speed times 0.9, speed minus 0.7 times the closing speed); a side swipe scrubs 15 percent. A crash cancels boost, costs a quarter of the meter, kicks the player sideways, spins the other car, spawns 40 orange sparks, shakes the camera, resets the combo and gives 0.9 s of invulnerability. A near miss counts when a car passes within 1.3 m of the player's side above 25 m/s without touching: combo plus one, 100 points times combo, boost plus 0.18, a whoosh and a rising ding, a floating "NEAR MISS x3" label. Combo resets after 3 seconds.

POLICE
Three cruisers. Each owns a lane offset (minus 3.4, 0, plus 3.4 m from the player) and a staggered base gap (6, 9.2, 12.4 m), so they never overlap. Desired gap = base divided by the square root of an aggression value (1 plus distance over 2500, capped at 3.5) plus 0.5 times how far the player is above 62 m/s, minus a surge, plus 14 m while boosting, never closer than 4.8 m. Every 4 to 10 seconds a cruiser surges. From heat level 3 (heat is one star per 1500 m) a cruiser alongside within 5.4 m performs a PIT shove: sideways kick of 7 m/s, sparks, a 7 second cooldown. Bust meter: after a 4 second grace at the start, it fills at 0.38 per second when the nearest cruiser is within 5.2 m and the player is below 18 m/s, at 0.2 per second when within 5.2 m below 30 m/s, slowly when within 7.5 m and slow, and drains otherwise. Full meter ends the run. If no cruiser is within 55 m for 6 seconds, award 2500 points and show LOST THEM. Light bars alternate red and blue at 14 Hz with two point lights on the nearest cruiser, and a siren whose volume rises with proximity and pans to its side.

CAMERA
Position (0.75 times player x, 3.6 plus a little with speed, 8.2 plus 1.6 times speed fraction), damped at rates 6, 6 and 4, looking at (0.9 times player x plus a lead from lateral velocity, 0.4, minus 16). Field of view 62 plus 26 times speed fraction squared plus 8 while boosting. Shake from crashes decays at 2.2 per second, with a small constant tremor at top speed. A 2D canvas overlay draws radial speed lines above 45 m/s.

EXTRAS
Rain as 500 line segments that fall and lean backward with speed. 48 pedestrians with capsule bodies, spherical heads, swinging cylinder legs and cone umbrellas walking both sidewalks in both directions. Sparks as pooled additive point bursts with gravity and floor bounce. WebAudio with no audio files: sawtooth plus square engine through a lowpass that opens with speed, a two-oscillator siren wail, filtered-noise whoosh for near misses, a sine drop plus noise burst for crashes, a rising sawtooth for boost. Audio starts on the first click.

SCREENS
Title screen over the hero image: kicker MIDNIGHT TOKYO, huge gradient title NEON PURSUIT, one line of copy, four key chips, a pink START ENGINE pill. HUD: distance in km, points and combo, heat stars top left; speed in km/h with a boost bar top right; floating combo text; a POLICE CLOSING IN bar that appears only when the meter is above 2 percent; a control hint at the bottom. Game over: PULLED OVER, BUSTED, distance, score, best (kept in localStorage), RUN AGAIN.

TRAPS TO AVOID
Load the Japanese web font (Noto Sans JP) before drawing sign textures or the kanji render as boxes. GLTFLoader from the Three.js examples imports a BufferGeometryUtils file from a sibling utils folder; vendor both. Keep bloom threshold at or above 1.0 and push only real light sources above 1.0, otherwise white cars and windows bloom into blobs. Halve the bloom resolution for performance. Cap the pixel ratio at 1.5. When the road looks like it is standing still, the texture offsets are not being scrolled; when it runs backwards, the sign is wrong. Do not add a physics engine: lanes are numbers and collisions are boxes, that is why it runs at 60 fps in a tab.

ASSETS (I generate these in Higgsfield, you wire them in)
Expect these files and load each one only if it exists: models/player.glb, models/police.glb, models/taxi.glb, models/sedan.glb, models/van.glb, tex/facade0.jpg to tex/facade3.jpg (portrait facade photos, tile 9 m wide by 16 m tall), tex/storefront.jpg (a wide strip for the ground floors, one tile per 12 m), tex/asphalt.jpg (convert to grey on load with a canvas grayscale filter, tile 24 m long), tex/sidewalk.jpg, skyline.jpg (crop to the top 62 percent, horizon about 89 percent down), cover.jpg for the title screen. When I say "assets are in", wire them in using the CARS rules above. Here are the exact image prompts I will run, so you know what each file looks like:

models/player.glb, from an image-to-3D of: Product photo of a candy-red 1990s Japanese sports coupe with a low rear wing and smooth rounded body, glossy paint, dark tinted windows, 3/4 front-left view, the entire car fully visible with generous margin, centered, on a flat seamless neutral light-gray studio background, soft even lighting, no cast shadows on the background, no reflections on the floor, no text, no logos.

models/police.glb, from: Product photo of a Japanese police patrol sedan, white upper body with black lower body panels, red light bar on the roof, Toyota Crown style four-door, 3/4 front-left view, the entire car fully visible with generous margin, centered, flat seamless neutral light-gray studio background, soft even lighting, no cast shadows, no text.

models/taxi.glb, from: Product photo of a Tokyo taxi, black Toyota Crown Comfort four-door sedan with a small yellow roof lamp and chrome trim, 3/4 front-left view, the entire car fully visible with generous margin, centered, flat seamless neutral light-gray studio background, soft even lighting, no cast shadows, no text.

models/sedan.glb, from: Product photo of a silver modern Japanese compact four-door sedan, clean simple body, 3/4 front-left view, the entire car fully visible with generous margin, centered, flat seamless neutral light-gray studio background, soft even lighting, no cast shadows, no text.

models/van.glb, from: Product photo of a white boxy Japanese kei delivery van with a tall body and small wheels, 3/4 front-left view, the entire van fully visible with generous margin, centered, flat seamless neutral light-gray studio background, soft even lighting, no cast shadows, no text.

tex/facade0.jpg (9:16): Seamless tileable texture, perfectly straight-on orthographic view of a modern Tokyo office tower facade at night, a regular grid of glass and dark concrete, floors of mixed lit and dark windows with cool blue-white and warm interior light, edge-to-edge with no borders, no ground floor, no sky, no perspective, flat elevation, photoreal.

tex/facade1.jpg (9:16): Seamless tileable texture, perfectly straight-on orthographic view of a Tokyo residential apartment building facade at night, rows of concrete balconies with metal railings, air-conditioner units, warm lit windows with curtains, a few dark windows, edge-to-edge with no borders, no ground floor, no sky, no perspective, flat elevation, photoreal.

tex/facade2.jpg (9:16): Seamless tileable texture, perfectly straight-on orthographic view of a narrow Tokyo commercial building facade at night in Kabukicho style, stacked colorful illuminated signboards for bars, karaoke and restaurants with Japanese text, vertical neon signs, small windows between signs, edge-to-edge with no borders, no ground floor, no sky, no perspective, flat elevation, photoreal.

tex/facade3.jpg (9:16): Seamless tileable texture, perfectly straight-on orthographic view of an older weathered Tokyo building facade at night, beige tiled walls, small windows with lit paper screens and frosted glass, exposed pipes and cables, rust stains, a few air-conditioner units, edge-to-edge with no borders, no ground floor, no sky, no perspective, flat elevation, photoreal.

tex/storefront.jpg (21:9): Seamless wide tileable strip, perfectly straight-on view of a row of Tokyo ground-floor storefronts at night in the rain: an izakaya with red paper lanterns and a noren curtain, a brightly glowing convenience store, a ramen shop with steam, a lit vending machine, a pachinko entrance with flashing lights, a shuttered shop, all under a continuous line of awnings, wet pavement along the bottom edge, edge-to-edge with no borders, no sky, no perspective, flat elevation, photoreal.

tex/asphalt.jpg (1:1): Seamless tileable texture, top-down view of wet dark asphalt at night, fine grain, a few shallow puddles, subtle cracks, no lane markings, no objects, edge-to-edge, photoreal.

tex/sidewalk.jpg (1:1): Seamless tileable texture, top-down view of Japanese sidewalk paving, gray square concrete pavers with a yellow tactile guide strip running along one edge, slightly wet at night, edge-to-edge, no objects, photoreal.

skyline.jpg (21:9): Ultra-wide panoramic photograph of the Tokyo skyline at night seen from far away across a dark city, horizontal horizon exactly at the vertical center of the frame. Dense skyscrapers with thousands of lit windows, Tokyo Tower glowing orange-red on the right third, faint neon magenta and cyan light haze rising from the streets, low rain clouds lit purple from below, wet humid atmosphere, fog density 30 percent. Sky above the horizon: deep indigo fading to near black at the top. Everything below the horizon line is a flat dark ground plane with only distant light pinpricks, no foreground objects, no road, no people, no text. Photoreal, cinematic, moody.

cover.jpg (16:9): Cinematic video-game key art, rear three-quarter view of a glossy candy-red sports coupe with a low rear wing racing through a rain-soaked Shibuya street at night at 250 km/h. The camera sits low behind the car at bumper height, the car in the lower-left third of frame, motion blur streaking the neon signs into long lines. Wet asphalt mirrors magenta, cyan and orange neon from towering Japanese signboards on both sides of the street. Red taillights glowing hot, orange sparks scattering from the rear diffuser, spray kicking off the tyres. Two police cars far behind in the fog with red and blue light bars flaring. Traffic taillights ahead as soft red bokeh. Rain streaks lit by the neon. Photoreal AAA racing-game render, high contrast, deep blacks, saturated neon, film grain 10 percent, no text, no logos, no watermark.
What Astra does with this. It builds the treadmill first, then the car, then the traffic and police as separate systems, then the post-processing, and hands you back the asset list at the end. Read its plan before the code lands. If it proposes a physics engine, tell it no.

step three

Make the assets in Higgsfield ๐Ÿš—

The prompts are already in the box above, next to the filename each one becomes. Run the five car images in Higgsfield, then put each one through the image-to-3D tool and save the result under the matching name in the models folder. Run the texture, skyline and cover prompts as images and save them under their names. Then tell Astra "assets are in".

Image to 3D settings in Higgsfield. Texture on, PBR on, rigging off, target polycount 20,000, symmetry on. Each model comes out about 9 MB and facing the camera, which is why the prompt tells Astra to rotate them 180 degrees and turn the baked-in self-illumination down. Skip that and every car glows like a lantern.
โš ๏ธ The asphalt goes grey on load, on purpose. The generated one has faint pink and blue puddle reflections baked in, and on a repeating tile your eye spots the pattern instantly. The prompt tells Astra to grayscale it. The colour comes back through the neon streaks, which move with the buildings and never repeat.

step four

The notes that made it feel good ๐Ÿ”ง

These are the notes I gave, in order, after playing each build. Give Astra the same ones if you see the same things.

Normal speed should feel like a boost
The first build topped out at 187 km/h and felt parked. 260 normal, 360 on boost, with the field of view widening with the square of speed, is where it started feeling fast.
Cops on the bumper, not in your face
Base gap of six metres, each cruiser in its own lane offset, camera lifted to 3.6 m so they sit along the bottom edge of the screen. The bust meter only climbs when you are slow with one right behind you.
Never let the road run empty
A random spawn chance leaves gaps. A guaranteed spawn attempt every 14 m of travel, with one lane always kept open, keeps it dense and fair.
Glow is a budget, not a slider
Bloom threshold above 1.0, then decide what earns a multiplier: signs 2.1, lamps 1.7, taillights 1.6. Everything else stays below 1.0 or the whole frame turns to soup.
Moody first, neon second
Exposure 1.0, low ambient, cool shadow tint and a vignette give the night. Then push the signs, storefronts and reflections up on top. Dimming the signs to get "night" was the wrong lever.
Watch the model materials
Generated 3D cars come with self-illumination at full strength. Nothing in the lighting will fix that. Set it near zero on load.

The honest bit โœ…

Astra writes the code, Higgsfield makes the art
Two tools, not one button. The Higgsfield game builder is a separate product on its own model; this recipe uses Higgsfield for images and 3D and lets Astra write the game so you own every file.
It is arcade, not simulation
The world moves past a parked car, lanes are numbers, collisions are boxes. That is exactly why it runs at 60 fps in a browser tab with no engine.
Five models is 46 MB
The first load takes a few seconds on a normal connection. If you want it lighter, generate the models at 10,000 polygons or compress the textures inside the GLBs.
Budget roughly 400 credits
Twelve images plus five image-to-3D conversions plus the hero and skyline is the whole asset bill in Higgsfield. Generate the car images first and convert only the ones you like.

The links ๐Ÿ”—

๐ŸŽจ Higgsfield (cars, textures, skyline, hero art): higgsfield.ai

๐ŸŽฎ Play it: cindyzhu.com.au/play/neon-pursuit

๐Ÿง  GPT-6 Astra, the full breakdown: my Astra guide

Follow @cindiezhu for more AI you can actually use ๐ŸŒฑ