Quick Start Guide
A guide to setting up, developing, and submitting an agent.

Step 1: Clone the Repo

The Bomberland repo contains starter kits with examples on how to build your agent.
To clone:
1
gh repo clone CoderOneHQ/bomberland
Copied!
Or download from:
GitHub - CoderOneHQ/bomberland: Starter kits for Bomberland: a 1v1 multi-agent sandbox based on Bomberman
GitHub
You'll also need the base-compose.yml and docker-compose.yml files in the root folder.

Step 2: Install Docker

Docker Desktop for Mac and Windows | Docker
Docker

Step 3: Start the game server

Make sure Docker is running. From the root directory of your starter kit (where base-compose.yml and docker-compose.yml are located), run in your terminal:
1
docker-compose up --abort-on-container-exit --force-recreate
Copied!
It may take a few minutes to run the first time.
This will build the game server, and connect your starter agent. Since Bomberland is a 2-player environment, the game server will wait for a second agent to connect before starting.

Step 4: Join the game as a human player

In either a Firefox or Chrome browser, open the game client from:
https://gocoder.one/game
You should see the following setup menu:
Select 'Agent' as your role, leave 'Agent Id' as agentA and click 'Connect'.
Use the following keys to play as the Wizard:
  • Click a unit to control it
  • / / / - arrows to move the unit
  • SPACE - place a bomb
  • Click a bomb to detonate it
If you got here without any errors - congratulations you're all set up! 🥳
Below are additional tips for developing your agent.

Step 5: Choose agents to connect

Specify agent-a and agent-b in docker-compose.yml to choose which agents to play against each other:
1
agent-b:
2
extends:
3
file: base-compose.yml
4
# update next line with a service in base-compose.yml to change agent
5
service: typescript-agent-dev
6
environment:
7
- GAME_CONNECTION_STRING=ws://game-server:3000/?role=agent&agentId=agentB&name=python3-agent
8
- FWD_MODEL_CONNECTION_STRING=ws://fwd-server-b:6969/?role=admin
9
depends_on:
10
- game-server
11
- fwd-server-b
12
networks:
13
- coderone-tournament
Copied!
Add a --build flag in your docker-compose up command whenever you make a change to the docker-compose.yml or base-compose.yml files. i.e.: docker-compose up --abort-on-container-exit --force-recreate --build

Step 6: Change environment variables

Environment settings such as tick rate, map size, etc can be changed by adding them under environment in docker-compose.yml:
1
game-server:
2
extends:
3
file: base-compose.yml
4
service: game-server
5
ports:
6
- 3000:3000
7
environment:
8
- ADMIN_ROLE_ENABLED=0
9
- AGENT_ID_MAPPING=agentA,agentB
10
- INITIAL_AMMUNITION=3
11
- INITIAL_HP=3
12
- PRNG_SEED=1234
13
- SHUTDOWN_ON_GAME_END_ENABLED=1
14
- TELEMETRY_ENABLED=1
15
- TICK_RATE_HZ=10
16
- TRAINING_MODE_ENABLED=0
17
- WORLD_SEED=1234
18
networks:
19
- coderone-tournament
Copied!
See ⚙️ Environment Flags for a full list of available settings.
Remember to add the --build flag!
docker-compose up --abort-on-container-exit --force-recreate --build

Step 7: Game state

On each game tick, your agent will receive a JSON packet containing environment state information, e.g.:
1
{
2
"agents": {
3
"a": {
4
"agent_id": "a",
5
"unit_ids": [
6
"c",
7
"e",
8
"g"
9
]
10
},
11
"b": {
12
"agent_id": "b",
13
"unit_ids": [
14
"d",
15
"f",
16
"h"
17
]
18
}
19
},
20
"unit_state": {
21
...
22
},
Copied!
See 🎮 Game State Definitions for a list of all the information available to your agent.

Step 8: Submitting an agent

To submit your agent to the tournament server, you will need to push your Docker image to a public registry and upload your link to the Submissions page.
Last modified 2mo ago