Hey, guys! First of all, this post is not (yet) directly about the release of another backgammon app, although that is the ultimate goal.
Storytime
A little backstory... thanks to my cousin Vasillios, I discovered the beauty of playing Tavli about two years ago. Afterwards, a friend and I started playing regularly and kept track of our head-to-head wins and losses (39–47 so far 🙃). We always had heated discussions about who had more dice luck overall (its him for sure!). We started talking about how nice it would be to play on an app that tracks statistics and offers a ranked mode.
Unfortunately, we were unable to find a proper Tavli app. Fortunately, we both work in IT. We started drafting some initial ideas, brought two more friends on board, and began working on it. We are now a team of a backend engineer, a talented frontend developer, a UI/UX specialist, and a project PM/PO. Sounds like the perfect setup for this project, right? After 1.5 years of development, we started our closed beta with friends and family. We have hooked many peers of ours along the way (we should get some commission from our local board game merchant). That said, we can now move on to the interesting part!
Vision
We want to build a partially open-source ecosystem for backgammon-like games, such as Tavli (Portes, Plakoto, Fevga), Tavla, and, of course, Backgammon. Furthermore, we want to provide a neural network for each of these game variants for bot play, analysis, and learning. Lastly, we want to provide a top-notch native user experience for app and web players.
Game Engine
The game engine provides basic capabilities, such as generating move sequences, applying dice rules and using a dice roller, and applying variant-specific rules and board models. These capabilities allow you to play a game in any supported variant. Built from scratch, the engine is as abstract and extensible as possible to allow for the implementation of new game variants (e.g., Nardes). The engine provides the foundation for the game service and neural network training framework.
Neural Net Training Framework
Initially, we searched for existing open-source implementations that we could use for bot play and analytics. As you probably know, there are a lot of them for backgammon! We also built an integration for the WildBG service, which we are still using for initial benchmarks. However, we could not find anything for the subgames of Fevga and Plakoto. We would love to build an integration for the Palmedes bot. Anyway kudos for your paper on it!
So, we decided to build one from scratch and named it Mars. This was and still is a challenging task because none of us had any prior knowledge of neural network training or deep backgammon game theory (we are all average players at best). We now have an abstracted neural network model layer that allows us to implement a specific network for a game variant based on some native board encoding and additional handcrafted features. The heart of the framework is a simple console application that generates training data for self-play or head-to-head games, as well as neural net training and data shuffling utilities, and diagnostic tools for evaluating training results. The resulting neural network is then exposed as a service for move and cube evaluation. Currently, our Mars bot outperforms the WildBG service in a statistically significant manner. Training for Plakoto and Fevga is still missing.
Feedback
We want to gather some feedback from you guys. Does that sound interesting? Would you like to join our next beta phase? Would you like to join our Discord channel and be involved in the development process? Do you think our project has a unique selling point?
If there is interest, we could make more dev diaries like this one. They could cover the future roadmap, planned features, monetization ideas, beta access, community involvement in future development, and a deeper introduction to the neural net training process. Let us know in the comments!
Links
https://github.com/gammonx/gammonx-server
https://github.com/gammonx/gammonx-training
https://github.com/carsten-wenderdel/wildbg
https://nikpapa.com/Palamedes/
TL;DR We developed an open-source project that includes different backgammon variants, such as Backgammon, Portes, Plakoto, Fevga, and Tavla, as well as a framework for training neural networks from scratch. What do you think? Let us know!