#+title: Section 03 - Lesson 16, 17 | Game Over, Sound End Game #+HTML_HEAD: * Links - [[../../toc.org][TOC - Godot Notes]] - [[https://www.udemy.com/course/jumpstart-to-2d-game-development-godot-4-for-beginners/learn/lecture/45070491#announcements][S03:L27.16 - Game Over]] - [[https://www.udemy.com/course/jumpstart-to-2d-game-development-godot-4-for-beginners/learn/lecture/45070493#announcements][S03:L28.17 - Sound / End of Game]] * Notes ** stopping the game 1. create a function that handles all cleanup 1. stop the timer - drag + CMD and drop Timer to create a reference - timer.stop 2. set all node children process to false - Node function =get_children= will get them all3 - iterate through them and =set_process(false)= ** sound *** import pane - the scene panel on the upper left has an Import pane #+ATTR_HTML: :width 600px file:../../../_share/media/albert/img/section03/S03_L16_E01.png - this allows you to see details of items in the filesystem #+ATTR_HTML: :width 400px file:../../../_share/media/albert/img/section03/S03_L16_E03.png *** changing details of imported items 1. make whatever changes you want, e.g. turn on "Loop" 2. then click the Reimport button #+ATTR_HTML: :width 400px file:../../../_share/media/albert/img/section03/S03_L16_E04.png *** audio nodes - Node->Node2D->AudioListener2D - overrides location sounds are heard from - Node->Node2D->AudioStreamPlayer2D - plays positionnal sound in 2D space - Node->AudioStreamPlayer - simple audio player - Playing: plays in the *GAME EDITOR* - Autoplay: plays as soon as it is loaded into the scene tree *** create background music - add new Audio node to the scene panel on the Game scene - use AudioStreamPlayer bc we don't care about position - drag the audio file into Audio node->Inspector->AudioStreamPLayer->Stream #+ATTR_HTML: :width 600px file:../../../_share/media/albert/img/section03/S03_L16_E05.png - you'll be able to see it when it's loaded #+ATTR_HTML: :width 600px file:../../../_share/media/albert/img/section03/S03_L16_E06.png - set Autoplay to "ON" *** add effects - use AudioStreamPlayer2D bc it has positioning - CMD+drag the AudioStreamPlayer2D node to the game.gd script so we can play it - call the effect when something happens (e.g. a gem hits the panel) - find the position of where the even happens "area.position" #+BEGIN_SRC gdscript audio_stream_player_2d.position = area.position audio_stream_player_2d.play() #+END_SRC *** add game over sound - first make sure no other sound such as effects sounds are playing. - call "stop()" on all such nodes #+BEGIN_SRC gdscript audio_stream_player_2d.stop() #+END_SRC - load the game over sounds using "preload" - CMD+drag the sound file from the filesystem to the game.gd script - godot will automatically create a constant with the file name - godot will also set that file to "preload" with the appropriate file path - set the =stream= property of =audio_stream_player_2d= to the preloaded sound and play it #+BEGIN_SRC gdscript audio_stream_player_2d.stream = EXPLODE audio_stream_player_2d.play() #+END_SRC - put all this into a function and add it to the game_over function