Simple though it is, Pong Wars is mesmerizing. I couldn’t prevent my brain from rooting for the underdog (“Go, Day!”), wondering how unbalanced the score could get (Night always led and briefly exceeded 800 of the 1024 possible points), assigning narrative to the onscreen actions (“Watch out, he’s got a groove going on the bottom.”), and reflecting on whether it was playing out larger themes of good versus evil (or at least Spy vs. Spy).
Taking Kottke’s comment at face value, I let Pong Wars run while doing other things and came back a while later to discover the two balls locked in a vibratory loop (below left). That seemed odd, so I reloaded the page. The final state was exactly the same, so I closed the page and opened it again, starting a timer to see how long it would go. Indeed, 32 minutes in, it would always get stuck in the same way.
I pinged Koen van Gilst on Mastodon about the need for an initial random seed, but my old friend Keith Dawson popped up a few minutes later with suggested fixes. Since Pong Wars is open source and just a single index.html file on GitHub, I copied it locally, made Keith’s changes, and voila! Day and Night are more evenly matched in Keith’s modified version (above right), and although every run-through so far has eventually ended up in a vibratory loop, it’s no longer predictable when it will happen.
Who will port Pong Wars to the Vision Pro so the balls can bounce around your house? For now, I’d settle for a macOS screen saver.