← /journal

May 27, 2026 · 4 min

When CPU bots need to wait for narration

Async Dungeon Jerks felt broken until bots stopped rolling while the tile was still talking.

Editorial illustration of CPU bots paused waiting for narration waveform to finish.
Editorial illustration

Dungeon Jerks has pre-generated narration for most tiles — MP3s committed in static/audio/, thousands of them. When a bot lands, the line plays. Humans wait because they’re listening.

The bots didn’t.

The bug that felt like a feature

CPU turns fired immediately. Dice rolled. State advanced. Narration started late or got cut off. In pass-and-play on one phone, you barely notice — someone’s holding the device.

In async multiplayer with three-second polling, it felt like playing against a slot machine wearing a wizard hat.

The fix

We extracted bot decisions into nextBotAction and slowed the cadence: wait for narration to finish, add a small settle pad, then roll. Vitest covers the decision table so we don’t re-break Merlin’s ability logic while tuning pacing.

Same game rules. Completely different emotional read.

Bots with opinions

v1.1 gave CPUs roll-table choices plus special abilities — not random legal moves. They still don’t trash-talk. That’s a human job.

What we didn’t do

We didn’t add websockets. Netlify Blobs + polling is enough for friends who text a link. Fancy realtime would have delayed shipping the thing people can actually open tonight.


The lesson isn’t “make bots smarter.” It’s “respect the beat.”