Wanted

One mechanic, built twice

The chase
is the game

Your wanted level only cools off while nobody can see you — and being spotted resets the timer rather than pausing it. That single rule turns a map with no scripted content into a pursuit game.

Rob it. Wear the stars. Vanish.

Rob a target, carry the loot to a fence, don't get caught on the way.
WASD move · E rob & sell · Shift sprint · Esc pause

Best haul: $0 3,200 × 2,200 · 9 targets · 2 fences · 2 hideouts · 8 jobs Runs entirely in this tab

How to play

Four rules. The rest is nerve.

Controls

WASD / arrowsMove
E (hold)Rob a target · sell at a fence
Mouse / SpaceAim and fire
Shift (hold)Sprint — about 3 seconds, refills slowly
FFullscreen
EscPause
RRestart

On a phone: drag the stick to move, ROB to rob and sell, RUN to sprint, FIRE to shoot at the nearest threat.

The four rules

  • Tills pay cash, vaults pay goods. ATMs and registers hold money — it goes straight into your account. The jewelers and the bank pay in merchandise and marked bills, which are worth nothing until a fence launders them.
  • Arrest costs you the whole bag, plus a fifth of what you already banked. Cash you already banked is safe; goods in your hands are not.
  • Stars only fall while nobody can see you. Being spotted resets the timer to zero rather than pausing it, so a block between you and a cop is worth more than distance.
  • Hideouts are safe, both ways. Cops hold a cordon beyond your weapon's reach and cannot shoot or arrest you inside — and you cannot shoot anything still inside that cordon either. Heat falls 4.5× faster in there, but you cannot sell, so cooling off and cashing out pull you to opposite ends of the map.
  • One cop seeing you tells the others. Past four stars it goes out to every unit on the map — and a gunshot always does, seen or not.

Why this loop works with nothing else in it

Most crime games spend their budget on content: vehicles, a city, a shop. This one spends it on two timers — how long until you cool off, and how long you have to stay still to turn loot into money.

1

Stars are a visible reputation

A number every other player can act on. It turns a solo action — robbing a till in an empty corner — into a social one, without a single line of authored content.

2

Roles emerge from that number

Nobody picks a class. A robber at zero stars is indistinguishable from a bystander. You become prey by doing something, and stop being prey by getting away with it.

3

Shooting is an exit, not a plan

You have a pistol, and cops shoot back at three times your rate. Standing your ground in the open gets you arrested in about a second; backing away while firing works, but costs two stars per unit and most of your health. Gunfire is also loud — every unit on the map hears it and gets your position, whether or not anyone could see you.

4

Two and a half D, not dots

Buildings are extruded prisms: each roof is pushed away from the center of the screen in proportion to its height and the exposed sides are filled in, which fakes a camera sitting above and behind you. Roads are derived from the gaps between blocks rather than drawn separately, so editing the map cannot leave lane markings floating over a wall.

Cash or goods

An ATM holds cash, so robbing one pays you immediately — there is nothing to carry and nowhere to walk. The jewelers and the bank pay four to sixteen times more, but only in merchandise and marked bills, and those are worth nothing until a fence takes them. The bank sits a long, exposed walk from anywhere you can sell.

5

Sprint is a resource

Three seconds of burst, and slower to refill than to spend. At six stars a cop moves 198px/s against your 200 — without a sprint the top of the heat curve would be a formality, and with it escaping becomes something you have to spend well.

The handover is the trap

Cashing out is a stand-still timer, so the fence is exactly where a chasing cop catches you. The nearest fence is rarely the right one.

6

Jobs teach, then escalate

Eight contracts in order: crack a till, move the goods, lose the heat, take the bank. Each one introduces exactly one idea, and the last few just raise the stakes on a loop you already understand.

The rule that carries all of it: being spotted resets the cool-off timer to zero rather than pausing it. Pausing lets a player inch out of sight and bank their progress. Resetting means a chase you nearly lost costs you everything, which is what makes breaking line of sight feel like an escape instead of an errand.

The numbers

Identical in the browser build above and the Roblox build below — both read the same table. These are the only values worth arguing about.

TargetTimePayoutHeat quiet / seenCooldown
ATM6s$1505 / 1440s
Liquor store12s$50011 / 2690s
Jewelers alarm18s$1,20030 / 44140s
Bank alarm30s$2,50052 / 70180s
Fence (cash out)2.5s

Stars are earned, not handed out

There is no per-crime star value. Crimes add heat, and the star bands roughly double as they climb — 10, 28, 60, 115, 210, 380. Robbing every target on the map while someone watches you do it only reaches four stars. The top two have to be earned with minutes of unbroken contact with the police.

Being seen is the whole cost

A quiet ATM job costs 5 heat — not a single star. The same job with a cop watching costs 14. The jewelers and the bank carry silent alarms that count as a witness however cleanly you played, which is exactly why they pay the most.

Arrest — the whole bag, plus 20%

Getting caught costs everything you are carrying and a fifth of what you already banked. The carried loss is the punishment that matters; the banked one just stings.

Sight radius — 90 studs

How hard it is to break contact. Lower makes escapes trivial and stars meaningless. Higher makes stars feel permanent and stops anyone robbing the bank twice.

The Roblox build

The same loop as a multiplayer server game, where the cops are other people rather than three lines of steering code. Source is in roblox/ in this repo.

What it ships with

  • Six-star wanted system with sight-gated decay
  • Three crime tiers, server-timed, per-target cooldowns
  • Player cops: crime alerts, wall-hack highlight on wanted players, 9-stud arrests
  • Arrest takes 40% and jails; dying costs 25% and keeps your stars
  • Cash persists to a DataStore, with a no-save guard after a failed load
  • The whole arena is generated from code at server start

What it deliberately skips

  • NPC police — pathfinding a dozen NPCs eats the entire schedule, and being chased by a person is better anyway
  • Vehicles — Roblox car handling that feels good is a multi-week problem on its own
  • A modeled city — months of art; generated blocks give a real chase arena today
  • Combat and a shop — cash accumulates, but there is nothing to spend it on yet

The security rule that matters

Roblox clients are hostile. The client never sends an amount — only “I triggered this prompt”. Payouts are read server-side from config, keyed by the target’s own attribute. Cash and stars live in Player Attributes, which replicate down and cannot be written back, so there are exactly two remotes in the game and neither accepts a number.

-- the whole trust boundary, in one line
local balance = DataService.AddCash(player, crime.Payout)
--                                          ^ from Config, never from the client

Tested outside Studio

A mock Roblox API plus a virtual clock lets the real server bundle boot under a plain Lua VM, so a 30-second bank robbery is testable in under a millisecond. 55 assertions cover payouts, cooldowns, leash cancels, decay timing, arrest maths, jail, and malformed remote payloads.

npm install fengari
node tools/run_tests.js
# 55 passed, 0 failed
Honest limit: those tests prove the game logic. The mock has no rendering, physics, or replication, and the Roblox client HUD is untested. Nothing has been opened in Roblox Studio yet — that verification step is still outstanding.

What this actually cost

Both builds, honestly scoped. The expensive parts are the ones nobody sees.

PieceSolo effortWhere the time goes
Move, camera, one map1–2 weeksFastest part. Feels like progress, isn’t.
Multiplayer sync, 8 players4–8 weeksFree on Roblox. Months in the browser.
Server-authoritative hits4–8 weeksLag compensation. Get it wrong and every player feels cheated.
NPC police at scale3–6 weeksSkipped on purpose in both builds.
Art volumemonthsThe real killer. Code is tractable; a city is not.
Anti-cheat, persistence, mod tools2–3 monthsInvisible when right, fatal when wrong.