VDAIC 2017 @ CIG Submission

Submission guidelines

The competition is over but the page is left here for the future reference.

Submission form

Submissions should be made with the final submission form.

Submission forms for eliminations and finals will be published separately.

Submissions deadlines:

  • 31.05.2017: Warm-up deathmatch submission deadline
  • 30.06.2017: Elimination round submission deadline
  • 07.08.2017: Final round submission deadline

Overview

What you should do

  1. Write an agent like this one (hopefully better) that connects to the host's game.
  2. Write (or modify) a Dockerfile that will be used to build a Docker image. The image should handle all dependencies and by default run your agent. See example Dockerfiles in the mentioned repository.
  3. Write a short description of your agent in about.pdf.
  4. Zip it (not tar or tar.gz, zip).
  5. Fill the submission form.

What we will do

  1. Download your agent.
  2. Build your image.
  3. Run the container with other agents.
  4. Check if it works as expected. In case it doesn't we will contact you.

Submission format

Since installation of different dependencies can be a painful process we decided to use Docker and delegate the work to competition participants. The submission form will ask you for download link(s) for your submissions for each track. A submission should be a zip titled $TeamName_track1.zip, or/and $TeamName_track2.zip depending on which tracks you want to participate in. When participating in both tracks with only one agent please submit only one archive: $TeamName_track1n2.zip . The archive should contain a single directory named just like the zip.

$TeamName_track1n2 directory itself should contain:

  • Dockerfile - input file for Docker image. Any dependencies and launching of the agent should be handled inside the Dockerfile. We will build the image on uour side and run the container.
  • about.pdf - short description of how your agent works,
  • any other files which you need to include (e.g. the agent code itself)

Docker build should expect additional files in the submission directory and we expect they will be copied and used by the script (please do not suply them with the submission):

  • _vizdoom.cfg - some settings (host ip/name, window visibility, wad name, game mode)
  • cig2017.wad - file with maps (currently containing 5 maps from 2016 competition),
  • doom2.wad (optional) - file with original resources (alternative to default freedoom2.wad).

Sample submission can be found here

doom2.wad vs freedoom2.wad

Original Doom resources (e.g. textures) are contained in doom2.wad file. Since we cannot legally distribute doom2.wad file by default vizdoom uses freedoom2.wad which is included with the package. If you wish to use doom2.wad on your side you must obtain it by yourself. When running the agents we will add doom2.wad to the directory with the Dockerfile so you can copy it inside the Docker e.g.:

COPY doom2.wad /usr/local/lib/python3.5/dist-packages/vizdoom

Host process

The games (or at least the initialization) will be hosted by a separate vizdoom process which won't take part in the game as a player. The host will enforce any constraints and requirements like map number, crouching prohibition or game flags so you don't need to worry about them.

How it will be run

We have prepared two wrapper scripts which will build and run docker images with agents and the host that can be found on the github repository.

To build and launch chosen container run:

DIR=host # or any other directory with Dockerfile

# Builds a docker image named cig2017_${DIR}
./build.sh ${DIR} 

# Runs docker container named cig2017_${DIR}
./run.sh ${DIR}

By default all agents connect to localhost and disable window. To customize this behavior change _vizdoom.cfg file.

Submissions require Docker. All images except for the host require quite recent Nvidia drivers and nvidia-docker to run CUDA.

The repository contains the following images:

LAST UPDATE: Tue Mar 28 17:11:47 CEST 2017

  • host - the image will be used for initialization of the game. All agents are supposed to connect to the host. By default the host creates a deathmatch for 1 player on map01 with no bots lasting for 10 minutes but it's possible to override it with optional parameters.
# Sample usage (game for 8 players lasting 12 minutes on map 1):
./run.sh host -p 8 -t 12 -m 1

usage: Host script for ViZDoom Copmetition at CIG 2017. [-h] [-b BOTS_NUM]
                                                        [-p PLAYERS_NUM]
                                                        [-m MAP]
                                                        [-t TIMELIMIT] [-c]
                                                        [-w]

optional arguments:
  -h, --help            show this help message and exit
  -b BOTS_NUM, --bots BOTS_NUM
                        number of bots to add [0,15] (default: 0)
  -p PLAYERS_NUM, --players PLAYERS_NUM
                        number of players [1,16] (default: 1)
  -m MAP, --map MAP     map number [1,5] (default: 1)
  -t TIMELIMIT, --time TIMELIMIT
                        timelimit in minutes [1,999] (default: 10)
  -c, --console         enable console (default: False)
  -w, --watch           roam the map as a ghost spectator (default: False)
  • random - random agent which connects to the host and doesn't do anything smart. By changing mode to ASYNC_SPECTATOR and enabling window visibility in _vizdoom.cfg you can replace the random agent.
  • no_host - random agent which does NOT connect to the host - it hosts a game for itself and can add bots. This image won't be used by us but may be useful for training on bots without proper multiplayer mode.
  • f1 - winner submission of 2016 edition, track 1 by Yuxin Wuand and Yuandong Tian,
  • intelact - winner submission of 2016 edition, track 2 by Alexey Dosovitskiy and Vladlen Koltun.

The files might change (especially host and vizdoom's version) so please keep track of them.