Compare commits

...

3 Commits

Author SHA1 Message Date
0edf520a21 Rebalanced audio
All checks were successful
linting & formatting / build (push) Successful in 25s
itch.io publish action / build (linux64, x86_64) (push) Successful in 2m16s
itch.io publish action / build (osx, app) (push) Successful in 2m24s
itch.io publish action / build (win64, exe) (push) Successful in 2m28s
2025-08-16 19:28:07 -06:00
8525298792 Settings volume sliders go from 0% to 200% 2025-08-16 17:48:38 -06:00
570a54db48 More dust chunks from node splatter 2025-08-16 17:45:35 -06:00
29 changed files with 159 additions and 81 deletions

Binary file not shown.

Binary file not shown.

BIN
assets/sfx/grunk/alarm_screech.wav (Stored with Git LFS)

Binary file not shown.

View File

@ -2,7 +2,7 @@
importer="wav"
type="AudioStreamWAV"
uid="uid://ypk1d4adrcs"
uid="uid://6yo1n0l1jgok"
path="res://.godot/imported/alarm_screech.wav-99f30850091e72de3c561e544b0403c0.sample"
[deps]

BIN
assets/sfx/tools/beam_loop.wav (Stored with Git LFS)

Binary file not shown.

BIN
assets/sfx/tools/spray.wav (Stored with Git LFS)

Binary file not shown.

View File

@ -80,12 +80,15 @@ volume_db = -80.0
autoplay = true
bus = &"Ambient"
script = ExtResource("5_jiowi")
base_volume = -12.0
boosted_volume = 0.0
[node name="AmbientSFX" type="Node3D" parent="."]
[node name="Creaker" parent="AmbientSFX" instance=ExtResource("7_vdioa")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21, 1, -38)
stream = SubResource("AudioStreamRandomizer_d8fas")
volume_db = 10.0
unit_size = 2.0
bus = &"Ambient"
interval_mean = 120.0

View File

@ -118,7 +118,7 @@ data = PackedVector3Array(-0.7, 0, 0.14, -0.7, -0.28, 0, -0.7, 0, -0.14, -0.7, 0
mesh = ExtResource("1_ckpmb")
skeleton = NodePath("")
[node name="StaticBody3D" type="StaticBody3D" parent="Hallway1"]
[node name="StaticBody3D" type="StaticBody3D" parent="Hallway1" groups=["MetalMaterial"]]
collision_layer = 5
collision_mask = 0
@ -195,7 +195,7 @@ transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0, 0,
mesh = ExtResource("12_3ls22")
skeleton = NodePath("")
[node name="StaticBody3D" type="StaticBody3D" parent="T-Junction1"]
[node name="StaticBody3D" type="StaticBody3D" parent="T-Junction1" groups=["MetalMaterial"]]
collision_layer = 5
collision_mask = 0
@ -213,7 +213,7 @@ transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -7.5,
mesh = ExtResource("1_ckpmb")
skeleton = NodePath("")
[node name="StaticBody3D" type="StaticBody3D" parent="Hallway2"]
[node name="StaticBody3D" type="StaticBody3D" parent="Hallway2" groups=["MetalMaterial"]]
collision_layer = 5
collision_mask = 0
@ -267,7 +267,7 @@ transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -19.5,
mesh = ExtResource("17_qhrg0")
skeleton = NodePath("")
[node name="StaticBody3D" type="StaticBody3D" parent="Hallway3"]
[node name="StaticBody3D" type="StaticBody3D" parent="Hallway3" groups=["MetalMaterial"]]
collision_layer = 5
collision_mask = 0
@ -296,7 +296,7 @@ transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -27, 0
mesh = ExtResource("18_xuoub")
skeleton = NodePath("")
[node name="StaticBody3D" type="StaticBody3D" parent="T-Junction2"]
[node name="StaticBody3D" type="StaticBody3D" parent="T-Junction2" groups=["MetalMaterial"]]
collision_layer = 5
collision_mask = 0
@ -314,7 +314,7 @@ transform = Transform3D(2.98023e-08, 1, 0, 4.37114e-08, -1.3027e-15, -1, -1, 2.9
mesh = ExtResource("19_unrww")
skeleton = NodePath("")
[node name="StaticBody3D" type="StaticBody3D" parent="EndCap"]
[node name="StaticBody3D" type="StaticBody3D" parent="EndCap" groups=["MetalMaterial"]]
collision_layer = 5
collision_mask = 0
@ -332,7 +332,7 @@ transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -27, 0
mesh = ExtResource("20_kkj02")
skeleton = NodePath("")
[node name="StaticBody3D" type="StaticBody3D" parent="Hallway4"]
[node name="StaticBody3D" type="StaticBody3D" parent="Hallway4" groups=["MetalMaterial"]]
collision_layer = 5
collision_mask = 0

View File

@ -316,8 +316,7 @@ collision_mask = 0
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.6)
stream = SubResource("AudioStreamRandomizer_53iah")
volume_db = -4.0
unit_size = 3.0
unit_size = 5.0
pitch_scale = 0.7
[node name="CollisionShape3D" type="CollisionShape3D" parent="TankInteractBody"]
@ -410,7 +409,7 @@ shape = SubResource("ConcavePolygonShape3D_0e0pl")
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.2, 0)
stream = ExtResource("20_3rulp")
volume_db = -20.0
volume_db = -12.0
unit_size = 3.0
bus = &"SFX"
@ -418,7 +417,7 @@ bus = &"SFX"
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.2, 0)
stream = ExtResource("21_bmg36")
volume_db = -16.0
volume_db = -8.0
unit_size = 4.0
bus = &"SFX"

View File

@ -21,9 +21,11 @@ func reset() -> void:
Callable(open_switch, "enable").call()
Callable(close_switch, "disable").call()
var signal_test_scene: PackedScene = load("res://levels/mechanic_test/signal_test.tscn")
var prop_test_scene: PackedScene = load("res://levels/mechanic_test/prop_test.tscn")
var item_test_scene: PackedScene = load("res://levels/mechanic_test/item_test.tscn")
var signal_test_scene: PackedScene = _load_no_cache(
"res://levels/mechanic_test/signal_test.tscn"
)
var prop_test_scene: PackedScene = _load_no_cache("res://levels/mechanic_test/prop_test.tscn")
var item_test_scene: PackedScene = _load_no_cache("res://levels/mechanic_test/item_test.tscn")
_do_spawn(signal_test_spawn_point, signal_test_scene)
_do_spawn(prop_test_spawn_point, prop_test_scene)
_do_spawn(item_test_spawn_point, item_test_scene)
@ -36,13 +38,17 @@ func _do_spawn(spawn_point: Node3D, scene: PackedScene) -> void:
spawn_point.add_child(instance)
func _load_no_cache(path: StringName) -> Resource:
return ResourceLoader.load(path, "", ResourceLoader.CACHE_MODE_IGNORE)
func spawn_nodule() -> void:
var nodule_scene: PackedScene = load("res://src/world/gunk_node/grunk_nodule.tscn")
var nodule_scene: PackedScene = _load_no_cache("res://src/world/gunk_node/grunk_nodule.tscn")
_do_spawn(nodule_spawn_point, nodule_scene)
func spawn_alarm() -> void:
var alarm_scene: PackedScene = load("res://src/world/mechanics/alarm/gunk_alarm.tscn")
var alarm_scene: PackedScene = _load_no_cache("res://src/world/mechanics/alarm/gunk_alarm.tscn")
_do_spawn(alarm_spawn_point, alarm_scene)

View File

@ -1,14 +1,14 @@
[gd_scene load_steps=32 format=4 uid="uid://b8rv6dg4tgaeb"]
[gd_scene load_steps=35 format=4 uid="uid://b8rv6dg4tgaeb"]
[ext_resource type="Script" uid="uid://bvua1l2hb3an6" path="res://levels/mechanic_test/mechanic_test.gd" id="1_iyuyb"]
[ext_resource type="PackedScene" uid="uid://bwe2jdmvinhqd" path="res://src/player/player.tscn" id="2_qjnj2"]
[ext_resource type="PackedScene" uid="uid://b6eg8t04rkh0c" path="res://src/props/wall_switch/wall_switch.tscn" id="3_awnx0"]
[ext_resource type="Script" uid="uid://deg5xd87cy8rg" path="res://src/props/interactive.gd" id="4_qjnj2"]
[ext_resource type="Texture2D" uid="uid://8cm835h4gxwe" path="res://assets/debug_mask.png" id="5_aix42"]
[ext_resource type="Shader" uid="uid://ckxc0ngd37rtk" path="res://src/shaders/gunk.gdshader" id="6_6frcc"]
[ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="7_7cbja"]
[ext_resource type="PackedScene" uid="uid://cdi5sl60mw1po" path="res://src/world/gunkable/gunkable.tscn" id="8_awnx0"]
[ext_resource type="PackedScene" uid="uid://cubwniraol1qn" path="res://src/props/bulkhead/bulkhead.tscn" id="8_ujrcv"]
[ext_resource type="Script" uid="uid://co0g2klfmor48" path="res://src/world/gunkable/gunkable.gd" id="9_cgmn0"]
[ext_resource type="PackedScene" uid="uid://b5jubpjj3d277" path="res://levels/mechanic_test/signal_test.tscn" id="9_ix0jw"]
[ext_resource type="PackedScene" uid="uid://cfqirm2o3uo4k" path="res://levels/mechanic_test/prop_test.tscn" id="10_xrfi2"]
[ext_resource type="PackedScene" uid="uid://dbabcsp38wmid" path="res://levels/mechanic_test/item_test.tscn" id="11_8natv"]
@ -33,6 +33,17 @@ size = Vector3(0.5, 2, 0.5)
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_bg05n"]
data = PackedVector3Array(-0.25, 1, 0.25, 0.25, 1, 0.25, -0.25, -1, 0.25, 0.25, 1, 0.25, 0.25, -1, 0.25, -0.25, -1, 0.25, 0.25, 1, -0.25, -0.25, 1, -0.25, 0.25, -1, -0.25, -0.25, 1, -0.25, -0.25, -1, -0.25, 0.25, -1, -0.25, 0.25, 1, 0.25, 0.25, 1, -0.25, 0.25, -1, 0.25, 0.25, 1, -0.25, 0.25, -1, -0.25, 0.25, -1, 0.25, -0.25, 1, -0.25, -0.25, 1, 0.25, -0.25, -1, -0.25, -0.25, 1, 0.25, -0.25, -1, 0.25, -0.25, -1, -0.25, 0.25, 1, 0.25, -0.25, 1, 0.25, 0.25, 1, -0.25, -0.25, 1, 0.25, -0.25, 1, -0.25, 0.25, 1, -0.25, -0.25, -1, 0.25, 0.25, -1, 0.25, -0.25, -1, -0.25, 0.25, -1, 0.25, 0.25, -1, -0.25, -0.25, -1, -0.25)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ibd1t"]
albedo_color = Color(0.866667, 0.109804, 0.101961, 1)
[sub_resource type="SphereMesh" id="SphereMesh_awnx0"]
material = SubResource("StandardMaterial3D_ibd1t")
radius = 0.2
height = 0.4
[sub_resource type="SphereShape3D" id="SphereShape3D_cgmn0"]
radius = 0.25
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_2h3rs"]
load_path = "res://.godot/imported/hallway_2_C.png-368e035781dbfc292f80210e8377e1f9.ctex"
@ -181,9 +192,24 @@ mesh = SubResource("BoxMesh_goufh")
[node name="CollisionShape3D" type="CollisionShape3D" parent="NoduleSpawner"]
shape = SubResource("ConcavePolygonShape3D_bg05n")
[node name="WallSwitch" parent="NoduleSpawner" instance=ExtResource("3_awnx0")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
clean = true
[node name="ButtonMesh" type="MeshInstance3D" parent="NoduleSpawner"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.25)
mesh = SubResource("SphereMesh_awnx0")
skeleton = NodePath("")
[node name="InteractiveBody" type="StaticBody3D" parent="NoduleSpawner/ButtonMesh"]
collision_layer = 2
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="NoduleSpawner/ButtonMesh/InteractiveBody"]
shape = SubResource("SphereShape3D_cgmn0")
[node name="Interactive" type="Node" parent="NoduleSpawner/ButtonMesh/InteractiveBody"]
script = ExtResource("4_qjnj2")
enabled = true
label = "Level"
verb = "spawn nodule"
metadata/_custom_type_script = "uid://deg5xd87cy8rg"
[node name="Label3D" type="Label3D" parent="NoduleSpawner"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0.3)
@ -203,10 +229,6 @@ mesh = SubResource("BoxMesh_goufh")
[node name="CollisionShape3D" type="CollisionShape3D" parent="AlarmSpawner"]
shape = SubResource("ConcavePolygonShape3D_bg05n")
[node name="WallSwitch" parent="AlarmSpawner" instance=ExtResource("3_awnx0")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
clean = true
[node name="Label3D" type="Label3D" parent="AlarmSpawner"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0.3)
text = "Spawn
@ -216,6 +238,25 @@ Alarm"
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.7, -4)
[node name="ButtonMesh" type="MeshInstance3D" parent="AlarmSpawner"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.25)
mesh = SubResource("SphereMesh_awnx0")
skeleton = NodePath("")
[node name="InteractiveBody" type="StaticBody3D" parent="AlarmSpawner/ButtonMesh"]
collision_layer = 2
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="AlarmSpawner/ButtonMesh/InteractiveBody"]
shape = SubResource("SphereShape3D_cgmn0")
[node name="Interactive" type="Node" parent="AlarmSpawner/ButtonMesh/InteractiveBody"]
script = ExtResource("4_qjnj2")
enabled = true
label = "Level"
verb = "spawn alarm"
metadata/_custom_type_script = "uid://deg5xd87cy8rg"
[node name="AlarmTrigger" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.5, 1, -6)
@ -225,14 +266,29 @@ mesh = SubResource("BoxMesh_goufh")
[node name="CollisionShape3D" type="CollisionShape3D" parent="AlarmTrigger"]
shape = SubResource("ConcavePolygonShape3D_bg05n")
[node name="AlarmTriggerSwitch" parent="AlarmTrigger" instance=ExtResource("3_awnx0")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
clean = true
[node name="Label3D" type="Label3D" parent="AlarmTrigger"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0.3)
text = "Trigger"
[node name="ButtonMesh" type="MeshInstance3D" parent="AlarmTrigger"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.25)
mesh = SubResource("SphereMesh_awnx0")
skeleton = NodePath("")
[node name="InteractiveBody" type="StaticBody3D" parent="AlarmTrigger/ButtonMesh"]
collision_layer = 2
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="AlarmTrigger/ButtonMesh/InteractiveBody"]
shape = SubResource("SphereShape3D_cgmn0")
[node name="Interactive" type="Node" parent="AlarmTrigger/ButtonMesh/InteractiveBody"]
script = ExtResource("4_qjnj2")
enabled = true
label = "Level"
verb = "trigger alarm"
metadata/_custom_type_script = "uid://deg5xd87cy8rg"
[node name="GunkHall" type="MeshInstance3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, -31)
mesh = SubResource("ArrayMesh_x2vho")
@ -245,14 +301,12 @@ collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="GunkHall/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_qjnj2")
[node name="Gunkable" type="Node" parent="GunkHall/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") groups=["Persistent"] instance=ExtResource("8_awnx0")]
[node name="Gunkable" parent="GunkHall/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("8_awnx0")]
unique_name_in_owner = true
script = ExtResource("9_cgmn0")
body = NodePath("..")
mesh_instance = NodePath("../..")
initial_mask = ExtResource("5_aix42")
source_gunk_material = SubResource("ShaderMaterial_aix42")
metadata/_custom_type_script = "uid://co0g2klfmor48"
[node name="Bulkhead" parent="." instance=ExtResource("8_ujrcv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.5, 0, -2)
@ -313,9 +367,9 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13, 0, -2)
[node name="ItemTest" parent="ItemTestSpawnPoint" instance=ExtResource("11_8natv")]
[connection signal="activated" from="ResetPodium/ResetSwitch" to="." method="reset"]
[connection signal="activated" from="NoduleSpawner/WallSwitch" to="." method="spawn_nodule"]
[connection signal="activated" from="AlarmSpawner/WallSwitch" to="." method="spawn_alarm"]
[connection signal="activated" from="AlarmTrigger/AlarmTriggerSwitch" to="." method="trigger_spawned_alarm"]
[connection signal="activated" from="NoduleSpawner/ButtonMesh/InteractiveBody/Interactive" to="." method="spawn_nodule"]
[connection signal="activated" from="AlarmSpawner/ButtonMesh/InteractiveBody/Interactive" to="." method="spawn_alarm"]
[connection signal="activated" from="AlarmTrigger/ButtonMesh/InteractiveBody/Interactive" to="." method="trigger_spawned_alarm"]
[connection signal="activated" from="Bulkhead/Podium/OpenSwitch" to="Bulkhead" method="open"]
[connection signal="activated" from="Bulkhead/Podium/OpenSwitch" to="Bulkhead/Podium/OpenSwitch" method="disable"]
[connection signal="activated" from="Bulkhead/Podium/OpenSwitch" to="Bulkhead/Podium2/CloseSwitch" method="enable"]

View File

@ -61,11 +61,11 @@ texture_filter = 2
[sub_resource type="BoxShape3D" id="BoxShape3D_ibd1t"]
size = Vector3(2.35, 3.1, 1.5)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ibd1t"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hb05j"]
albedo_color = Color(0.866667, 0.109804, 0.101961, 1)
[sub_resource type="SphereMesh" id="SphereMesh_ibd1t"]
material = SubResource("StandardMaterial3D_ibd1t")
material = SubResource("StandardMaterial3D_hb05j")
radius = 0.2
height = 0.4

View File

@ -1,7 +1,7 @@
class_name GrunkSplatter extends GPUParticles3D
## Splatter effect with adjustable volume
const BASE_VOLUME := -12.0
const BASE_VOLUME := -4.0
const SCALE_FACTOR := 4.0
const SCENE := preload("res://src/effects/grunk_splatter/grunk_splatter.tscn")

View File

@ -141,11 +141,12 @@ point_count = 2
curve = SubResource("Curve_opa8j")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_opa8j"]
lifetime_randomness = 0.5
angle_min = -184.7
angle_max = 239.3
direction = Vector3(0, 0, -1)
spread = 90.0
initial_velocity_min = 5.0
spread = 180.0
initial_velocity_min = 4.0
initial_velocity_max = 5.0
angular_velocity_min = -360.0
angular_velocity_max = 360.0
@ -193,7 +194,7 @@ autostart = true
[node name="SplatterSFX" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
stream = SubResource("AudioStreamRandomizer_6adkd")
volume_db = -12.0
volume_db = -3.0
unit_size = 6.0
autoplay = true
bus = &"SFX"
@ -211,10 +212,11 @@ shape = SubResource("SphereShape3D_6adkd")
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0)
emitting = false
amount = 64
amount = 512
lifetime = 1.2
one_shot = true
explosiveness = 0.9
randomness = 1.0
process_material = SubResource("ParticleProcessMaterial_opa8j")
[connection signal="ready" from="." to="SplatterSFX" method="play"]

View File

@ -66,6 +66,7 @@ transform = Transform3D(1, 0, 0, 0, 0.997564, -0.0697565, 0, 0.0697565, 0.997564
unique_name_in_owner = true
target_position = Vector3(0, 0, -3)
parent_tool = NodePath("../..")
dust_emission_scale = 0.03
[node name="SpraySFX" parent="Muzzle/LaserCast" instance=ExtResource("3_5h54c")]
unique_name_in_owner = true

View File

@ -182,21 +182,21 @@ unique_name_in_owner = true
[node name="LaserCast" parent="Muzzle/Pivot/SprayCasts" node_paths=PackedStringArray("parent_tool") instance=ExtResource("3_xahet")]
target_position = Vector3(-0.5, 0, -2)
parent_tool = NodePath("../../../..")
dust_emission_scale = 0.01
dust_emission_scale = 0.005
[node name="LaserCast2" parent="Muzzle/Pivot/SprayCasts" node_paths=PackedStringArray("parent_tool") instance=ExtResource("3_xahet")]
target_position = Vector3(-0.333, 0, -2)
parent_tool = NodePath("../../../..")
dust_emission_scale = 0.01
dust_emission_scale = 0.005
[node name="LaserCast3" parent="Muzzle/Pivot/SprayCasts" node_paths=PackedStringArray("parent_tool") instance=ExtResource("3_xahet")]
target_position = Vector3(-0.167, 0, -2)
parent_tool = NodePath("../../../..")
dust_emission_scale = 0.01
dust_emission_scale = 0.005
[node name="LaserCast4" parent="Muzzle/Pivot/SprayCasts" node_paths=PackedStringArray("parent_tool") instance=ExtResource("3_xahet")]
parent_tool = NodePath("../../../..")
dust_emission_scale = 0.01
dust_emission_scale = 0.005
[node name="SpraySFX" parent="Muzzle/Pivot/SprayCasts/LaserCast4" instance=ExtResource("3_v0jnx")]
unique_name_in_owner = true
@ -205,17 +205,17 @@ attenuation_model = 0
[node name="LaserCast5" parent="Muzzle/Pivot/SprayCasts" node_paths=PackedStringArray("parent_tool") instance=ExtResource("3_xahet")]
target_position = Vector3(0.167, 0, -2)
parent_tool = NodePath("../../../..")
dust_emission_scale = 0.01
dust_emission_scale = 0.005
[node name="LaserCast6" parent="Muzzle/Pivot/SprayCasts" node_paths=PackedStringArray("parent_tool") instance=ExtResource("3_xahet")]
target_position = Vector3(0.333, 0, -2)
parent_tool = NodePath("../../../..")
dust_emission_scale = 0.01
dust_emission_scale = 0.005
[node name="LaserCast7" parent="Muzzle/Pivot/SprayCasts" node_paths=PackedStringArray("parent_tool") instance=ExtResource("3_xahet")]
target_position = Vector3(0.5, 0, -2)
parent_tool = NodePath("../../../..")
dust_emission_scale = 0.01
dust_emission_scale = 0.005
[node name="SprayEffect" type="MeshInstance3D" parent="Muzzle/Pivot"]
unique_name_in_owner = true

View File

@ -64,4 +64,14 @@ func write() -> void:
print_debug("Writing settings to ", settings_file)
ProjectSettings.save_custom(settings_file)
print_debug("Writing audio bus levels to ", audio_bus_file)
# Write a bus layout with all effects removed
var base_layout := AudioServer.generate_bus_layout()
_strip_bus_effects()
ResourceSaver.save(AudioServer.generate_bus_layout(), audio_bus_file)
AudioServer.set_bus_layout(base_layout)
func _strip_bus_effects() -> void:
for bus_idx: int in AudioServer.bus_count:
for fx_idx: int in AudioServer.get_bus_effect_count(bus_idx):
AudioServer.remove_bus_effect(bus_idx, fx_idx)

View File

@ -13,37 +13,37 @@ script = ExtResource("1_xjjma")
[node name="Confirm" type="AudioStreamPlayer" parent="."]
unique_name_in_owner = true
stream = ExtResource("2_xjjma")
volume_db = -20.0
volume_db = -2.0
bus = &"SFX"
[node name="Accept" type="AudioStreamPlayer" parent="."]
unique_name_in_owner = true
stream = ExtResource("3_xl3ms")
volume_db = -20.0
volume_db = -2.0
bus = &"SFX"
[node name="Forward" type="AudioStreamPlayer" parent="."]
unique_name_in_owner = true
stream = ExtResource("3_xjjma")
volume_db = -20.0
volume_db = -2.0
pitch_scale = 0.7
bus = &"SFX"
[node name="Back" type="AudioStreamPlayer" parent="."]
unique_name_in_owner = true
stream = ExtResource("3_xjjma")
volume_db = -20.0
volume_db = -2.0
bus = &"SFX"
[node name="Bonk" type="AudioStreamPlayer" parent="."]
unique_name_in_owner = true
stream = ExtResource("4_ywyuo")
volume_db = -16.0
volume_db = -5.0
pitch_scale = 1.1
bus = &"SFX"
[node name="Bloop" type="AudioStreamPlayer" parent="."]
unique_name_in_owner = true
stream = ExtResource("6_ywyuo")
volume_db = -20.0
volume_db = -4.0
bus = &"SFX"

View File

@ -728,16 +728,18 @@ script = ExtResource("9_l271a")
[node name="Metal" type="AudioStreamPlayer3D" parent="FootstepController/LeftFoot"]
stream = SubResource("AudioStreamRandomizer_8ydov")
volume_db = -42.0
volume_db = -30.0
unit_size = 18.0
bus = &"SFX"
[node name="Grunk" type="AudioStreamPlayer3D" parent="FootstepController/LeftFoot"]
stream = SubResource("AudioStreamRandomizer_wcxbk")
unit_size = 24.0
bus = &"SFX"
[node name="Plastic" type="AudioStreamPlayer3D" parent="FootstepController/LeftFoot"]
stream = SubResource("AudioStreamRandomizer_o04tx")
volume_db = -24.0
unit_size = 16.0
bus = &"SFX"
[node name="RightFoot" type="Node3D" parent="FootstepController"]
@ -747,17 +749,19 @@ script = ExtResource("9_l271a")
[node name="Metal" type="AudioStreamPlayer3D" parent="FootstepController/RightFoot"]
stream = SubResource("AudioStreamRandomizer_ylhto")
volume_db = -42.0
volume_db = -30.0
unit_size = 18.0
bus = &"SFX"
[node name="Grunk" type="AudioStreamPlayer3D" parent="FootstepController/RightFoot"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.8, 0, 0)
stream = SubResource("AudioStreamRandomizer_p6grl")
unit_size = 24.0
bus = &"SFX"
[node name="Plastic" type="AudioStreamPlayer3D" parent="FootstepController/RightFoot"]
stream = SubResource("AudioStreamRandomizer_e7e1q")
volume_db = -24.0
unit_size = 16.0
bus = &"SFX"
[node name="FootCast" type="RayCast3D" parent="FootstepController"]
@ -829,5 +833,4 @@ tutorial_key = &"game/tutorial/progress/move"
[node name="ToolSwitchSFX" type="AudioStreamPlayer" parent="."]
unique_name_in_owner = true
stream = ExtResource("39_gsylq")
volume_db = -12.0
pitch_scale = 1.8

View File

@ -317,7 +317,6 @@ shape = SubResource("ConcavePolygonShape3D_w7oba")
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.9, 0)
stream = ExtResource("5_4jho1")
volume_db = -10.0
[node name="Ramp" type="StaticBody3D" parent="." index="4" groups=["MetalMaterial"]]
@ -364,7 +363,7 @@ libraries = {
[node name="DustSFX" type="AudioStreamPlayer3D" parent="Dust" index="5"]
stream = ExtResource("7_4jho1")
volume_db = -24.0
volume_db = -14.0
[node name="NavLink" type="NavigationLink3D" parent="." index="6"]
unique_name_in_owner = true

View File

@ -228,7 +228,7 @@ mesh = SubResource("BoxMesh_a6hjm")
[node name="SuccessSFX" type="AudioStreamPlayer3D" parent="Lights/SuccessLight" index="0"]
stream = ExtResource("11_7shuc")
volume_db = -16.0
volume_db = -9.0
unit_size = 4.0
bus = &"SFX"

View File

@ -410,7 +410,6 @@ libraries = {
[node name="TankAlertBonkSFX" type="AudioStreamPlayer" parent="AlertHUD/TankAlert"]
stream = ExtResource("7_bu2tv")
volume_db = -8.0
bus = &"SFX"
[node name="GrunkAlert" type="Control" parent="AlertHUD"]
@ -459,10 +458,10 @@ anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -19.0295
offset_top = -20.3157
offset_right = -19.0295
offset_bottom = -20.3157
offset_left = -20.2593
offset_top = -19.6536
offset_right = -20.2593
offset_bottom = -19.6536
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("4_ud8na")

View File

@ -1,7 +1,7 @@
class_name VolumeSlider extends VBoxContainer
## Input element for adjusting the volume of a single bus.
const VOLUME_FACTOR := 50.0
const VOLUME_FACTOR := 100.0
@export var bus_idx: int

View File

@ -32,6 +32,7 @@ unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 1
size_flags_vertical = 3
max_value = 200.0
step = 0.1
[node name="DigitalDisplay" type="HBoxContainer" parent="."]
@ -41,6 +42,7 @@ size_flags_horizontal = 4
[node name="SpinBox" type="SpinBox" parent="DigitalDisplay"]
unique_name_in_owner = true
layout_mode = 2
max_value = 200.0
step = 0.1
alignment = 2
suffix = "%"
@ -48,7 +50,7 @@ suffix = "%"
[node name="AudioDemo" type="AudioStreamPlayer" parent="."]
unique_name_in_owner = true
stream = ExtResource("3_y4yh3")
volume_db = -20.0
volume_db = -2.0
[connection signal="drag_ended" from="Slider" to="." method="_on_slider_drag_ended"]
[connection signal="value_changed" from="Slider" to="." method="_on_component_value_changed"]

View File

@ -607,7 +607,7 @@ tracks/22/keys = {
"times": PackedFloat32Array(6.15, 10),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [-40.0, -10.0]
"values": [-40.0, 0.0]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_3qdtd"]
@ -841,14 +841,14 @@ autoplay = "display"
[node name="TitleSFX" type="AudioStreamPlayer" parent="TitleScreenContent"]
unique_name_in_owner = true
volume_db = -20.0
volume_db = -10.0
bus = &"SFX"
[node name="TitleDrone" type="AudioStreamPlayer" parent="TitleScreenContent"]
unique_name_in_owner = true
stream = ExtResource("11_gdkv4")
volume_db = -40.0
bus = &"Music"
bus = &"Ambient"
[node name="SettingsContainer" type="Control" parent="."]
unique_name_in_owner = true

View File

@ -37,7 +37,7 @@ shape = SubResource("ConcavePolygonShape3D_530fq")
[node name="ChitterSFX" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
stream = SubResource("AudioStreamRandomizer_yg8lg")
volume_db = -14.0
volume_db = -8.0
unit_size = 1.5
panning_strength = 3.0
bus = &"SFX"

View File

@ -6,7 +6,7 @@
[ext_resource type="Material" uid="uid://bmab6i16v748m" path="res://assets/materials/grunk_jittery.material" id="3_g4yos"]
[ext_resource type="Script" uid="uid://b274q7uvn0cvp" path="res://src/ui/rumbler_3d.gd" id="3_vokcn"]
[ext_resource type="Material" uid="uid://cdpvcruywnp4x" path="res://assets/grunk/alarm/alarm_core.material" id="5_6vdvf"]
[ext_resource type="AudioStream" uid="uid://ypk1d4adrcs" path="res://assets/sfx/grunk/alarm_screech.wav" id="6_6vdvf"]
[ext_resource type="AudioStream" uid="uid://6yo1n0l1jgok" path="res://assets/sfx/grunk/alarm_screech.wav" id="6_6vdvf"]
[sub_resource type="SphereMesh" id="SphereMesh_b6er8"]
radius = 0.285

View File

@ -132,7 +132,7 @@ speed_scale = 4.0
[node name="HeartbeatSFX" type="AudioStreamPlayer3D" parent="."]
stream = ExtResource("3_eu6st")
unit_size = 0.4
unit_size = 1.0
bus = &"SFX"
[connection signal="timeout" from="PulseTimer" to="." method="pulse"]

View File

@ -4,7 +4,7 @@
[ext_resource type="Resource" uid="uid://tgac5tnfx56r" path="res://src/world/world_manager.tres" id="2_5kmgb"]
[ext_resource type="PackedScene" uid="uid://byvjsvavbg5xe" path="res://src/ui/menus/pause_menu/pause_menu.tscn" id="2_6fy3g"]
[ext_resource type="Resource" uid="uid://0i72bf8ip1lx" path="res://src/world/spook_manager.tres" id="3_l0av5"]
[ext_resource type="PackedScene" uid="uid://dc4tts6342cuj" path="res://levels/prop_test/prop_test.tscn" id="4_5kmgb"]
[ext_resource type="PackedScene" uid="uid://b8rv6dg4tgaeb" path="res://levels/mechanic_test/mechanic_test.tscn" id="4_5kmgb"]
[ext_resource type="PackedScene" uid="uid://c0uitm5cg88h1" path="res://src/ui/menus/kill_screen/kill_screen.tscn" id="6_l0av5"]
[ext_resource type="PackedScene" uid="uid://brknr57xc2cp0" path="res://src/ui/elements/save_icon/save_icon.tscn" id="7_5kmgb"]