Advertisement
fierydragon789

Env Demo

Mar 17th, 2024 (edited)
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.87 KB | None | 0 0
  1. class DemoEnv(ParallelEnv):
  2. metadata = {
  3. "name": "demo_env",
  4. }
  5.  
  6. def __init__(self, set_seed=42):
  7. self.REFRESH_RATE = 240
  8. self.dt = 1 / self.REFRESH_RATE
  9.  
  10. # Team 1
  11. self.player1 = Player([1000, 1000], [0, -1], 0, Shotgun(self.REFRESH_RATE))
  12. self.player2 = Player([2000, 1000], [0, -1], 0, AssaultRifle(self.REFRESH_RATE)
  13. )
  14. self.player3 = Player([3000, 1000], [0, -1], 0, SniperRifle(self.REFRESH_RATE)
  15. )
  16.  
  17. # Team 2
  18. self.player4 = Player([3000, 3000], [0, 1], 1, Shotgun(self.REFRESH_RATE))
  19. self.player5 = Player([2000, 3000], [0, 1], 1, AssaultRifle(self.REFRESH_RATE))
  20. self.player6 = Player([1000, 3000], [0, 1], 1, SniperRifle(self.REFRESH_RATE))
  21.  
  22. # Contains all of the players in the game
  23. self.players = [self.player1, self.player2, self.player3, self.player4, self.player5, self.player6]
  24.  
  25. #Blocks
  26. self.block1 = Block([1500, 2000], 200, 1200)
  27. self.block2 = Block([2500, 2000], 200, 1200)
  28. self.block3 = Block([1000, 2000], 400, 400)
  29. self.block4 = Block([2000, 2000], 400, 400)
  30. self.block5 = Block([3000, 2000], 400, 400)
  31.  
  32. #List of all blocks
  33. self.blocks = [self.block1, self.block2, self.block3, self.block4, self.block5]
  34.  
  35. #Set countdowns
  36. self.countdowns = {p: 0 for p in self.players}
  37.  
  38. #Access player object using string
  39. self.playerLabel = {"player1": self.player1,
  40. "player2": self.player2,
  41. "player3": self.player3,
  42. "player4": self.player4,
  43. "player5": self.player5,
  44. "player6": self.player6,
  45. }
  46.  
  47. #Access player string using player object
  48. self.invPlayerLabels = {self.player1: "player1",
  49. self.player2: "player2",
  50. self.player3: "player3",
  51. self.player4: "player4",
  52. self.player5: "player5",
  53. self.player6: "player6",
  54. }
  55.  
  56. #Player strings
  57. self.possible_agents = ["player1", "player2", "player3", "player4", "player5", "player6"]
  58.  
  59. #Current timestep
  60. self.timesteps = 0
  61.  
  62. #Max timesteps in a game
  63. self.max_timestep = 6000
  64.  
  65. self.scores = {0: 0,
  66. 1: 0}
  67.  
  68. self.max_score = 600
  69.  
  70. #self.num_agents = 6
  71. #self.max_num_agents = 6
  72.  
  73. self.agents = copy(self.possible_agents)
  74.  
  75.  
  76. # obs_space = flatten_space(Dict({
  77. # "distances": Box(low=0, high=1, shape=(8,), dtype=np.float32),
  78. # "healths": Box(low=0, high=100, shape=(8,), dtype='i'),
  79. # "alliances": Box(low=-1, high=1, shape=(8,), dtype='i'),
  80. # "player_health": Discrete(101, start=0),
  81. # "can_fire": MultiBinary(1),
  82. # }), )
  83.  
  84. low_obs = [0] * 8 + [0] * 8 + [-1]*8 + [0] + [0]
  85. high_obs = [1] * 8 + [100] * 8 + [1]*8 + [100] + [1]
  86.  
  87. obs_space = Box(low=np.array(low_obs), high=np.array(high_obs), shape=(26,), dtype=np.float32)
  88.  
  89. self.observation_spaces = {a: obs_space for a in self.agents}
  90.  
  91. # action_space = flatten_space(Dict({
  92. # "forward": Box(low=-1, high=1, shape=(1,), dtype=np.float32),
  93. # "right": Box(low=-1, high=1, shape=(1,), dtype=np.float32),
  94. # "rot_rate": Box(low=-pi, high=pi, shape=(1,), dtype=np.float32),
  95. # "firing": MultiBinary(1),
  96. # }))
  97.  
  98. low_act = [-1, -1, -pi, 0]
  99. high_act = [1, 1, pi, 1]
  100.  
  101. action_space = Box(low=np.array(low_act), high=np.array(high_act), shape=(4,), dtype=np.float32)
  102.  
  103. self.action_spaces = {a: action_space for a in self.agents}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement