17 August 2016

At most of the GDQs that I've been to, I've spent most of my time in the board gaming room. Unlike a lot of the other people there, I don't have a regular board games group (unless you count the weekly Hanabi games that I stream), so most of the games I play there are new for me. One of them that I've enjoyed a huge amount is called Splendor.

I'm always disappointed in short summaries of board games, since they never really capture the essence of the gameplay. You can read the rules or one of the many summaries online. While the rules are only superficially similar, I think it occupies a similar space of board gaming as Dominion, since it's best as a two player game, can be played reasonably quickly, and has quite a bit of strategic depth despite the simple rules.

So since SGDQ, I've been quietly working on a Splendor server. In addition to being a way to play more games of Splendor, it's serving as an exercise for myself in getting a software project actually running in the wild, and especially useful because it contains a UI component. It's still rough around the edges, but it should already be usable for playing complete games (currently you can't pay for a card by using a gold token in lieu of a colored token, but wanting to do that is quite rare).

For online board games, two clients have stood out as excellent interfaces to their corresponding games: Isotropic's Dominion implementation (now closed) and Keldon's Hanabi implementation (I should also mention the currently-in-alpha Prismata which is an online-only game whose interface reminds me a lot of Isotropic). These clients are no-nonsense interfaces to the game, and are serving as a sort of inspiration/goal for my own.

A secondary goal is to get further insight into the strategic aspect of the game. One of the most interesting (and useful) things that came out of lots of games being played and logged on Isotropic was the stats collected by councilroom.com. In particular, the openings rankings really showcased the difference in power being different cards, although it only covers the early game. While the games played on my server are not being logged yet, it will be one of the next things that I add (the other being a log of game actions).

As with most of my personal software projects these days, the server is written in Haskell. The client is written in Purescript, which is pretty close to Haskell-for-your-browser. I'm always looking for ways to avoid writing Javascript directly, and Purescript is the best solution I've found so far. In the next couple weeks, I'll be writing about my experience with writing the server, along with some technical details and decisions. I also plan to put the source on GitHub but it's not available quite yet. Stay tuned!

You can find the server is at splendor.extratricky.com.