Monopoly is often accused of being a bad board game, with its detractors claiming that it isn't fun, takes too long to play, or is poorly designed. Fans of the game often counter by pointing out that most people who play Monopoly do not play by the official rules, instead cobbling together a game out of arcane house rules that ruin the balance of the game.
This project is a simple Monopoly implementation written in Kotlin that has the goal of determining which set of rules is objectively best. When complete, it will simulate hundreds of games of Monopoly with a configurable rule set and produce reports that compare the observed results of minor rule tweaks.
To run funopoly, you'll need Java 12 SE or higher. To develop, you'll need Open JDK 12 or higher.
funopoly is a gradle-based project. After cloning the repository, you can build the code like this:
$ ./gradlew build
Once the build succeeds, you can run the test harness like this:
$ ./gradlew run
To change the ruleset, you can tweak the values in application-monopoly.yaml.