Jump to content

GSoC/2024/StatusReports/JoaoGouveia

From KDE Community Wiki
Revision as of 20:51, 19 August 2024 by Joaotgouveia (talk | contribs) (Begin filling out the status report for my GSoC project)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Implementing a computerized opponent for the Mancala variant Bohnenspiel

Games within the Mancala family are played all over the world. However, as of now, KDE doesn’t offer any Mancala games for those looking for a challenging opponent. This project aimed to begin changing that.

Work report

Throughout this summer, I've developed a C++ API, implementing three opponents for the games of Bohnenspiel and Oware.

The current library is highly extensible. After implementing all the base classes and Bohnenspiel, adding Oware to the library was fairly fast and straightforward. This focus on extensibility has been a priority since the beginning of the project. Given that the Mancala family of games comprises numerous variants, designing the API with this in mind has proven valuable.

The three provided opponents use a random selection algorithm, Minimax, and MTD-f. The Minimax and MTD-f opponents were implemented with optimizations like alpha-beta pruning and transposition tables, making them both very capable, consistently outperforming the random opponent. However, I faced some challenges implementing the MTD-f opponent. While it outperforms the random opponent, it performs worse than the Minimax opponent despite conducting deeper searches. This leads me to believe there may be an issue with my implementation, but I haven't been able to identify it even after several reviews.

I believe this project lays the groundwork for Mancala games within KDE. I intend to continue contributing, particularly by developing a GUI that utilizes the computerized opponents I’ve developed.

Links to Blogs and other writing

My blog posts tagged with GSoC