The game is using the common chess rules. If you want to know more about those click here.
Check out the Documentation of our Game(-Logic) here
The easiest way to start the Game locally, after cloning the repository, would be to start the Persistence and Model Service via their respective Docker Containers (located in the docker-compose.yml) and by then starting the Main Method of the Root Service to gain easy access towards the Text-and Graphical User Interface.
(Alternatively the Root Service can be used through its Docker Container by either setting the Display Variable in the compose file correctly to connect with the GUI or using the REST Interface via its paths)
The Root Service is the core of the Game, containing the User Interfaces as well as the Games Controller.
The Model Service defines the GameField Model and Rules, but is also responsible for maintaining and updating the instance of the current Game.
The Persistence Service is providing the option to persistently save and load a specific Game State (or Game States in the case of MongoDB / Slick).
While running the Application and interacting with the Root Service to play the game, it will communicate with the other two Services via HTTP and REST APIs by exchanging JSON Data.
The Unit-Tests (src/test) can be run locally without further requirements thanks to our Mock Implementations.
The Integration-Tests (src/it) need to be run with a Docker Service available (e.g. Docker Desktop), since we make heavy use of Testcontainers for Scala to provide a Database and needed Micro Services for these Tests.
The Performance Tests can be run individually (after starting up the required Services) by exchanging the needed Test Class in our Gatling Runner