Skip to content
This repository has been archived by the owner on Nov 15, 2020. It is now read-only.

Overview

ajuvercr edited this page Nov 21, 2017 · 3 revisions

MOZAIC provides shared software architecture for hosting AI competitions. That is, it does not aim to simplifiy the game implementation itself, but rather the components that live around it, such as data storage, connection management, ranking, matchmaking, et cetera.

This scheme shows how a match will traverse the MOZAIC architecture:

architecture scheme

Match creation

The lobby and matchmaker cooperate to define matches that should be executed.

Lobby

Clients connect to the lobby, and signal their status (for example available to play, actively looking for a game, or just idle).

Clients could also directly challenge each other, for example when you want to test your bot against your friend's.

In the current state, we do not have networked clients yet. The bot lobby is implemented as a static "database" (i.e. a json file).

Matchmaker

The matchmakers pulls bots from the lobby, and tries to make matches.

Match execution

The 'match execution' component executes match configs.

Filer

The filer is responsible for all data storage, notably handling database access and log files. The filer provides a 'data access context' for a game. That is, a game always executes in the context of a filer.

The filer will create all required log handles and pass them to the game setup. After the game finishes, the filer will store the match information and outcome, along with the log files created.

Game setup

Given a match config and the required logging handles, the game setup creates the actual game structure. It prompts the clients to start their bots, possibly with parameters that have been decided on. When all bots connected to the 'match lobby', the game will be started.

In the current state, instead of asking the clients to start their bots, the game server starts the bots itself.

Game

The actual game implementation. Refer to its wiki page for more information.

Clone this wiki locally