Files
tactical-shooter/client/assets/maps/test_range/test_range.tscn
T

249 lines
7.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[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