Introducing Rokkaku: A simple, two-player strategy game


Introduction

Rokkaku (六角) is a software implementation of the pencil-and-paper game Sim. Unfortunately, the name Sim is slightly too close for comfort to The Sims, so I've opted to rename it rokkaku (Japanese for hexagon) to avoid confusion.

Rokkaku is an example of a Ramsey game. These are games (usually involving two players) that make use of various results from Ramsey theory relating to graphs (if you're mathematically inclined, see here).

Although rokkaku is traditionally played on a 6-vertex "board", the game can actually be played on any board with at least six vertices. Six is simply the smallest number of vertices required on a board in order to avoid the game ending in a draw.

There is also an interesting variant involving a 17-vertex board and three colours instead of the usual two, but that's for another time.

Why I am building this

I learnt about the existence of this game around a year ago when I was taking a university course on graph theory. I was surprised to find that there weren't many software implementations of it, so I've decided to make one.

I think that, using coding magic, this game could be made significantly more interactive than its paper-and-pencil counterpart, which in turn makes it more enjoyable and feel more fun and dynamic.

Due to the rokkaku's simplistic ruleset, I think that it's the ideal game to make graph theory somewhat more appealing to a wider audience. In particular, it would be an excellent educational resource for students of all ages.

Currently implemented features

A few days ago, I built a quick prototype of rokkaku in Godot. It was a bit rough, but you could at least play the game against yourself. Then, I was overcome with a gnawing, masochistic urge to write some C++ code, so I decided to start afresh and rebuild the prototype using raylib. 

Here's a short showcase of some of the features that I've implemented thus far.

Boards of any size supported

A 10-vertex board.

A 12-vertex board.

Moveable vertices

Any vertex can be easily moved by hovering over it and holding RMB.

Freezable vertices 

Any vertex can be "frozen". This prevents it from being moved until it is unfrozen.

Conclusion

Clearly, this project is still in its infancy, but I'm very excited to make it better, so I wanted to share it with others.

I hope that you've enjoying reading this post and find this project somewhat interesting. I plan on writing more regular devlogs moving forwards (perhaps once a week), but given that my master's dissertation is due in a few months, this is liable to change.

Of course, if you have any comments, suggestions, or criticism, I'm all ears. Peace and love.

Leave a comment

Log in with itch.io to leave a comment.