class_docstr: A Starcraft II environment.
  
  The implementation details of the action and observation specs are in
  lib/features.py
code: def _step(self, step_mul=None):
      step_mul = step_mul or self._step_mul
      if step_mul <= 0:
          raise ValueError(
              "step_mul should be positive, got {}".format(step_mul)
          )
  
      target_game_loop = self._episode_steps + step_mul
      if not self._realtime:
          # Send any delayed actions that were scheduled up to the target game loop.
          current_game_loop = self._send_delayed_actions(
              up_to_game_loop=target_game_loop,
              current_game_loop=self._episode_steps,
          )
  
          self._step_to(
              game_loop=target_game_loop,
              current_game_loop=current_game_loop,
          )
  
      return self._observe(target_game_loop=target_game_loop)
  
imports: import collections
  import copy
  import random
  import time
  from absl import logging
  from pysc2 import maps
  from pysc2 import run_configs
  from pysc2.env import enums
  from pysc2.env import environment
  from pysc2.lib import actions
  from pysc2.lib import features
  from pysc2.lib import metrics
  from pysc2.lib import portspicker
  from pysc2.lib import renderer_human
  from pysc2.lib import run_parallel
  from pysc2.lib import stopwatch
  from s2clientprotocol import sc2api_pb2
label_desc: Use image node_id 15 for calling the SC2Env obj's underlying member method code with example usage: obj._step(step_mul) and returns: self