MorseMan
A side-scrolling action game that teaches Morse code with the Koch method, then drills you on contest-style pileups.
Best on a computer with a keyboard and sound on. No account, no tracking; your progress stays in your browser.

The idea
Every enemy is a radio station sending real Morse code. Its height on the screen is its pitch: stations near the top send a high tone and stations near the ground send a low one. When several are on screen at once you hear a pileup, and you tell the stations apart by pitch, just like copying a crowded band. Type what a station is sending and MorseMan blasts it. If you don’t copy it before it reaches you, it hits you, and the game shows what it was sending.
How it teaches
The stages follow the Koch order, so each one adds a few new characters to the ones you already know:
- New character card. You hear the new character three times, then type it.
- Practice wave that leans on the new character.
- Traffic ladder with every character you know. It climbs from single characters to random groups, real words and two-part QSOs.
- Boss. It sends longer groups from the next lane over. Copy them to do damage.
Eight Robot Masters cover the alphabet (Static Man, Antenna Man, Dipole Man…). Each one gives you a radio-themed weapon when you beat it: Narrow Filter, Squelch Wave, Sideband Slow. The QRM Fortress adds numbers and punctuation. Two bonus stages after the ending run real traffic: common words and ham phrases, then callsigns and contest exchanges in a four-station pileup.
Band rules
The hard part was making a pileup you can actually copy:
- One station transmits at a time by default, with at least a word gap between calls.
- When overlap is allowed, two stations must be at least two lanes apart in pitch, and the second starts at least 0.6 s after the first.
- Stations beam in before they call, so you never miss the start.
- Speed adapts to how busy the band is, so every station gets heard at least twice before it reaches you.
Under the hood
Plain JavaScript, a canvas, and the Web Audio API. Nothing to install. Every stage has its own NES-style parallax background, drawn on the same 4× pixel grid as the sprites using only NES palette colors. Automated playtests drive the real game in a headless browser to check pacing and timing.
From the notebook
Build log
Entry 005
Making a pileup you can actually copy
The rules the band manager follows so that several stations on screen sound like a real band instead of noise.
Entry 003
When the test harness is the bug
Two harness fixes. Hung steps now get force-stopped, and the gap between calls is measured from where the audio really ended.
Entry 002
Letting MorseMan build itself overnight
A 10-hour loop on local models. A builder makes one change, tests and a judge decide whether it stays, and a playtester writes the next to-do list.