Skip to content

Scenarios

import comrad

for s in comrad.list_scenarios():
    print(f"{s.name:32} {s.num_agents} agents  score: {s.score}")

Every scenario is a first-person, partially observed, multi-agent task. Each agent sees only its own 128×72 RGB view and acts through a small tuple of discrete action heads. Scenarios are grouped by the cooperative capability they stress.

Scenario Players Score (true_objective) Capability tested
Stag Hunt Arena 2–4 Stags killed Convention formation, equilibrium selection
Rhythm Sync 2 Stages completed Temporal coordination
Foraging Commons 2–4 Survival time Commons dilemma, public goods
Co-op Puzzle 2 Completed puzzle pairs Turn-taking, partner affordances
Platform Chain 2 Joint checkpoint progress Long-horizon joint movement
Armory Siege 2–8 Shaped episodic return Combat coordination, resource routing
Co-op Health Gathering 2–8 Survival time Resource sharing
Lava Pit 2 Joint bridges cleared Reciprocal assistance
Smart Enemies 2–4 Enemies killed Spacing, target prioritisation
Dumb Enemies 2–4 Enemies killed Cooperative pursuit
Ammo Carrier 2 Survival time Role-specialised logistics
Stealth Labyrinth 2 Enemies destroyed / total Extreme role asymmetry
Lava Maze 2 Maze levels cleared Emergent communication

comrad.list_scenarios() also returns a few easier or alternative variants (platform_chain_easy, lava_maze_simple, rhythm_sync_dense, stag_hunt_arena_continuous*). They are useful for debugging and curricula, but they are not part of the main results table.

Map generation

The maps were generated procedurally. The generators live in the separate DoomGen/ folder of the repository and are not part of the comrad-bench package. The package ships ready-made .wad and .cfg files under comrad/scenarios/.