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


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time



AppVeyor Travis (.org) chat mattermost

MOZAIC is the Massive Online Zeus Artificial Intelligence Competition platform. It aims to provide a flexible platform to host your very own AI competition. Just plug your game, and off you go!

Eventually MOZAIC should be very modular, so that you can provide a custom-tailored experience for your competitors, without having to worry about the heavy lifting.

BottleBats 2.018

BottleBats 2.018 is the second edition of the Zeus WPI AI competition. The simple concept remains the same, but this time it is build on top of the MOZAIC platform for reliable cross-platform en networked (Soon TM) play.

Concept & Game

Write a bot and compete with your friends. Accept game-states trough stdin and write your actions through stdout, everything is handled by us.

See the intro-slides for more info.

Client & Downloads


We provide easy-to-setup packages clients for all platforms, check out the releases section for downloads.

For Mac we suggest using the .dmg, for windows the .exe.

For linux we provide an AppImage, which after downloading, you need to make executable (chmod u+x <file>). Note: the AppImage does not need to be installed, and you can simply run the file.

Most of the data will be save to user-data directories which are:

  • %APPDATA%\BottleBats on Windows
  • $XDG_CONFIG_HOME/BottleBats or ~/.config/BottleBats on Linux
  • ~/Library/Application Support/BottleBats on macOS

Try not to mess these up, or things will break.

Important resources:



Before continuing, make sure you have the following applications installed:

  1. Install rust and cargo (take look here if you're using an older software repository such as Ubuntu apt).

    • Rust >= 1.18.0
    • Cargo >= 0.16.0
  2. Install Node v8 and Yarn.

Note: This project makes use of Yarn workspaces.

e.g. on Fedora:

curl --silent --location | sudo tee /etc/yum.repos.d/yarn.repo
sudo yum install cargo rust nodejs yarn

Using Make

  1. If this is not your first install, run make clean.
  2. Run make
  3. Go to the planetwars/client directory and run yarn install followed by yarn run dev.
  4. An electron client should be at your disposal!

Manual Setup


  1. Try to run the botrunner with cargo run in the gameserver directory. It should compile, but fail to play a match.
  2. Run the botrunner again (still in the gameserver directory) with: cargo run stub_config.json
  3. It should have generated a log-file log.json.
  4. If it did, great, it works! Now run cargo build --release.
  5. Check setup below for the client.


Note: Do the setup for the gameserver first

  1. Go to the client directory.
  2. Build the client with yarn build
  3. Go the ../planetwars/client directory
  4. Install dependencies with yarn install.
  5. Go the .\bin dir and symlink the gameserver with:
    • Linux - ln -s ../../../gameserver/target/release/mozaic_bot_driver
    • Windows - mklink bot_driver.exe ..\..\..\gameserver\target\release\mozaic_bot_driver.exe
  6. Run yarn run dev
  7. An electron client should be at your disposal!

Publishing and packaging

You can package easily with the package-<os> in package.json. Publishing is done automatically by Travis and AppVeyor on commit. See the electron-builder publish docs for more info about our flow (it's the GitHub one). Note: when packaging an make sure the mozaic_bot_driver binary is an actual binary and not a symlink, or things will break.


Have any questions, comments, want to contribute or are even remotely interested in this project, please get in touch! You can reach us by e-mail, Facebook, or any other way you prefer listed here.