diff --git a/overcooked_simulator/game_content/environment_config.yaml b/overcooked_simulator/game_content/environment_config.yaml
index 96b6660b50523f0caa5481c18d9edefebd317da3..3374356bd1043a29835a8ecf2d57e844b6700b36 100644
--- a/overcooked_simulator/game_content/environment_config.yaml
+++ b/overcooked_simulator/game_content/environment_config.yaml
@@ -88,8 +88,8 @@ player_config:
   player_speed_units_per_seconds: 6
   interaction_range: 1.6
   restricted_view: False
-  view_angle: 60
-  view_range: 3  # in grid units, can be "null"
+  view_angle: 70
+  view_range: 5.5  # in grid units, can be "null"
 
 effect_manager:
   FireManager:
diff --git a/overcooked_simulator/gui_2d_vis/drawing.py b/overcooked_simulator/gui_2d_vis/drawing.py
index 64f05f4513139b1c405ccf23afa04bc82342b5eb..c9763b3c3c331480488bc44a772d24ea41623dad 100644
--- a/overcooked_simulator/gui_2d_vis/drawing.py
+++ b/overcooked_simulator/gui_2d_vis/drawing.py
@@ -45,11 +45,12 @@ def grayscale(img):
     return surface
 
 
-def create_polygon(n, length):
+def create_polygon(n, start_vec):
     if n == 1:
         return np.array([0, 0])
 
-    vector = np.array([length, 0])
+    vector = start_vec.copy()
+
     angle = (2 * np.pi) / n
 
     rot_matrix = np.array(
@@ -155,51 +156,64 @@ class Visualizer:
             angle = state["view_restriction"]["angle"] / 2
             range = state["view_restriction"]["range"]
 
+            angle = min(angle, 180)
+
             pos = pos * grid_size + pygame.math.Vector2([grid_size / 2, grid_size / 2])
 
-            rect_scale = max(width, height)
+            rect_scale = max(width, height) * 2
             # rect_scale = 2 * grid_size
 
             left_beam = pos + (direction.rotate(angle) * rect_scale * 2)
             right_beam = pos + (direction.rotate(-angle) * rect_scale * 2)
 
-            offset_front = direction * grid_size * 0.2
-            pygame.draw.polygon(
-                screen,
-                colors["black"],
-                (
-                    pos - offset_front,
-                    left_beam - offset_front,
-                    left_beam + (direction.rotate(90) * rect_scale),
-                    pos
-                    - (direction * rect_scale * 2)
-                    + (direction.rotate(90) * rect_scale),
-                    pos
-                    - (direction * rect_scale * 2)
-                    + (direction.rotate(-90) * rect_scale),
-                    right_beam + (direction.rotate(-90) * rect_scale),
-                    right_beam - offset_front,
-                ),
-            )
-            if range:
+            offset_front = direction * grid_size * 0.7
+            if angle != 180:
                 pygame.draw.polygon(
                     screen,
                     colors["black"],
                     (
+                        pos - offset_front,
+                        left_beam - offset_front,
+                        left_beam + (direction.rotate(90) * rect_scale),
                         pos
-                        + (direction.rotate(90) * rect_scale)
-                        + (direction * range * grid_size),
-                        pos
-                        + (direction.rotate(-90) * rect_scale)
-                        + (direction * range * grid_size),
-                        pos
-                        + (direction.rotate(-90) * rect_scale)
-                        + (direction * rect_scale),
+                        - (direction * rect_scale * 2)
+                        + (direction.rotate(90) * rect_scale),
                         pos
-                        + (direction.rotate(90) * rect_scale)
-                        + (direction * rect_scale),
+                        - (direction * rect_scale * 2)
+                        + (direction.rotate(-90) * rect_scale),
+                        right_beam + (direction.rotate(-90) * rect_scale),
+                        right_beam - offset_front,
                     ),
                 )
+            if range:
+                n_circle_points = 40
+
+                start_vec = np.array(-direction * range)
+                points = (
+                    np.array(create_polygon(n_circle_points, start_vec)) * grid_size
+                ) + pos
+
+                circle_closed = np.concatenate([points, points[0:1]], axis=0)
+
+                corners = [
+                    pos - (direction * rect_scale),
+                    *circle_closed,
+                    pos - (direction * rect_scale),
+                    pos
+                    - (direction * rect_scale)
+                    + (direction.rotate(90) * rect_scale),
+                    pos
+                    + (direction * rect_scale)
+                    + (direction.rotate(90) * rect_scale),
+                    pos
+                    + (direction * rect_scale)
+                    + (direction.rotate(-90) * rect_scale),
+                    pos
+                    - (direction * rect_scale)
+                    + (direction.rotate(-90) * rect_scale),
+                ]
+
+                pygame.draw.polygon(screen, colors["black"], [*corners])
 
     def draw_background(
         self, surface: pygame.Surface, width: int, height: int, grid_size: int
diff --git a/overcooked_simulator/gui_2d_vis/overcooked_gui.py b/overcooked_simulator/gui_2d_vis/overcooked_gui.py
index 8808d1dbb0be8194625b0f1872298fc0b3a5a8de..73b14016f2493953d9ac9f2da842099bcb63e526 100644
--- a/overcooked_simulator/gui_2d_vis/overcooked_gui.py
+++ b/overcooked_simulator/gui_2d_vis/overcooked_gui.py
@@ -237,7 +237,7 @@ class PyGameGUI:
                     current_player_name,
                     ActionType.MOVEMENT,
                     move_vec,
-                    duration=1 / self.FPS,
+                    duration=self.time_delta,
                 )
                 self.send_action(action)
 
@@ -980,7 +980,7 @@ class PyGameGUI:
         self.running = True
         while self.running:
             try:
-                time_delta = clock.tick(self.FPS) / 1000.0
+                self.time_delta = clock.tick(self.FPS) / 1000.0
 
                 for event in pygame.event.get():
                     if event.type == pygame.QUIT:
@@ -1083,7 +1083,7 @@ class PyGameGUI:
                     case MenuStates.End:
                         self.update_conclusion_label(state)
 
-                self.manager.update(time_delta)
+                self.manager.update(self.time_delta)
                 pygame.display.flip()
 
             except (KeyboardInterrupt, SystemExit):