osb.sh

ProjectsN° 01Browser game

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.

MorseMan standing on a crystal cavern floor while Morse-sending stations fly in at different heights, with an input box at the bottom.

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:

  1. New character card. You hear the new character three times, then type it.
  2. Practice wave that leans on the new character.
  3. Traffic ladder with every character you know. It climbs from single characters to random groups, real words and two-part QSOs.
  4. 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

  1. 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.

  2. 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.

  3. 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.