diff --git a/Assets/156507__primeval_polypod__door_open_close.wav b/Assets/156507__primeval_polypod__door_open_close.wav new file mode 100644 index 0000000..c795e22 Binary files /dev/null and b/Assets/156507__primeval_polypod__door_open_close.wav differ diff --git a/Assets/156507__primeval_polypod__door_open_close.wav.import b/Assets/156507__primeval_polypod__door_open_close.wav.import new file mode 100644 index 0000000..7d2c609 --- /dev/null +++ b/Assets/156507__primeval_polypod__door_open_close.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cd3h2gf2qth34" +path="res://.godot/imported/156507__primeval_polypod__door_open_close.wav-d27940f9c9e02677d6d4377bcc41a08a.sample" + +[deps] + +source_file="res://Assets/156507__primeval_polypod__door_open_close.wav" +dest_files=["res://.godot/imported/156507__primeval_polypod__door_open_close.wav-d27940f9c9e02677d6d4377bcc41a08a.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/Assets/511505__hawkbe__fuzzy_powerdown.wav b/Assets/511505__hawkbe__fuzzy_powerdown.wav new file mode 100644 index 0000000..4e11345 Binary files /dev/null and b/Assets/511505__hawkbe__fuzzy_powerdown.wav differ diff --git a/Assets/511505__hawkbe__fuzzy_powerdown.wav.import b/Assets/511505__hawkbe__fuzzy_powerdown.wav.import new file mode 100644 index 0000000..aee110e --- /dev/null +++ b/Assets/511505__hawkbe__fuzzy_powerdown.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cdg0f2rdu5gib" +path="res://.godot/imported/511505__hawkbe__fuzzy_powerdown.wav-06ff7934152a2ef05e39e4b4e283df96.sample" + +[deps] + +source_file="res://Assets/511505__hawkbe__fuzzy_powerdown.wav" +dest_files=["res://.godot/imported/511505__hawkbe__fuzzy_powerdown.wav-06ff7934152a2ef05e39e4b4e283df96.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/Assets/switch9.wav b/Assets/switch9.wav new file mode 100644 index 0000000..a3cccae Binary files /dev/null and b/Assets/switch9.wav differ diff --git a/Assets/switch9.wav.import b/Assets/switch9.wav.import new file mode 100644 index 0000000..3fcdd5d --- /dev/null +++ b/Assets/switch9.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://ch68tc5nh3flo" +path="res://.godot/imported/switch9.wav-a434722b6eb43db6d96ea69d5fa26afc.sample" + +[deps] + +source_file="res://Assets/switch9.wav" +dest_files=["res://.godot/imported/switch9.wav-a434722b6eb43db6d96ea69d5fa26afc.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/Levels/StartingRoom.tscn b/Levels/StartingRoom.tscn index 9f51051..ece69f9 100644 --- a/Levels/StartingRoom.tscn +++ b/Levels/StartingRoom.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=23 format=3 uid="uid://bojbawyoy11i4"] +[gd_scene load_steps=25 format=3 uid="uid://bojbawyoy11i4"] [ext_resource type="Script" path="res://Scripts/ChronoManager.gd" id="1_5b2rd"] [ext_resource type="Material" uid="uid://cr4ra7ijk1uec" path="res://Assets/Materials/floor.tres" id="2_0aj3l"] @@ -13,7 +13,9 @@ [ext_resource type="Texture2D" uid="uid://dx8s88cut5kka" path="res://Commands/haste_new.png" id="12_3c4u7"] [ext_resource type="AudioStream" uid="uid://jm6vo1vxrlyx" path="res://Assets/62986__radian__chime-0011.wav" id="12_bm4h4"] [ext_resource type="PackedScene" uid="uid://cy5g1lkvw2fxs" path="res://sign.tscn" id="14_m7cxt"] +[ext_resource type="AudioStream" uid="uid://cd3h2gf2qth34" path="res://Assets/156507__primeval_polypod__door_open_close.wav" id="15_a0olp"] [ext_resource type="Texture2D" uid="uid://dc23iehev1s8w" path="res://Assets/Textures/crystal_wall_2.png" id="15_t0vv6"] +[ext_resource type="AudioStream" uid="uid://cdg0f2rdu5gib" path="res://Assets/511505__hawkbe__fuzzy_powerdown.wav" id="16_tm6cb"] [sub_resource type="Environment" id="Environment_u27ip"] background_mode = 1 @@ -60,18 +62,20 @@ size = Vector3(1, 2, 1.001) [sub_resource type="BoxShape3D" id="BoxShape3D_jvb5m"] size = Vector3(1, 2, 1) -[node name="ChronoManager" type="Node3D" node_paths=PackedStringArray("gui", "pedstalContainer", "chime_player", "world_env", "player", "player_spawn", "left_door", "right_door")] +[node name="ChronoManager" type="Node3D" node_paths=PackedStringArray("gui", "pedstalContainer", "chime_player", "door_player", "world_env", "player", "player_spawn", "left_door", "right_door", "fail_sound_player")] script = ExtResource("1_5b2rd") pedestal_off_mat = ExtResource("2_0aj3l") pedestal_on_mat = ExtResource("3_mnhg8") gui = NodePath("Gui") pedstalContainer = NodePath("Pedestals") chime_player = NodePath("AudioStreamPlayer") +door_player = NodePath("doorSound") world_env = NodePath("WorldEnvironment") player = NodePath("Player") player_spawn = NodePath("PlayerStartPos") left_door = NodePath("DoorLeft") right_door = NodePath("DoorRight") +fail_sound_player = NodePath("fail_sound_player") [node name="Player" parent="." instance=ExtResource("2_hsi55")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.12895, 0) @@ -236,6 +240,14 @@ shape = SubResource("BoxShape3D_jvb5m") transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 1.5, -1.5) sign_text = "Back to Menu" +[node name="doorSound" type="AudioStreamPlayer" parent="."] +stream = ExtResource("15_a0olp") +volume_db = -30.0 +pitch_scale = 1.2 + +[node name="fail_sound_player" type="AudioStreamPlayer" parent="."] +stream = ExtResource("16_tm6cb") + [connection signal="broadcast" from="." to="Player" method="_on_chrono_manager_broadcast"] [connection signal="tick" from="." to="Player" method="_on_chrono_manager_tick"] [connection signal="object_clicked" from="Player" to="." method="_on_player_object_clicked"] diff --git a/README.md b/README.md index 13964fd..7786e89 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ Puzzle game made by Tom for the Playmakers August Jam 2024 # Credits - Dungeon Crawl Stone Soup - all textures - https://freesound.org/people/radian/sounds/62986/ - Command chime sound +https://freesound.org/people/primeval_polypod/sounds/156507/ # TODO - [x] FPS Controller @@ -26,13 +27,13 @@ Puzzle game made by Tom for the Playmakers August Jam 2024 - [ ] itch.io page - [x] kill blocks - resets level if player touches them - [x] door, starting level button -- [ ] Sounds - - [ ] Press button - - [ ] Level lose - - [ ] doors open +- [x] Sounds + - [x] Press button + - [x] Level lose + - [x] doors open - [x] tick chime - - [ ] take/place/drop block - - [ ] per command sounds? + - [x] take/place/drop block + - [-] per command sounds? @@ -46,4 +47,4 @@ Puzzle game made by Tom for the Playmakers August Jam 2024 ## BUGS - [x] cant place command block in pedestals which ahs already had one - [x] cammoand blocks can be lost by falling out of world -- [ ] movement(+camera?) is framerate dependant +- [?] movement(+camera?) is framerate dependant diff --git a/Scripts/ChronoManager.gd b/Scripts/ChronoManager.gd index 6fc664b..dee854f 100644 --- a/Scripts/ChronoManager.gd +++ b/Scripts/ChronoManager.gd @@ -26,11 +26,13 @@ var door_timer : float = 0 var pedestals : Array[Pedestal] @export var pedstalContainer : Node3D @export var chime_player : AudioStreamPlayer +@export var door_player :AudioStreamPlayer @export var world_env : WorldEnvironment @export var player : CharacterBody3D @export var player_spawn : Node3D @export var left_door : Node3D @export var right_door : Node3D +@export var fail_sound_player : AudioStreamPlayer # Called when the node enters the scene tree for the first time. func _ready(): @@ -124,6 +126,8 @@ func start_room(): func fail_room(): print("ROOM FAILED") + if not failed: + fail_sound_player.play(18.0) room_started = false player.process_mode = Node.PROCESS_MODE_DISABLED failed = true @@ -173,7 +177,9 @@ func open_termimal(): func _on_player_object_clicked(object): if(object.name == "StartButton"): - start_room() + if not room_started: + door_player.play() + start_room() if(object.name == "MenuButton"): get_tree().change_scene_to_file(GameManager.menu_scene_path) diff --git a/Scripts/Player.gd b/Scripts/Player.gd index 925866b..84b5cc0 100644 --- a/Scripts/Player.gd +++ b/Scripts/Player.gd @@ -9,6 +9,7 @@ extends CharacterBody3D @export var hand : Node3D @export var collider : CollisionShape3D @export var area : Area3D +@export var interact_sound : AudioStreamPlayer signal object_clicked(object : Node3D) @@ -62,6 +63,8 @@ func _physics_process(delta): held_object.freeze = true held_object.collider.disabled = true has_object = true + interact_sound.pitch_scale = randf_range(0.8,1.2) + interact_sound.play() elif "placed_command" in raycast.get_collider(): # clicked a pedestal, place on pedestal if its not already got something var clicked_pedestal = raycast.get_collider() as Pedestal @@ -75,6 +78,8 @@ func _physics_process(delta): has_object = false clicked_pedestal.has_command = true clicked_pedestal.placed_command = held_object + interact_sound.pitch_scale = randf_range(0.8,1.2) + interact_sound.play() else: print(raycast.get_collider().name) object_clicked.emit(raycast.get_collider()) diff --git a/export_presets.cfg b/export_presets.cfg new file mode 100644 index 0000000..bac1006 --- /dev/null +++ b/export_presets.cfg @@ -0,0 +1,140 @@ +[preset.0] + +name="Linux/X11" +platform="Linux/X11" +runnable=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../../Exports/ChronoChamber/Linux/ChronoChamber.x86_64" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +binary_format/embed_pck=true +texture_format/bptc=true +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false +binary_format/architecture="x86_64" +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="#!/usr/bin/env bash +export DISPLAY=:0 +unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\" +\"{temp_dir}/{exe_name}\" {cmd_args}" +ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash +kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\") +rm -rf \"{temp_dir}\"" + +[preset.1] + +name="Windows Desktop" +platform="Windows Desktop" +runnable=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../../Exports/ChronoChamber/Windows/ChronoChamber.exe" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false + +[preset.1.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +binary_format/embed_pck=true +texture_format/bptc=true +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false +binary_format/architecture="x86_64" +codesign/enable=false +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PackedStringArray() +application/modify_resources=true +application/icon="" +application/console_wrapper_icon="" +application/icon_interpolation=4 +application/file_version="" +application/product_version="" +application/company_name="" +application/product_name="" +application/file_description="" +application/copyright="" +application/trademarks="" +application/export_angle=0 +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}' +$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}' +$trigger = New-ScheduledTaskTrigger -Once -At 00:00 +$settings = New-ScheduledTaskSettingsSet +$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings +Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true +Start-ScheduledTask -TaskName godot_remote_debug +while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 } +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue" +ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue +Remove-Item -Recurse -Force '{temp_dir}'" + +[preset.2] + +name="Web" +platform="Web" +runnable=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../../Exports/ChronoChamber/Web/index.html" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false + +[preset.2.options] + +custom_template/debug="" +custom_template/release="" +variant/extensions_support=false +vram_texture_compression/for_desktop=true +vram_texture_compression/for_mobile=false +html/export_icon=true +html/custom_html_shell="" +html/head_include="" +html/canvas_resize_policy=2 +html/focus_canvas_on_start=true +html/experimental_virtual_keyboard=false +progressive_web_app/enabled=false +progressive_web_app/offline_page="" +progressive_web_app/display=1 +progressive_web_app/orientation=0 +progressive_web_app/icon_144x144="" +progressive_web_app/icon_180x180="" +progressive_web_app/icon_512x512="" +progressive_web_app/background_color=Color(0, 0, 0, 1) diff --git a/menu.tscn b/menu.tscn index 2ef5745..957607d 100644 --- a/menu.tscn +++ b/menu.tscn @@ -75,7 +75,10 @@ text = "Programming and Game Design: [url=https://clevertop.dev]Tom Howarth[/url Created for the [url=https://itch.io/jam/playmakers-august-game-jam]August 2024 Game Jam[/url] hosted by Playmakers! - Themes: 3D, Puzzle Textures: [url=https://opengameart.org/content/dungeon-crawl-32x32-tiles]Dungeon Crawl Stone Soup[/url] -Command Chime Sounds: [url=https://freesound.org/people/radian/sounds/62986/]Chime 0011.wav by radian[/url]" +Command Chime Sounds: [url=https://freesound.org/people/radian/sounds/62986/]Chime 0011.wav by radian[/url] +Door Open Sound: [url=https://freesound.org/people/primeval_polypod/sounds/156507/]door_open_close by primeval polypod[/url] +Interact Sounds: [url=https://opengameart.org/content/51-ui-sound-effects-buttons-switches-and-clicks]UI SFX set by Kenny[/url] +Lose Sound: [url=https://freesound.org/people/hawkbe/sounds/511505/]Fuzzy powerdown by hawkbe[/url]" [node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/PanelContainer/ScrollContainer"] layout_mode = 2 diff --git a/player.tscn b/player.tscn index 199421f..d652cf9 100644 --- a/player.tscn +++ b/player.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=5 format=3 uid="uid://d34smep2ukq7w"] +[gd_scene load_steps=6 format=3 uid="uid://d34smep2ukq7w"] [ext_resource type="Script" path="res://Scripts/Player.gd" id="1_tc5d2"] +[ext_resource type="AudioStream" uid="uid://ch68tc5nh3flo" path="res://Assets/switch9.wav" id="2_u5wue"] [sub_resource type="CapsuleMesh" id="CapsuleMesh_5q2rg"] @@ -12,7 +13,7 @@ height = 1.9 radius = 0.47 height = 1.9 -[node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("camera", "raycast", "hand", "collider", "area", "dash_node")] +[node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("camera", "raycast", "hand", "collider", "area", "interact_sound", "dash_node")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.83982, 0) script = ExtResource("1_tc5d2") camera = NodePath("Camera3D") @@ -20,6 +21,7 @@ raycast = NodePath("Camera3D/RayCast3D") hand = NodePath("Camera3D/hand") collider = NodePath("CollisionShape3D") area = NodePath("Area3D") +interact_sound = NodePath("interactSound") dash_node = NodePath("Camera3D/DashDirection") [node name="MeshInstance3D2" type="MeshInstance3D" parent="."] @@ -47,3 +49,7 @@ shape = SubResource("CapsuleShape3D_a6eig") [node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D"] shape = SubResource("CapsuleShape3D_cfrhy") + +[node name="interactSound" type="AudioStreamPlayer" parent="."] +stream = ExtResource("2_u5wue") +volume_db = -10.0 diff --git a/project.godot b/project.godot index 7118881..075b919 100644 --- a/project.godot +++ b/project.godot @@ -13,7 +13,7 @@ config_version=5 config/name="Chrono Chamber" run/main_scene="res://menu.tscn" config/features=PackedStringArray("4.2", "Forward Plus") -config/icon="res://icon.svg" +config/icon="res://Assets/Textures/cobalt_stone_4.png" [autoload]