I built a Networked Catan Clone in Sunder

For the past eight or so months I have been building a networked implementation of Klaus Teuber's Settlers of Catan in my own programming language, Sunder. After much effort, the project is finally getting to the point where it is worth showing off! For those who want to browse the source code, my game is called Natac, and it can be found on GitHub and SourceHut.

This was my first non-trival project in Sunder and is probably the largest game I have ever worked on. I am not a game developer, and I have never seriously studied game development or engine development, so of course this initial alpha release is a mess of spaghetti code. But this project has been as much about the journey as it has been about the destination, and I had a blast implementing my favorite tabletop game in my own language!

For this project I used raylib to handle user input, graphics, and sound via my raylib-sunder bindings. I used nbnet to handle client-server networking via my nbnet-sunder bindings, which I created specifically for this project. My network serialization and deserialization code is handled using my own data interchange format library, bubby. And finally, my immediate mode user interface code is handled by my personal fork of microui, also created specifically for this project.

Currently only Linux and macOS are supported, but there are plans to bring Natac to the browser using Sunder's WebAssembly platform support. There is still a ton of work to do on the game, and no shortage of areas that could use polish, but I am extremely happy with the project's initial alpha release. 🥳