Space War#
 
This environment is part of the Atari environments. Please read that page first for general information.
| Import | 
 | 
|---|---|
| Actions | Discrete | 
| Parallel API | Yes | 
| Manual Control | No | 
| Agents | 
 | 
| Agents | 2 | 
| Action Shape | (1,) | 
| Action Values | [0,17] | 
| Observation Shape | (250, 160, 3) | 
| Observation Values | (0,255) | 
Space war is an competitive game where prediction and positioning are key.
The players move around the map. When your opponent is hit by your bullet, you score a point. The game is similar to combat, but with a more advanced physics system where acceleration and momentum need to be taken into account.
Whenever you score a point, you are rewarded +1 and your opponent is penalized -1.
Environment parameters#
Environment parameters are common to all Atari environments and are described in the base Atari documentation .
Action Space#
In any given turn, an agent can choose from one of 18 actions.
| Action | Behavior | 
|---|---|
| 0 | No operation | 
| 1 | Fire | 
| 2 | Move up | 
| 3 | Move right | 
| 4 | Move left | 
| 5 | Move down | 
| 6 | Move upright | 
| 7 | Move upleft | 
| 8 | Move downright | 
| 9 | Move downleft | 
| 10 | Fire up | 
| 11 | Fire right | 
| 12 | Fire left | 
| 13 | Fire down | 
| 14 | Fire upright | 
| 15 | Fire upleft | 
| 16 | Fire downright | 
| 17 | Fire downleft | 
Version History#
- v2: Minimal Action Space (1.18.0) 
- v1: Breaking changes to entire API (1.4.0) 
- v0: Initial versions release (1.0.0) 
Usage#
AEC#
from pettingzoo.atari import space_war_v2
env = space_war_v2.env(render_mode="human")
env.reset(seed=42)
for agent in env.agent_iter():
    observation, reward, termination, truncation, info = env.last()
    if termination or truncation:
        action = None
    else:
        # this is where you would insert your policy
        action = env.action_space(agent).sample()
    env.step(action)
env.close()
Parallel#
from pettingzoo.atari import space_war_v2
env = space_war_v2.parallel_env(render_mode="human")
observations, infos = env.reset()
while env.agents:
    # this is where you would insert your policy
    actions = {agent: env.action_space(agent).sample() for agent in env.agents}
    observations, rewards, terminations, truncations, infos = env.step(actions)
env.close()
