code: def __init__(self, config):
      super().__init__()
      self.num_agents = config["num_agents"]
      self.base_episode_len = config.get("base_episode_len", 103)
      # Actions are always:
      # (episodeID, envID) as floats.
      self.action_space = gym.spaces.Box(
          -float("inf"), float("inf"), shape=(2,)
      )
      # Observation dims:
      # 0=agent ID.
      # 1=episode ID (0.0 for obs after reset).
      # 2=env ID (0.0 for obs after reset).
      # 3=ts (of the agent).
      self.observation_space = gym.spaces.Box(
          float("-inf"), float("inf"), (4,)
      )
      self.timesteps = [0] * self.num_agents
      self.terminateds = set()
      self.truncateds = set()
      self._skip_env_checking = True
  
file_path: ray/rllib/examples/env/debug_counter_env.py
imports: import gymnasium
  import numpy
  from ray.rllib.env.multi_agent_env import MultiAgentEnv
label_desc: Use image node_id 1 to create a new MultiAgentDebugCounterEnv object from inherited base classes: MultiAgentEnv with example: obj = MultiAgentDebugCounterEnv(config)