Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class DemoEnv(ParallelEnv):
- metadata = {
- "name": "demo_env",
- }
- def __init__(self, set_seed=42):
- self.REFRESH_RATE = 240
- self.dt = 1 / self.REFRESH_RATE
- # Team 1
- self.player1 = Player([1000, 1000], [0, -1], 0, Shotgun(self.REFRESH_RATE))
- self.player2 = Player([2000, 1000], [0, -1], 0, AssaultRifle(self.REFRESH_RATE)
- )
- self.player3 = Player([3000, 1000], [0, -1], 0, SniperRifle(self.REFRESH_RATE)
- )
- # Team 2
- self.player4 = Player([3000, 3000], [0, 1], 1, Shotgun(self.REFRESH_RATE))
- self.player5 = Player([2000, 3000], [0, 1], 1, AssaultRifle(self.REFRESH_RATE))
- self.player6 = Player([1000, 3000], [0, 1], 1, SniperRifle(self.REFRESH_RATE))
- # Contains all of the players in the game
- self.players = [self.player1, self.player2, self.player3, self.player4, self.player5, self.player6]
- #Blocks
- self.block1 = Block([1500, 2000], 200, 1200)
- self.block2 = Block([2500, 2000], 200, 1200)
- self.block3 = Block([1000, 2000], 400, 400)
- self.block4 = Block([2000, 2000], 400, 400)
- self.block5 = Block([3000, 2000], 400, 400)
- #List of all blocks
- self.blocks = [self.block1, self.block2, self.block3, self.block4, self.block5]
- #Set countdowns
- self.countdowns = {p: 0 for p in self.players}
- #Access player object using string
- self.playerLabel = {"player1": self.player1,
- "player2": self.player2,
- "player3": self.player3,
- "player4": self.player4,
- "player5": self.player5,
- "player6": self.player6,
- }
- #Access player string using player object
- self.invPlayerLabels = {self.player1: "player1",
- self.player2: "player2",
- self.player3: "player3",
- self.player4: "player4",
- self.player5: "player5",
- self.player6: "player6",
- }
- #Player strings
- self.possible_agents = ["player1", "player2", "player3", "player4", "player5", "player6"]
- #Current timestep
- self.timesteps = 0
- #Max timesteps in a game
- self.max_timestep = 6000
- self.scores = {0: 0,
- 1: 0}
- self.max_score = 600
- #self.num_agents = 6
- #self.max_num_agents = 6
- self.agents = copy(self.possible_agents)
- # obs_space = flatten_space(Dict({
- # "distances": Box(low=0, high=1, shape=(8,), dtype=np.float32),
- # "healths": Box(low=0, high=100, shape=(8,), dtype='i'),
- # "alliances": Box(low=-1, high=1, shape=(8,), dtype='i'),
- # "player_health": Discrete(101, start=0),
- # "can_fire": MultiBinary(1),
- # }), )
- low_obs = [0] * 8 + [0] * 8 + [-1]*8 + [0] + [0]
- high_obs = [1] * 8 + [100] * 8 + [1]*8 + [100] + [1]
- obs_space = Box(low=np.array(low_obs), high=np.array(high_obs), shape=(26,), dtype=np.float32)
- self.observation_spaces = {a: obs_space for a in self.agents}
- # action_space = flatten_space(Dict({
- # "forward": Box(low=-1, high=1, shape=(1,), dtype=np.float32),
- # "right": Box(low=-1, high=1, shape=(1,), dtype=np.float32),
- # "rot_rate": Box(low=-pi, high=pi, shape=(1,), dtype=np.float32),
- # "firing": MultiBinary(1),
- # }))
- low_act = [-1, -1, -pi, 0]
- high_act = [1, 1, pi, 1]
- action_space = Box(low=np.array(low_act), high=np.array(high_act), shape=(4,), dtype=np.float32)
- self.action_spaces = {a: action_space for a in self.agents}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement