doom_env / models.py
Crashbandicoote2's picture
Upload folder using huggingface_hub
952f360 verified
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.
"""
Data models for the Doom Environment.
The doom_env environment wraps ViZDoom for reinforcement learning research.
ViZDoom is a Doom-based AI research platform for visual RL.
"""
from dataclasses import dataclass
from typing import List, Optional
from openenv_core.env_server.types import Action, Observation
@dataclass(kw_only=True)
class DoomAction(Action):
"""
Action for the Doom environment.
Actions are specified as a list of button states. Each element corresponds to
a button (e.g., MOVE_LEFT, MOVE_RIGHT, ATTACK, etc.) with value 0 (not pressed)
or 1 (pressed).
Attributes:
buttons: List of button states (0 or 1). The length and meaning depend on
the available buttons in the scenario.
action_id: Optional pre-defined action ID if using discrete action space.
If provided, this will be used instead of buttons.
Example:
# Use discrete action (move left)
DoomAction(action_id=0)
# Use button combination (move forward and shoot)
DoomAction(buttons=[1, 0, 0, 1])
"""
buttons: Optional[List[int]] = None
action_id: Optional[int] = None
@dataclass(kw_only=True)
class DoomObservation(Observation):
"""
Observation from the Doom environment.
Contains the screen buffer, game variables, and episode information.
Attributes:
screen_buffer: Flattened screen pixels as a list of integers.
Shape is [height, width, channels] before flattening.
screen_shape: Original shape of the screen [height, width, channels].
game_variables: Current values of game variables (health, ammo, etc.).
available_actions: List of available action IDs if using discrete actions.
episode_finished: Whether the episode has ended.
"""
screen_buffer: List[int]
screen_shape: List[int]
game_variables: List[float] = None
available_actions: List[int] = None
episode_finished: bool = False