feat: add t_p1_greybox — greybox test map scene

Creates test_range.tscn under client/assets/maps/test_range/ as a simple
open-area test map for validating movement, shooting, and networking.

Layout:
- 80×80 open area with grey floor (CSGBox3D, 12 tris)
- Low platform (center, 1 unit high, gold)
- Medium platform (east, 2 units high, gold)
- High platform (north-west, 3 units high, red)
- Ramp (south, tilted ~20°, leads ground to low platform top)
- Enclosure/room (east, 12×12 interior, 4-unit walls, south doorway)
- SpawnPoint (Marker3D) with group 'spawn_points'
- DirectionalLight3D (sun) + WorldEnvironment
- All geometry uses Solid-color StandardMaterial3D placeholders
- Collision enabled on all CSGBox3D shapes
- ~132 tris total (well under 500 budget)
This commit is contained in:
2026-07-01 20:15:34 -04:00
parent d02b112d99
commit 3c3251fa7a
@@ -0,0 +1,181 @@
[gd_scene load_steps=8 format=3]
; =============================================================================
; test_range.tscn — Greybox Test Map
; =============================================================================
; A simple open-area test map for validating movement, shooting, and networking.
;
; Layout:
; - 80×80 open area with flat grey floor
; - Low platform (center, 1 unit high, gold)
; - Medium platform (east, 2 units high, gold)
; - High platform (north-west, 3 units high, red)
; - Ramp from ground to low platform (yellow)
; - Enclosure/room (east) with doorway for indoor testing (blue-grey walls)
; - Spawn point (Marker3D) with group 'spawn_points'
; - DirectionalLight3D + WorldEnvironment
;
; Total geometry: ~132 tris (well under 500 budget)
; =============================================================================
[sub_resource type="Environment" id="1"]
background_mode = 0
tonemap_mode = 0
glow_enabled = false
ambient_light_color = Color(0.25, 0.25, 0.3, 1.0)
ambient_light_energy = 0.4
ambient_light_sky_contribution = 0.0
[sub_resource type="StandardMaterial3D" id="2"]
albedo_color = Color(0.35, 0.35, 0.35, 1.0)
resource_name = "grey_floor"
[sub_resource type="StandardMaterial3D" id="3"]
albedo_color = Color(0.8, 0.6, 0.2, 1.0)
resource_name = "gold_platform"
[sub_resource type="StandardMaterial3D" id="4"]
albedo_color = Color(0.5, 0.5, 0.6, 1.0)
resource_name = "bluegrey_wall"
[sub_resource type="StandardMaterial3D" id="5"]
albedo_color = Color(0.9, 0.2, 0.2, 1.0)
resource_name = "red_high"
[sub_resource type="StandardMaterial3D" id="6"]
albedo_color = Color(0.3, 0.4, 0.3, 1.0)
resource_name = "green_floor"
[sub_resource type="StandardMaterial3D" id="7"]
albedo_color = Color(0.7, 0.7, 0.3, 1.0)
resource_name = "yellow_ramp"
; === Root Node ===
[node name="TestRange" type="Node3D"]
; === Lighting ===
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("1")
[node name="SunLight" type="DirectionalLight3D" parent="."]
transform = Transform3D(0.866, 0, -0.5, -0.354, 0.707, -0.612, 0.354, 0.707, 0.612, 0, 8, 0)
light_energy = 1.5
light_indirect_energy = 0.8
light_color = Color(1.0, 0.95, 0.9, 1.0)
shadow_enabled = true
directional_shadow_max_distance = 60.0
directional_shadow_split_1 = 0.1
directional_shadow_split_2 = 0.3
directional_shadow_split_3 = 0.6
directional_shadow_blend_splits = true
; === Spawn Point ===
[node name="SpawnPoint" type="Marker3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0.5, 0)
groups = ["spawn_points"]
; === Open Area Floor (80×80) ===
[node name="Floor" type="CSGBox3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.25, 0)
size = Vector3(80, 0.5, 80)
material = SubResource("2")
use_collision = true
; === Low Platform (center, 1 unit high) ===
; 8×8 platform, top at y=2, bottom at y=0, centered at origin
[node name="LowPlatform" type="CSGBox3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0, 0)
size = Vector3(8, 2, 8)
material = SubResource("3")
use_collision = true
; === Medium Platform (east, 2 units high) ===
; 6×6 platform, top at y=3, bottom at y=1 — jump-up from low platform height
[node name="MediumPlatform" type="CSGBox3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 2.0, 10)
size = Vector3(6, 2, 6)
material = SubResource("3")
use_collision = true
; === High Platform (north-west, 3 units high) ===
; 3×3 small platform, top at y=4 — requires sprint-jump to reach
[node name="HighPlatform" type="CSGBox3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20, 3.0, -15)
size = Vector3(3, 2, 3)
material = SubResource("5")
use_collision = true
; === Ramp (south of center, leads ground → low platform top) ===
; Tilted ~20° around X axis, 6 units long along Z.
; South end near ground, north end meets low platform top (y=2).
[node name="Ramp" type="CSGBox3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.940, -0.342, 0, 0.342, 0.940, 0, 1.0, 5)
size = Vector3(6, 0.2, 6)
material = SubResource("7")
use_collision = true
; =============================================================================
; Enclosure — Indoor Testing Room
; =============================================================================
; 12×12 interior room, 4 units tall, with a 2-unit doorway on the south face.
; Centered at (30, 0, 30).
[node name="Enclosure" type="Node3D" parent="."]
[node name="RoomFloor" type="CSGBox3D" parent="Enclosure"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0.25, 30)
size = Vector3(12, 0.5, 12)
material = SubResource("6")
use_collision = true
; North wall (z = 24)
[node name="Wall_N" type="CSGBox3D" parent="Enclosure"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 2.0, 24.25)
size = Vector3(12, 4, 0.5)
material = SubResource("4")
use_collision = true
; South wall left segment (doorway gap from x=29 to x=31)
[node name="Wall_S_Left" type="CSGBox3D" parent="Enclosure"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.5, 2.0, 35.75)
size = Vector3(5, 4, 0.5)
material = SubResource("4")
use_collision = true
; South wall right segment
[node name="Wall_S_Right" type="CSGBox3D" parent="Enclosure"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 33.5, 2.0, 35.75)
size = Vector3(5, 4, 0.5)
material = SubResource("4")
use_collision = true
; West wall (x = 24)
[node name="Wall_W" type="CSGBox3D" parent="Enclosure"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.25, 2.0, 30)
size = Vector3(0.5, 4, 12)
material = SubResource("4")
use_collision = true
; East wall (x = 36)
[node name="Wall_E" type="CSGBox3D" parent="Enclosure"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35.75, 2.0, 30)
size = Vector3(0.5, 4, 12)
material = SubResource("4")
use_collision = true