Some checks failed
Godot CI / Import + smoke test (push) Failing after 19s
3D-сцена 4×4м: стены/пол/потолок, окно (свечение), дверь, стол с пека, кровать с одеялом, подарок-коробка на полу, отец-NPC в дверях. Архитектура: - FPVController (CharacterBody3D + Camera3D + RayCast3D) — mouse look, WASD, raycast-pickup, lock_input для катсцен. - Interactable (StaticBody3D base) — toggle через collision_layer. - DialogManager (autoload CanvasLayer) — субтитры snake-case, fullscreen записка, HUD-подсказки, prompt над крестом, await через signal. - act1.gd — state machine: INTRO → EXPLORE_GIFT → INSIDE_GIFT → NOTE_READ → FATHER_FAREWELL (tween x-2.5) → SEEK_DRIVE → ENDING. Канон-реплики из Пролог_Первый_день.md без правок: - Отец intro + про флешку с Шиндой - Записка «Не сожги. Пароль от Wi-Fi на холодильнике. — Бать» - Мысли героя: «новый пека?», «бать ну ты красавчик», «Андрюхино так Андрюхино» GL Compatibility renderer, unshaded материалы плоскими цветами под pixel-art 640×360. Тестировано на RTX 5070 — стартует без ошибок. main.tscn placeholder удалён, main_scene = act1_room.tscn. Не покрыто в MVP (TBD): - Опц. выход на кухню → холодильник → Wi-Fi пароль - Mastermind hack-mini-game для подбора Wi-Fi - Sfxr звуки (открытие коробки, шаги) - Переход в Акт 2 (пока quit на финале) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
305 lines
9.9 KiB
Text
305 lines
9.9 KiB
Text
[gd_scene load_steps=42 format=3]
|
|
|
|
[ext_resource type="Script" path="res://scripts/prologue/act1.gd" id="1_act1"]
|
|
[ext_resource type="Script" path="res://scripts/interactables/interactable.gd" id="2_int"]
|
|
[ext_resource type="PackedScene" path="res://scenes/components/player_fpv.tscn" id="3_player"]
|
|
|
|
[sub_resource type="BoxMesh" id="mesh_floor"]
|
|
size = Vector3(4, 0.1, 4)
|
|
|
|
[sub_resource type="BoxShape3D" id="shape_floor"]
|
|
size = Vector3(4, 0.1, 4)
|
|
|
|
[sub_resource type="BoxMesh" id="mesh_wall_ns"]
|
|
size = Vector3(4, 2.5, 0.1)
|
|
|
|
[sub_resource type="BoxShape3D" id="shape_wall_ns"]
|
|
size = Vector3(4, 2.5, 0.1)
|
|
|
|
[sub_resource type="BoxMesh" id="mesh_wall_ew"]
|
|
size = Vector3(0.1, 2.5, 4)
|
|
|
|
[sub_resource type="BoxShape3D" id="shape_wall_ew"]
|
|
size = Vector3(0.1, 2.5, 4)
|
|
|
|
[sub_resource type="BoxMesh" id="mesh_window"]
|
|
size = Vector3(1.5, 1.0, 0.06)
|
|
|
|
[sub_resource type="BoxMesh" id="mesh_door"]
|
|
size = Vector3(0.06, 2.0, 1.0)
|
|
|
|
[sub_resource type="BoxMesh" id="mesh_desk"]
|
|
size = Vector3(1.5, 0.7, 0.6)
|
|
|
|
[sub_resource type="BoxShape3D" id="shape_desk"]
|
|
size = Vector3(1.5, 0.7, 0.6)
|
|
|
|
[sub_resource type="BoxMesh" id="mesh_old_pc"]
|
|
size = Vector3(0.25, 0.4, 0.3)
|
|
|
|
[sub_resource type="BoxMesh" id="mesh_bed"]
|
|
size = Vector3(2.0, 0.4, 1.0)
|
|
|
|
[sub_resource type="BoxShape3D" id="shape_bed"]
|
|
size = Vector3(2.0, 0.4, 1.0)
|
|
|
|
[sub_resource type="BoxMesh" id="mesh_blanket"]
|
|
size = Vector3(1.95, 0.06, 0.95)
|
|
|
|
[sub_resource type="BoxMesh" id="mesh_pillow"]
|
|
size = Vector3(0.5, 0.1, 0.25)
|
|
|
|
[sub_resource type="BoxMesh" id="mesh_gift"]
|
|
size = Vector3(0.5, 0.4, 0.5)
|
|
|
|
[sub_resource type="BoxShape3D" id="shape_gift"]
|
|
size = Vector3(0.5, 0.4, 0.5)
|
|
|
|
[sub_resource type="BoxMesh" id="mesh_sys"]
|
|
size = Vector3(0.35, 0.5, 0.45)
|
|
|
|
[sub_resource type="BoxMesh" id="mesh_note"]
|
|
size = Vector3(0.18, 0.012, 0.12)
|
|
|
|
[sub_resource type="BoxShape3D" id="shape_note"]
|
|
size = Vector3(0.18, 0.012, 0.12)
|
|
|
|
[sub_resource type="BoxMesh" id="mesh_flash"]
|
|
size = Vector3(0.06, 0.02, 0.025)
|
|
|
|
[sub_resource type="BoxShape3D" id="shape_flash"]
|
|
size = Vector3(0.06, 0.02, 0.025)
|
|
|
|
[sub_resource type="BoxMesh" id="mesh_father"]
|
|
size = Vector3(0.4, 1.7, 0.4)
|
|
|
|
[sub_resource type="StandardMaterial3D" id="mat_floor"]
|
|
shading_mode = 0
|
|
albedo_color = Color(0.55, 0.35, 0.22, 1)
|
|
|
|
[sub_resource type="StandardMaterial3D" id="mat_wall"]
|
|
shading_mode = 0
|
|
albedo_color = Color(0.79, 0.71, 0.54, 1)
|
|
|
|
[sub_resource type="StandardMaterial3D" id="mat_ceiling"]
|
|
shading_mode = 0
|
|
albedo_color = Color(0.85, 0.83, 0.78, 1)
|
|
|
|
[sub_resource type="StandardMaterial3D" id="mat_window"]
|
|
shading_mode = 0
|
|
albedo_color = Color(0.6, 0.85, 1.0, 1)
|
|
emission_enabled = true
|
|
emission = Color(0.6, 0.85, 1.0, 1)
|
|
emission_energy_multiplier = 0.5
|
|
|
|
[sub_resource type="StandardMaterial3D" id="mat_door"]
|
|
shading_mode = 0
|
|
albedo_color = Color(0.29, 0.18, 0.09, 1)
|
|
|
|
[sub_resource type="StandardMaterial3D" id="mat_desk"]
|
|
shading_mode = 0
|
|
albedo_color = Color(0.36, 0.23, 0.11, 1)
|
|
|
|
[sub_resource type="StandardMaterial3D" id="mat_old_pc"]
|
|
shading_mode = 0
|
|
albedo_color = Color(0.43, 0.43, 0.43, 1)
|
|
|
|
[sub_resource type="StandardMaterial3D" id="mat_blanket"]
|
|
shading_mode = 0
|
|
albedo_color = Color(0.45, 0.15, 0.15, 1)
|
|
|
|
[sub_resource type="StandardMaterial3D" id="mat_pillow"]
|
|
shading_mode = 0
|
|
albedo_color = Color(0.92, 0.88, 0.78, 1)
|
|
|
|
[sub_resource type="StandardMaterial3D" id="mat_gift"]
|
|
shading_mode = 0
|
|
albedo_color = Color(0.1, 0.1, 0.12, 1)
|
|
|
|
[sub_resource type="StandardMaterial3D" id="mat_sys"]
|
|
shading_mode = 0
|
|
albedo_color = Color(0.3, 0.32, 0.38, 1)
|
|
emission_enabled = true
|
|
emission = Color(0.2, 0.5, 0.9, 1)
|
|
emission_energy_multiplier = 0.6
|
|
|
|
[sub_resource type="StandardMaterial3D" id="mat_note"]
|
|
shading_mode = 0
|
|
albedo_color = Color(0.95, 0.95, 0.9, 1)
|
|
|
|
[sub_resource type="StandardMaterial3D" id="mat_flash"]
|
|
shading_mode = 0
|
|
albedo_color = Color(0.78, 0.18, 0.18, 1)
|
|
emission_enabled = true
|
|
emission = Color(0.78, 0.18, 0.18, 1)
|
|
emission_energy_multiplier = 0.4
|
|
|
|
[sub_resource type="StandardMaterial3D" id="mat_father"]
|
|
shading_mode = 0
|
|
albedo_color = Color(0.18, 0.22, 0.4, 1)
|
|
|
|
[node name="Act1Room" type="Node3D"]
|
|
script = ExtResource("1_act1")
|
|
|
|
[node name="Floor" type="StaticBody3D" parent="."]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.05, 0)
|
|
|
|
[node name="Mesh" type="MeshInstance3D" parent="Floor"]
|
|
mesh = SubResource("mesh_floor")
|
|
material_override = SubResource("mat_floor")
|
|
|
|
[node name="Coll" type="CollisionShape3D" parent="Floor"]
|
|
shape = SubResource("shape_floor")
|
|
|
|
[node name="Ceiling" type="StaticBody3D" parent="."]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.55, 0)
|
|
|
|
[node name="Mesh" type="MeshInstance3D" parent="Ceiling"]
|
|
mesh = SubResource("mesh_floor")
|
|
material_override = SubResource("mat_ceiling")
|
|
|
|
[node name="Coll" type="CollisionShape3D" parent="Ceiling"]
|
|
shape = SubResource("shape_floor")
|
|
|
|
[node name="WallN" type="StaticBody3D" parent="."]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.25, -2.05)
|
|
|
|
[node name="Mesh" type="MeshInstance3D" parent="WallN"]
|
|
mesh = SubResource("mesh_wall_ns")
|
|
material_override = SubResource("mat_wall")
|
|
|
|
[node name="Coll" type="CollisionShape3D" parent="WallN"]
|
|
shape = SubResource("shape_wall_ns")
|
|
|
|
[node name="Window" type="MeshInstance3D" parent="WallN"]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.3, 0.06)
|
|
mesh = SubResource("mesh_window")
|
|
material_override = SubResource("mat_window")
|
|
|
|
[node name="WallS" type="StaticBody3D" parent="."]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.25, 2.05)
|
|
|
|
[node name="Mesh" type="MeshInstance3D" parent="WallS"]
|
|
mesh = SubResource("mesh_wall_ns")
|
|
material_override = SubResource("mat_wall")
|
|
|
|
[node name="Coll" type="CollisionShape3D" parent="WallS"]
|
|
shape = SubResource("shape_wall_ns")
|
|
|
|
[node name="WallE" type="StaticBody3D" parent="."]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.05, 1.25, 0)
|
|
|
|
[node name="Mesh" type="MeshInstance3D" parent="WallE"]
|
|
mesh = SubResource("mesh_wall_ew")
|
|
material_override = SubResource("mat_wall")
|
|
|
|
[node name="Coll" type="CollisionShape3D" parent="WallE"]
|
|
shape = SubResource("shape_wall_ew")
|
|
|
|
[node name="DoorPanel" type="MeshInstance3D" parent="WallE"]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.06, -0.25, 0)
|
|
mesh = SubResource("mesh_door")
|
|
material_override = SubResource("mat_door")
|
|
|
|
[node name="WallW" type="StaticBody3D" parent="."]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.05, 1.25, 0)
|
|
|
|
[node name="Mesh" type="MeshInstance3D" parent="WallW"]
|
|
mesh = SubResource("mesh_wall_ew")
|
|
material_override = SubResource("mat_wall")
|
|
|
|
[node name="Coll" type="CollisionShape3D" parent="WallW"]
|
|
shape = SubResource("shape_wall_ew")
|
|
|
|
[node name="Desk" type="StaticBody3D" parent="."]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.35, -1.5)
|
|
|
|
[node name="Mesh" type="MeshInstance3D" parent="Desk"]
|
|
mesh = SubResource("mesh_desk")
|
|
material_override = SubResource("mat_desk")
|
|
|
|
[node name="Coll" type="CollisionShape3D" parent="Desk"]
|
|
shape = SubResource("shape_desk")
|
|
|
|
[node name="OldPC" type="MeshInstance3D" parent="Desk"]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 0.55, 0)
|
|
mesh = SubResource("mesh_old_pc")
|
|
material_override = SubResource("mat_old_pc")
|
|
|
|
[node name="FlashDrive" type="StaticBody3D" parent="Desk"]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.3, 0.36, 0.1)
|
|
script = ExtResource("2_int")
|
|
prompt = "взять флешку"
|
|
|
|
[node name="Mesh" type="MeshInstance3D" parent="Desk/FlashDrive"]
|
|
mesh = SubResource("mesh_flash")
|
|
material_override = SubResource("mat_flash")
|
|
|
|
[node name="Coll" type="CollisionShape3D" parent="Desk/FlashDrive"]
|
|
shape = SubResource("shape_flash")
|
|
|
|
[node name="Bed" type="StaticBody3D" parent="."]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 0.2, 1.4)
|
|
|
|
[node name="Mesh" type="MeshInstance3D" parent="Bed"]
|
|
mesh = SubResource("mesh_bed")
|
|
material_override = SubResource("mat_desk")
|
|
|
|
[node name="Coll" type="CollisionShape3D" parent="Bed"]
|
|
shape = SubResource("shape_bed")
|
|
|
|
[node name="Blanket" type="MeshInstance3D" parent="Bed"]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.23, 0)
|
|
mesh = SubResource("mesh_blanket")
|
|
material_override = SubResource("mat_blanket")
|
|
|
|
[node name="Pillow" type="MeshInstance3D" parent="Bed"]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.7, 0.31, 0)
|
|
mesh = SubResource("mesh_pillow")
|
|
material_override = SubResource("mat_pillow")
|
|
|
|
[node name="GiftBox" type="StaticBody3D" parent="."]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.2, -0.3)
|
|
script = ExtResource("2_int")
|
|
prompt = "открыть коробку"
|
|
|
|
[node name="Mesh" type="MeshInstance3D" parent="GiftBox"]
|
|
mesh = SubResource("mesh_gift")
|
|
material_override = SubResource("mat_gift")
|
|
|
|
[node name="Coll" type="CollisionShape3D" parent="GiftBox"]
|
|
shape = SubResource("shape_gift")
|
|
|
|
[node name="SystemUnit" type="Node3D" parent="."]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.25, -0.3)
|
|
visible = false
|
|
|
|
[node name="Mesh" type="MeshInstance3D" parent="SystemUnit"]
|
|
mesh = SubResource("mesh_sys")
|
|
material_override = SubResource("mat_sys")
|
|
|
|
[node name="Note" type="StaticBody3D" parent="SystemUnit"]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.26, 0)
|
|
script = ExtResource("2_int")
|
|
prompt = "прочитать записку"
|
|
|
|
[node name="Mesh" type="MeshInstance3D" parent="SystemUnit/Note"]
|
|
mesh = SubResource("mesh_note")
|
|
material_override = SubResource("mat_note")
|
|
|
|
[node name="Coll" type="CollisionShape3D" parent="SystemUnit/Note"]
|
|
shape = SubResource("shape_note")
|
|
|
|
[node name="FatherNPC" type="Node3D" parent="."]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.7, 0.85, 0)
|
|
|
|
[node name="Mesh" type="MeshInstance3D" parent="FatherNPC"]
|
|
mesh = SubResource("mesh_father")
|
|
material_override = SubResource("mat_father")
|
|
|
|
[node name="PlayerFPV" parent="." instance=ExtResource("3_player")]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1.2)
|
|
|
|
[connection signal="interacted" from="Desk/FlashDrive" to="." method="_on_drive_interacted"]
|
|
[connection signal="interacted" from="GiftBox" to="." method="_on_gift_interacted"]
|
|
[connection signal="interacted" from="SystemUnit/Note" to="." method="_on_note_interacted"]
|