← All projects
Live

CPR Hero

A rhythm game where the fun and the correct technique are the same thing.

BuiltAug 2026
RoleSole developer
StatusLive, parked
LevelsCampaign + bonus
This is a game, not training. It is not a substitute for certified CPR instruction and completing it does not qualify anyone to perform CPR. If you want the real thing, take a course with the American Heart Association or the Red Cross.

What it does

You perform chest compressions by clicking in time with a beat. Tempo is scored against the rate CPR is actually taught at, and how long you hold the click maps to compression depth — hold too long and you're going too deep, release too early and you're too shallow.

Around that core loop sits the rest of the emergency sequence: check the scene, call for help, open the airway, check for breathing, decide whether compressions are even the right response. The levels are deliberately silly — a zombie in a haunted house, an alien aboard a saucer, a dragon in a castle — because the technique underneath is identical either way and people remember things they enjoyed.

Design log

These are judgment calls, not bug fixes.

01

The realistic version taught the wrong lesson

Problem

The scene safety check started as a thorough multi-step sequence — accurate to how it's taught, and a chore to click through every single time.

Why that mattered

The game's own premise is that survival odds fall roughly seven to ten percent for every minute without compressions. A version that makes you spend twenty seconds tidying up the scene before you're allowed to start is quietly teaching the opposite of its own message. The mechanic contradicted the content.

Change

Cut it to one or two clicks and a couple of seconds. You still check, because checking is real and skipping it would be worse — but the game now communicates urgency with its pacing instead of just saying it in the text.

02

No mandatory tutorial

Decision

The first build opened with a required training-dummy drill before you could reach a real level. I removed it and put players directly into a themed level.

Reasoning

A tutorial is where people quit. The compression mechanic is one click held for a moment — it teaches itself in about four seconds of play. Front-loading instruction to protect against confusion that wasn't going to happen costs you the players who never got past it.

03

Two builds from one codebase

Decision

The public version is generic. A separate build with organisation-specific branding exists for sharing internally, gated behind a shared password.

Reasoning

I work in this industry, and putting an employer's trademarks and product names on a personal project I published without going through marketing is not a call I get to make on my own. Splitting the build meant I could share the fun version with coworkers without the public one carrying anything that isn't mine.

How

Rather than paying for a hosting tier with password protection, I wrote an edge function to handle the shared-password gate. Coworkers visit the URL and type a password.

Known gaps

Status: parked. It's good enough for what it is and I stopped rather than polishing indefinitely. The gaps above are listed because they're real, not because I'm about to fix them.