-
Notifications
You must be signed in to change notification settings - Fork 6
Overview
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:
The lobby and matchmaker cooperate to define matches that should be executed.
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).
The matchmakers pulls bots from the lobby, and tries to make matches.
The 'match execution' component executes match configs.
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.
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.
The actual game implementation. Refer to its wiki page for more information.