Notoriously Problematic Merge
Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »


0.0.7 • Public • Published


npm Build Status Dependency Status devDependency Status Code Climate

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.


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.


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.




npm i colonizers-core

DownloadsWeekly Downloads






Last publish


  • avatar