This is the core library for Colonizers, responsible for:
- core game logic
- data serialization formats
Colonizers is an event-driven implementation of the popular board game "Catan" (formerly "The Settlers of Catan") by Klaus Teuber.
The controller is responsible for determining if a player request is a valid. Upon determining if a move is valid, the controller will emit a series of game events. For instance, when a player requests to end their turn the following events are emitted: end turn, start next turn, roll dice and distribute resources.
The coordinator is responsible for mutating the game state based on events emitted by the controller.
These are the objects that hold the game's state, amongst some other functions. These objects include Game, Player, Board, HexTile, HexEdge, HexTile and some other objects. The controller will inspect the game objects when determining if a move is valid, and the coordinator will mutate these objects.
The serializer is responsible for serializing and deserializing between game objects and the game serialization format.
The scenario builder takes a scenario definition and some options, and outputs an object in the game data format ready to start a game.
There is a data format for game state, with a JSON schema. The data format can represent a game at any point during it's lifecycle; ideal for game saves or transmitting state between server and client. The Game Serializer transforms between this data format and the game objects.
Currently, the data format and schema are still a work in progress.