colonizers-core
v0.0.7
Published
Core library used by Colonizers
Downloads
8
Readme
colonizers-core
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.
Components
Game Controller
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.
Game Coordinator
The coordinator is responsible for mutating the game state based on events emitted by the controller.
Game Objects
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.
These objects include: Game, Player, Board, HexTile, HexEdge and HexCorner.
Game Serializer
The serializer is responsible for serializing and deserializing between game objects and the game serialization format.
ScenarioBuilder
The scenario builder takes a scenario definition and some options, and outputs an object in the game data format ready to start a game.
Serialization
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.