Compare commits

...

2 Commits

Author SHA1 Message Date
d8e7c4c80f Follow gym 0.25 spec 2022-12-13 20:13:53 +01:00
048ba027f3 Fixed clipping of entities on edge 2022-12-13 20:13:39 +01:00
2 changed files with 5 additions and 3 deletions

View File

@ -19,7 +19,7 @@ class Entity(object):
self.col = (255, 255, 255) self.col = (255, 255, 255)
self.solid = False self.solid = False
self.movable = False # False = Non movable, True = Movable, x>1: lighter movable self.movable = False # False = Non movable, True = Movable, x>1: lighter movable
self.void_collidable = True self.void_collidable = False
self.elasticity = 1 self.elasticity = 1
self.collision_changes_speed = self.env.controll_type == 'ACC' self.collision_changes_speed = self.env.controll_type == 'ACC'
self.collision_elasticity = self.env.default_collision_elasticity self.collision_elasticity = self.env.default_collision_elasticity
@ -49,7 +49,7 @@ class Entity(object):
if speeds > self.max_speed: if speeds > self.max_speed:
vx, vy = vx/speeds*self.max_speed, vy/speeds*self.max_speed vx, vy = vx/speeds*self.max_speed, vy/speeds*self.max_speed
x, y = x+vx*self.env.speed_fac, y+vy*self.env.speed_fac x, y = x+vx*self.env.speed_fac, y+vy*self.env.speed_fac
if not self.env.torus_topology: if not self.env.torus_topology and self.void_collidable:
if x > 1 or x < 0: if x > 1 or x < 0:
x, y, vx, vy = self.calc_void_collision(x < 0, x, y, vx, vy) x, y, vx, vy = self.calc_void_collision(x < 0, x, y, vx, vy)
if y > 1 or y < 0: if y > 1 or y < 0:
@ -341,6 +341,7 @@ class Agent(CircularEntity):
self.controll_type = self.env.controll_type self.controll_type = self.env.controll_type
self.solid = True self.solid = True
self.movable = True self.movable = True
self.void_collidable = True
def controll_step(self): def controll_step(self):
self._read_input() self._read_input()

View File

@ -13,7 +13,8 @@ from columbus.utils import soft_int, parseObs
class ColumbusEnv(gym.Env): class ColumbusEnv(gym.Env):
metadata = {'render.modes': ['human']} metadata = {'render.modes': ['human'], 'render_modes': [
'human', 'non-human'], 'render_fps': 60}
def __init__(self, observable=observables.Observable(), fps=60, env_seed=3.1, master_seed=None, start_pos=(0.5, 0.5), start_score=0, speed_fac=0.01, acc_fac=0.04, die_on_zero=False, return_on_score=-1, reward_mult=1, agent_drag=0, controll_type='SPEED', aux_reward_max=1, aux_penalty_max=0, aux_reward_discretize=0, void_is_type_barrier=True, void_damage=1, torus_topology=False, default_collision_elasticity=1, terminate_on_reward=False, agent_draw_path=False, clear_path_on_reset=True, max_steps=-1, value_color_mapper='tanh', width=720, height=720, agent_attrs={}, agent_cls=entities.Agent, exception_for_unsupported_collision=True): def __init__(self, observable=observables.Observable(), fps=60, env_seed=3.1, master_seed=None, start_pos=(0.5, 0.5), start_score=0, speed_fac=0.01, acc_fac=0.04, die_on_zero=False, return_on_score=-1, reward_mult=1, agent_drag=0, controll_type='SPEED', aux_reward_max=1, aux_penalty_max=0, aux_reward_discretize=0, void_is_type_barrier=True, void_damage=1, torus_topology=False, default_collision_elasticity=1, terminate_on_reward=False, agent_draw_path=False, clear_path_on_reset=True, max_steps=-1, value_color_mapper='tanh', width=720, height=720, agent_attrs={}, agent_cls=entities.Agent, exception_for_unsupported_collision=True):
super(ColumbusEnv, self).__init__() super(ColumbusEnv, self).__init__()