249 lines
7.7 KiB
Plaintext
249 lines
7.7 KiB
Plaintext
[gd_scene load_steps=12 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"
|
||
|
||
[sub_resource type="BoxShape3D" id="8"]
|
||
size = Vector3(8, 4, 4)
|
||
|
||
[sub_resource type="BoxShape3D" id="9"]
|
||
size = Vector3(8, 4, 4)
|
||
|
||
|
||
; === 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 Points ===
|
||
|
||
[node name="SpawnPoint" type="Marker3D" parent="."]
|
||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0.5, 0)
|
||
groups = ["spawn_points"]
|
||
|
||
|
||
; === CT Spawn Points (Counter-Terrorist) ===
|
||
|
||
[node name="CTSpawn_01" type="Marker3D" parent="."]
|
||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0.5, -10)
|
||
groups = ["spawn_points_ct"]
|
||
|
||
[node name="CTSpawn_02" type="Marker3D" parent="."]
|
||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25, 0.5, -15)
|
||
groups = ["spawn_points_ct"]
|
||
|
||
|
||
; === T Spawn Points (Terrorist) ===
|
||
|
||
[node name="TSpawn_01" type="Marker3D" parent="."]
|
||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0.5, 25)
|
||
groups = ["spawn_points_t"]
|
||
|
||
[node name="TSpawn_02" type="Marker3D" parent="."]
|
||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0.5, 20)
|
||
groups = ["spawn_points_t"]
|
||
|
||
|
||
; =============================================================================
|
||
; Bomb Sites
|
||
; =============================================================================
|
||
; BombsiteA — south-west area, 8×4m zone
|
||
; BombsiteB — north-east area, 8×4m zone
|
||
; Each has a CollisionShape3D (BoxShape3D) for overlap detection
|
||
; and a Marker3D child named "PlantPosition" marking the plant location.
|
||
|
||
; --- Bombsite A ---
|
||
|
||
|
||
[node name="BombsiteA" type="Area3D" parent="."]
|
||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20, 1.0, -5)
|
||
collision_layer = 0
|
||
collision_mask = 0
|
||
groups = ["bomb_sites"]
|
||
|
||
[node name="CollisionShape3D" type="CollisionShape3D" parent="BombsiteA"]
|
||
shape = SubResource("8")
|
||
|
||
[node name="PlantPosition" type="Marker3D" parent="BombsiteA"]
|
||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, -1)
|
||
|
||
; --- Bombsite B ---
|
||
|
||
|
||
[node name="BombsiteB" type="Area3D" parent="."]
|
||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 1.0, 20)
|
||
collision_layer = 0
|
||
collision_mask = 0
|
||
groups = ["bomb_sites"]
|
||
|
||
[node name="PlantPosition" type="Marker3D" parent="BombsiteB"]
|
||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 2)
|
||
|
||
[node name="CollisionShape3D" type="CollisionShape3D" parent="BombsiteB"]
|
||
shape = SubResource("9")
|
||
|
||
|
||
; === 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
|