diff --git a/client/README.md b/client/README.md index b4c6c0e..49489f9 100644 --- a/client/README.md +++ b/client/README.md @@ -21,20 +21,22 @@ The default play space is a **45 × 45** unit flat floor (~2 000 sq units, ~5× ### Props at a glance -| Node | Group | Size (m) | World XZ | Purpose | -|------|-------|----------|----------|---------| -| `Floor` | `walkable` | 45 × 45 | (0, 0) | Main play surface | -| `PrototypeTerminal` | `walkable` | 0.9 × 0.4 | (0, 0) | Interaction target | -| `MoveRejectPedestal` | `walkable` | 1.5 × 1.5 | (7.5, −6.5) | NEON-7 vertical reject | -| `MoveRejectFarPad` | `walkable` | 2.5 × 2.5 | (9, 9) | Near-floor walkable pad; no longer a reject target (horizontal limit removed NEON-29) | -| `Obstacle` | `occluder` | 2 × 2 | (6, 5) | Original occlusion / click-through target | -| `ObstacleB` | `occluder` | 3 × 3 | (−10, 5) | Second occluder (wider angle from spawn) | -| `ObstacleC` | `occluder` | 2 × 4 | (5, −12) | Tall occluder, south quadrant | -| `ObstacleD` | `occluder` | 3 × 2 | (−8, −16) | Far-south occluder | -| `TerracePlatformA` | `walkable` | 10 × 10, h=0.3 m | (13, −14) | Low raised pad, SE; single-step ascent from floor | -| `TerraceStepB` | `walkable` | 6 × 3, h=0.3 m | (−15, 8.5) | Approach step for Platform B; bridges floor → platform | -| `TerracePlatformB` | `walkable` | 6 × 6, h=0.6 m | (−15, 13) | Two-level terrace, NW; reached via TerraceStepB | -| `TerracePlatformC` | `walkable` | 8 × 8, h=0.3 m | (14, 14) | Low broad pad, NE; single-step ascent from floor | +Elevated walkables use **distinct albedo tints** in `scenes/main.tscn` so screenshots and discussion can name the right prop (`Mat_terrace_platform_a`, `Mat_terrace_b_step`, etc.). The main **floor** slab uses neutral gray (`Mat_floor_slab`). **Occluders** keep the default mesh gray. + +| Node | Group | Tint | Size (m) | World XZ | Purpose | +|------|-------|------|----------|----------|---------| +| `Floor` | `walkable` | Neutral gray | 45 × 45 | (0, 0) | Main play surface | +| `PrototypeTerminal` | `walkable` | Slate blue | 0.9 × 0.4 | (0, 0) | Interaction target | +| `MoveRejectPedestal` | `walkable` | Orange | 1.5 × 1.5 | (7.5, −6.5) | NEON-7 vertical reject | +| `MoveRejectFarPad` | `walkable` | Blue-gray | 2.5 × 2.5 | (9, 9) | Near-floor walkable pad; no longer a reject target (horizontal limit removed NEON-29) | +| `Obstacle` | `occluder` | Default gray | 2 × 2 | (6, 5) | Original occlusion / click-through target | +| `ObstacleB` | `occluder` | Default gray | 3 × 3 | (−10, 5) | Second occluder (wider angle from spawn) | +| `ObstacleC` | `occluder` | Default gray | 2 × 4 | (5, −12) | Tall occluder, south quadrant | +| `ObstacleD` | `occluder` | Default gray | 3 × 2 | (−8, −16) | Far-south occluder | +| `TerracePlatformA` | `walkable` | **Teal** | 10 × 10, h=0.3 m | (13, −14) | Large SE pad; single-step ascent from floor | +| `TerraceStepB` | `walkable` | **Gold** | 6 × 3, h=0.3 m | (−15, 8.5) | NW approach step; bridges floor → TerracePlatformB | +| `TerracePlatformB` | `walkable` | **Violet** | 6 × 6, h=0.6 m | (−15, 13) | Upper NW terrace; reached via TerraceStepB | +| `TerracePlatformC` | `walkable` | **Green** | 8 × 8, h=0.3 m | (14, 14) | NE pad; single-step ascent from floor | ### Height variation notes diff --git a/client/scenes/main.tscn b/client/scenes/main.tscn index 5009af2..ec6dd13 100644 --- a/client/scenes/main.tscn +++ b/client/scenes/main.tscn @@ -21,6 +21,9 @@ agent_height = 1.0 agent_radius = 0.4 agent_max_climb = 0.35 +[sub_resource type="StandardMaterial3D" id="Mat_floor_slab"] +albedo_color = Color(0.5, 0.5, 0.52, 1) + [sub_resource type="BoxMesh" id="BoxMesh_floor"] size = Vector3(45, 0.2, 45) @@ -96,8 +99,17 @@ size = Vector3(3, 2, 3) [sub_resource type="BoxShape3D" id="BoxShape3D_obstacle_d"] size = Vector3(3, 2, 3) -[sub_resource type="StandardMaterial3D" id="Mat_terrace"] -albedo_color = Color(0.55, 0.52, 0.48, 1) +[sub_resource type="StandardMaterial3D" id="Mat_terrace_platform_a"] +albedo_color = Color(0.15, 0.62, 0.58, 1) + +[sub_resource type="StandardMaterial3D" id="Mat_terrace_b_step"] +albedo_color = Color(0.96, 0.72, 0.15, 1) + +[sub_resource type="StandardMaterial3D" id="Mat_terrace_platform_b"] +albedo_color = Color(0.58, 0.32, 0.72, 1) + +[sub_resource type="StandardMaterial3D" id="Mat_terrace_platform_c"] +albedo_color = Color(0.22, 0.68, 0.38, 1) [sub_resource type="BoxMesh" id="BoxMesh_terrace_a"] size = Vector3(10, 0.3, 10) @@ -152,6 +164,7 @@ collision_mask = 3 [node name="MeshInstance3D" type="MeshInstance3D" parent="World/NavigationRegion3D/Floor" unique_id=152652175] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.1, 0) mesh = SubResource("BoxMesh_floor") +surface_material_override/0 = SubResource("Mat_floor_slab") [node name="CollisionShape3D" type="CollisionShape3D" parent="World/NavigationRegion3D/Floor" unique_id=409532142] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.1, 0) @@ -247,7 +260,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, -14) [node name="MeshInstance3D" type="MeshInstance3D" parent="World/NavigationRegion3D/TerracePlatformA" unique_id=3000011] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.15, 0) mesh = SubResource("BoxMesh_terrace_a") -surface_material_override/0 = SubResource("Mat_terrace") +surface_material_override/0 = SubResource("Mat_terrace_platform_a") [node name="CollisionShape3D" type="CollisionShape3D" parent="World/NavigationRegion3D/TerracePlatformA" unique_id=3000012] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.15, 0) @@ -260,7 +273,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15, 0, 8.5) [node name="MeshInstance3D" type="MeshInstance3D" parent="World/NavigationRegion3D/TerraceStepB" unique_id=3000014] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.15, 0) mesh = SubResource("BoxMesh_terrace_b_step") -surface_material_override/0 = SubResource("Mat_terrace") +surface_material_override/0 = SubResource("Mat_terrace_b_step") [node name="CollisionShape3D" type="CollisionShape3D" parent="World/NavigationRegion3D/TerraceStepB" unique_id=3000015] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.15, 0) @@ -273,7 +286,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15, 0, 13) [node name="MeshInstance3D" type="MeshInstance3D" parent="World/NavigationRegion3D/TerracePlatformB" unique_id=3000017] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.3, 0) mesh = SubResource("BoxMesh_terrace_b_platform") -surface_material_override/0 = SubResource("Mat_terrace") +surface_material_override/0 = SubResource("Mat_terrace_platform_b") [node name="CollisionShape3D" type="CollisionShape3D" parent="World/NavigationRegion3D/TerracePlatformB" unique_id=3000018] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.3, 0) @@ -286,7 +299,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 14) [node name="MeshInstance3D" type="MeshInstance3D" parent="World/NavigationRegion3D/TerracePlatformC" unique_id=3000020] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.15, 0) mesh = SubResource("BoxMesh_terrace_c") -surface_material_override/0 = SubResource("Mat_terrace") +surface_material_override/0 = SubResource("Mat_terrace_platform_c") [node name="CollisionShape3D" type="CollisionShape3D" parent="World/NavigationRegion3D/TerracePlatformC" unique_id=3000021] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.15, 0)