← Back to the log
August 5, 2026 · Polish

Fireworks, but make one of them a smiley

Not every entry here is a bug report. Sometimes it's just "the victory screen looks kind of flat, let's fix that" — and this one turned into one of our favorite small details in the whole game.

The fireworks show that plays when you clear a city read as a straight line sweeping across the sky, rather than a proper burst of chaos. Three separate causes, each individually boring, added up to that one visible problem:

Shuffling the slot order, widening the vertical spread, and switching to uneven, randomized gaps between bursts fixed the "straight line" problem completely. But it also meant we now had a clean, general spark() helper that launched sparks toward any destination point — not just an outward ring.

If a spark can land anywhere, it can land as a face

The insight was small but fun: a normal firework burst sends sparks flying outward to random points. If instead you hand each spark a specific destination — say, points traced along the outline of a smiley face — it still launches from one point like a normal burst, flies outward like a normal burst, and simply arrives as a recognizable shape.

So now, one burst per victory show blooms into a smiley: an outline, two eyes, and a smile arc, in a single warm color so it reads as a shape and not confetti. We tuned the flight speed down slightly so it's still legible right as it lands instead of already fading.

That went well enough that we added a second shape shortly after: a five-pointed star, with spark points spaced along each edge (spacing them only at the star's points made it read as a scatter, not a star — the edges matter). Big shows, like the finale after a boss kill, now get one of each shape so you see both; the smaller per-wave show gets one at random, so which shape you get stays a small surprise.

Verified the old-fashioned way for something this visual: rendered both shapes at their target offsets and eyeballed whether a human would recognize them. They do.