GAME DEVELOPMENTSHIPPED

Stop Lickin' POP

A Breakout-style arcade game in Elm — inter-scene message routing reverse-engineered from framework source, a tadpole-and-egg enemy system, and randomized layouts for replayability.

ROLECore mechanics programmer
TEAMTeam project, SJTU
TIMELINEMay 2025 — Aug 2025
CATEGORYGame Development

5+

CORE SYSTEMS OWNED

Reverse-engineered

FRAMEWORK DOCS

Overview

Stop Lickin' POP is a Breakout-style arcade game built in Elm with the Messenger framework — same toolchain as GhostBust Hotline, completely different genre. Where GhostBust was about atmosphere and AI, this one was about making a 50-year-old genre feel fresh through layout randomization and an enemy system layered on top of the classic brick-breaking loop.

What I built

  • Core mechanics: paddle movement, the tadpole & egg enemy system (enemies that hatch and swim down through the playfield), falling power-ups with flip animations, and game-over / re-initialization logic.
  • Inter-scene and inter-layer message routing. The Messenger framework's official documentation was sparse, so I reverse-engineered the framework's source code to understand how messages propagate between scenes and layers — then implemented the game's scene transitions on top of what I found.
  • Randomized brick layouts and "Did You Know?" facts driven by RNG, designed after analysing what makes arcade games replayable: no two runs present the same wall.

What I learned

Reading framework source code is a skill. When the docs end, the type signatures and the framework's own examples become your documentation — and in a language as explicit as Elm, the source genuinely tells you everything, if you're willing to trace it.

APPENDIX A // MEDIA

IMAGE SLOT — AWAITING UPLOAD

FIG.01 — GAMEPLAY: PADDLE, BRICKS, AND THE TADPOLE & EGG SYSTEM

IMAGE SLOT — AWAITING UPLOAD

FIG.02 — RANDOMIZED BRICK LAYOUT GENERATION