Keeping everyone’s screens in sync is normally the hardest part of a multiplayer game. On KeyStrike I simply write data to a table and every connected player sees the update. I haven’t written a line of sync-specific code yet, which honestly feels like cheating. I’m using Convex for the backend, and it has been a pleasant surprise so far. It felt awkward in the htmx prototypes, but with React it just fits.
KeyStrike is a competitive typing game. You see a passage of text, you start typing, and your progress shows up on everyone else’s screen as a little avatar racing across a track. Fastest, most accurate typist wins. I’m building the whole thing from scratch - game engine, matchmaking, scoring - and I’d like a public version in days rather than months. We’ll see.
This is also my excuse to learn React. I need something more demanding than a basic page to find out whether I actually understand it, and keeping several players’ screens up to date should do that.
I already want to add friends, AI opponents with their own personalities, experience points and levels, and daily challenges. Separate leaderboards for desktop and mobile too (phone typing is a different thing). That’s probably enough of a roadmap for a game I’ve just started.
React is starting to click. I can reuse the pieces I’ve already built when I add a game mode, which is encouraging.