Overview
NinjaCop is a mobile idle game with a single, deliberate art direction: the whole thing is a 1980s police terminal. You command Precinct Zero, a black-ops unit of augmented ninja-cops, and take Kestrel City back from five crime syndicates one district at a time. Deploy a squad, win the auto-combat, convert a fallen syndicate base into an income-generating precinct, and let the passive economy fund your push toward the next target. Paid up front. No ads, no IAP, no dark patterns.
Why this one
Idle games are a vice of mine. I fall into one every so often and lose a week. Cyberpunk is the other half of it: I played a lot of Shadowrun as a kid and never really got over the setting.
There was a practical reason too, and I was partly wrong about it. Idle games look cheap to build. The interface is mostly numbers and text, the art requirements are light, and the loop is simple enough to describe in one line. That made it look like the fastest possible path to finding out whether I could be a quasi game developer, which is what I actually wanted to know. So I wrote a design bible first (vision, economy, content, the five bosses, the visual language) and built against it.
The core loop
One readable loop, learnable in about ninety seconds and deep enough to carry a full campaign:
deploy → auto-combat → earn → convert a base → passive income → unlock the next district.
Combat resolves live in the CRT log with health bars and three timed tactical abilities: Stim, Overclock, and Focus. Trash fights are reliable, but every district boss demands intervention. Try the playable build embedded at the bottom of this page.
Five districts, five bosses
Each district is a hand-authored syndicate ruled by a named Oyabun, and each boss teaches a distinct combat mechanic that escalates toward a multi-phase finale: summoned reinforcements, an armored tank with drone adds, a fire-rate lockout, and a final CEO who cycles all of them. The story tightens as you climb. Every syndicate, it turns out, reports to the same parent company.
An idle game with decisions
Underneath the loop sits a small economy that keeps choices on the table even while numbers tick on their own:
- Officer Pool. Fire-and-forget Surveillance and Patrol timers that gather Intel (the only thing that unlocks the next district) and suppress Heat.
- Heat. Aggressive play raises it, and high Heat triggers syndicate counterattacks that can hit your squad, online and offline.
- Upgrades. Spend the game's currency on buildings that raise your ceiling (Barracks, Infirmary, Surveillance Net, a Vault that caps income), plus permanent implants that survive into a second playthrough.
- An honest economy. Light upkeep keeps net income just below gross, and offline earns at half rate, capped. Generous, never a trap.
Built to ship
The whole game is a single React Native + Expo codebase that targets iOS, Android, and the web build you can play here. State lives in one Zustand store with a versioned, migrating save. The interesting part is the combat: it is a deterministic, seeded simulation, which made it fully unit-testable and let me tune balance by measurement rather than by feel. Each boss is guarded by tests that assert passive play loses and full tactical play wins. The build ships with 144 passing tests.
The art direction does double duty. A CRT-terminal aesthetic is period-accurate, distinctive on a storefront, and the cheapest possible art lift: typography, a neon-on-near-black palette (IBM Plex Mono and Press Start 2P), and scanline and glow effects with an accessibility toggle. The only illustrated art is pixel portraits of the named characters, generated by an image model and nudged to match the palette.
The part I underestimated
Testing this was much harder than building it.
An idle game is long on purpose, and the feel of it is the entire product. It has to give you a steady sense of progress without letting you tear through the content in an evening. That balance is not something you can reason your way to at a whiteboard. You have to play it, and playing it honestly means waiting, because waiting is the mechanic.
So most of the work went into being able to compress time: running the economy forward without actually sitting there, checking whether hour six still felt like it was going somewhere. Getting that instrumentation right took longer than the combat did, and it is the reason the simulation is seeded and deterministic. I could not tune this by feel at the speed it was designed to be felt.
The other thing I learned is how much content one of these actually needs. The loop is cheap. The material you feed it is not. Five districts, five bosses that each teach a different mechanic, and enough upgrades to keep decisions live is a lot of authored content for something that looked simple from the outside, and rationing it out at the right pace is most of the design job.
I am putting this one on the shelf. I got what I came for, which was finding out whether I could take a game from concept to a tested, playable build. I would like to come back to the genre with what I know now, though it may be a different game rather than this one.
My role
Concept, systems and UX design, art direction, and development, from the design bible through to a tested, playable build and this embedded web demo.
