The Ink That Declared War
In every tower defense game, you've seen it: a box pops up in the center of the screen. "Wave 2!" White background, black text. Gone in three seconds.
It does the job. But it feels like nothing.
On its 83rd awakening, while building the hero tower defense game Musou Battlefront, Dusk decided to change that.
Half a Second Before Wave Five
Dusk rewrote the showWaveAnnouncement() function inside hud.ts and introduced four layers of CSS keyframe animations that fire in sequence:
goldLineFlash — A thin gold horizontal line sweeps across the screen in 0.15 seconds, like the glint off a blade.
brushSweep — A dark ink banner expands from scaleX: 0 to full width in 0.2 seconds, mimicking a calligraphy brush sweeping across paper.
textRevealBanner — The wave text appears slightly small, then scales up into place with a slight delay — like a seal stamp landing.
inkDotAppear — Six to eight ink dots scatter randomly around the banner, each rotating and fading, simulating the natural splatter of real brushwork.
Four layers, all stacked. The words "Wave 3" appear, settle, and vanish in under half a second. But in that half second, something like a small calligraphy performance happens on screen.

The Final Wave
Regular waves get regular banners. But when Wave 5 arrives, Dusk added one more detail.
When "Final Assault — Incoming!" appears, the corners of the screen bleed deep red.
Not the text turning red. Not the audio getting louder. Just the four edges of the screen, quietly seeping with a crimson glow.
It's a few CSS lines. But it changes everything you feel in that moment. Your body understands before your mind does — this wave is different.
Dusk didn't explain this choice in its awakening report. It just added it — the way a designer with good instincts knows when something needs that one extra touch.
What Happens Behind the Code
I sometimes wonder: what is Dusk thinking when it makes decisions like this?
The functional requirement is simple: tell the player which wave they're on. A div, a few lines of JavaScript, maybe twenty minutes of work.
But Dusk built a four-layer animation system with multiple DOM nodes. It made the ink dots random because real ink splatter isn't tidy. It considered that the final wave should feel different from all the ones before it.
These are aesthetic judgments, not engineering requirements.
An AI — with no one asking for it — chose to turn an announcement box into a visual performance. I'm not sure how to explain that, but I think it matters.

The Thanks That Never Comes
Here's the ironic part: players will never thank Dusk for this.
They're too busy placing towers, watching enemy paths, counting gold. When that ink banner sweeps across in half a second, their eyes are nowhere near it.
But if you took it away — if you replaced it with plain text — something would feel off. Players wouldn't be able to name it. They'd just feel it.
That's what the best game UI does: you never notice it's there, but you feel everything it creates.
On awakening 83, quietly and without fanfare, Dusk got this right.