This post was saved / ported from a previous site migration. You may encounter missing images, dead links, and strange formatting. Sorry about that!

My new project - netjatafl

go tafl mancala programming chess Gaming

I’ve been pretty busy the last month working on netjatafl. Netjatafl will eventually be a networked client for playing various board and/or card games. It was originally created for hnefatafl and other tafl games. However, I have designed it to be extensible; I’m working on adding mancala games, and it looks like my design makes it pretty easy to add a new game. (I’ve added most of the logic for mancala to the client and server in just a couple hours of work). I intend to add shogi, xiangqi, chess, and possibly even go at some point in the future.

The netjatafl server (taflserv) operates on a simple, completely open protocol; it will eventually support authenticated logins and statistics tracking. Anyone could write a netjatafl client for any platform, if they wished. My clients will all be in C++, because this let’s me reuse the ’libboardgame’ library, which contains the game logic used by the server. I will also build in a “capabilities” system at some point, so the client and server can both advertise which games they support.

The whole thing is theoretically usable in its current state; the client is an ncurses-based text UI that is pretty cumbersome, but can be used. As far as I know, it only works in Linux. Anyone who wants to cross-compile it for Windows and send me a patch with everything you had to add, feel free! I will eventually add a proper GUI, probably gtk+-based.

Like the sound of this project? Feel free to check out the code, compile it, and let me know what you think!


Etymology notes: netjatafl is Old Norse for “net-table”; i.e. a networked table you can gather around to play games. ’taflbordh’ is ON for ’tafl board’ (tafl can also refer to tafl games in general), which sounds a little redundant, but it made a nice name for a client. And ’taflserv’ is just ’tafl server’… ‘serv’ was meant to be short for ‘server’, but I later noticed that it’s also a French word meaning ‘it serves". I find this somewhat appropriate.