def make_world(self): world = World() # set any world properties first world.dim_c = 2 num_agents = 7 world.num_agents = num_agents num_adversaries = num_agents - 1 num_balls = 1 # add agents world.agents = [Agent() for i in range(num_agents)] for i, agent in enumerate(world.agents): agent.name = 'agent %d' % i agent.collide = True agent.silent = True agent.adversary = True if i < num_adversaries else False agent.size = 0.08 if i < num_adversaries else 0.08 # add landmarks world.balls = [Landmark() for i in range(num_balls)] for i, ball in enumerate(world.balls): ball.name = 'ball %d' % i ball.collide = False ball.movable = False ball.size = 0.03 # make initial conditions self.reset_world(world) return world
def make_world(self, **kwargs): self.before_make_world(**kwargs) world = World() world.np_random = self.np_random # cache kwargs in case needed in Env wrapper world.config = kwargs # set any world properties first world.collaborative = True # all entity positions are scaled/extended by size world.size = kwargs.get("world_size", 1) world.dim_c = kwargs.get("dim_c", 2) num_agents = kwargs.get("num_agents", 3) # num_good_agents = kwargs.get("num_good_agents", 1) # num_adversaries = kwargs.get("num_adversaries", 1) # num_agents = num_adversaries + num_good_agents num_landmarks = kwargs.get("num_landmarks", 2) num_balls = kwargs.get("num_balls", 1) # add agents world.agents = [SkilledAgent() for i in range(num_agents)] for i, agent in enumerate(world.agents): agent.name = 'agent %d' % i agent.collide = True agent.silent = kwargs.get("agent_silence", True) agent.size = 0.025 # agent.adversary = True if i < num_adversaries else False # agent.type = "adversary" if agent.adversary else "agent" # agent.size = 0.075 if agent.adversary else 0.05 # agent.accel = 3.0 if agent.adversary else 4.0 # agent.max_speed = 1.0 if agent.adversary else 1.3 self.change_entity_attribute(agent, world, **kwargs) # add landmarks world.landmarks = [Landmark() for i in range(num_landmarks)] for i, landmark in enumerate(world.landmarks): landmark.name = 'landmark %d' % i landmark.collide = True landmark.movable = False # landmark.size = 0.075 self.change_entity_attribute(landmark, world, **kwargs) # add balls world.balls = [Landmark() for i in range(num_balls)] for i, landmark in enumerate(world.balls): landmark.name = 'ball %d' % i landmark.collide = True landmark.movable = True landmark.size = 0.2 self.change_entity_attribute(landmark, world, **kwargs) # make initial conditions self.reset_world(world, **kwargs) return world