State of Mzinga, March 2021

by Jon

Mzinga is my collection of open-source software to play the board game Hive, and I last posted about it back in November 2018.

A lot has happened since then, so this feels almost like a re-launch than anything. Essentially, Mzinga development stalled at the end of 2019. I made a variety of internal performance improvements, but the biggest changes were polishing the UI of the Viewer, including adding the ability to save and review games later, in a new review mode.

Nothing happened for Mzinga in 2020, though I did spend some time getting acquainted with .Net Core and Avalonia, an exciting cross-platform UI framework similar to WPF.

I did some smaller projects with this “new” way to write C#, and when Avalonia released their big 0.10.0 update in December 2020, I decided it was time to try porting one of my bigger apps to this new platform.

So in January of this year I ported Mzinga to .NET 5, and rewrote the Viewer in Avalonia instead of WPF. The end result has been more than worth the effort.

I got to keep 99% of my existing code, and with a just couple weekends of work, starting with Mzinga v0.10.0, the entire project is cross-platform, with releases on Windows, MacOS, and Linux.

Here’s the announcement on BoardGameGeek: Mzinga, open-source Hive, now cross-platform (Windows, MacOS, Linux)

Having the code cross-platform really opens up the opportunity for getting other developers working on their own AIs. By having the Viewer available on Mac and Linux, more developers are willing to invest in writing their own UHP engines and Hive AIs, which was the whole point of Mzinga in the first place.

I’m in conversations with several such developers- one even found a bug in Mzinga that’s been there for years! They all appreciate the level of documentation and tools I’ve provided to help give them a place to get started.

To that end, I’ve also taken some stabs at building some more engines myself. I started a UHP Sample Code repo, with simple sample engines to get people started. They only implement the base game (no expansions), have no AI, and are not optimized, but they meet the minimum requirements for an engine, and therefore are yet another starting point for developers. I’ve got versions in both C++ and C#, and I’ll probably also create versions in Python and JavaScript too.

For Mzinga itself, it’s a big, complicated codebase, and I don’t see any “easy wins” for making it faster or the AI stronger.

So on top of everything else, I’ve also started MzingaCpp, which is a brand new engine written completely in C++. Here I’m taking all that I’ve learned and focusing on making the fastest possible engine, with hopefully the strongest AI. Right now it’s got the base game and expansions up and running, and while it doesn’t have any AI yet, its move generator is already 1.5x -2x the speed of Mzinga, which is a great start.

That’s all for now! I’ve you’re interested in playing a game of Hive on your computer, give Mzinga a try. If you’re interested in developing your own Hive AI, drop me a line!

/jon