I’ve been working on a terminal-based uno game, on and off, for a couple of months now. While the core logic of uno is simple, there’s a lot of things implementing a multiplayer command line game can teach a programmer.

How do you sync between game events and UI is one pillar of your codebase. How do you transition between the different states of the admin and the player clients? What happens when a player disconnects? All these things you think and implement yourself. As you implement, you find patterns and perhaps you’re rediscovering patterns, but that doesn’t matter.

There’s no redis here and no database here and no kafka here. Just plain code and a bit of config.