{"id":985,"date":"2012-06-17T12:25:38","date_gmt":"2012-06-17T10:25:38","guid":{"rendered":"https:\/\/porzelt.net\/?p=985"},"modified":"2019-10-04T16:11:09","modified_gmt":"2019-10-04T16:11:09","slug":"making-the-game-teil-13-das-soundmanagement","status":"publish","type":"post","link":"https:\/\/porzelt.net\/en\/making-the-game-teil-13-das-soundmanagement","title":{"rendered":"Making The Game \u2013 Teil 13: Das Soundmanagement"},"content":{"rendered":"<p>The sound design has a large share of the overall impact of games. Thus, the right music and a properly placed sound-effect subconsciously contribute to the current situation. The desired effect is often achieved only through the interaction of images and sound.<br \/>\n&nbsp;<br \/>\nBesides the host of the application, who has only a accustic appearance, several effects and music parts are played, for example if the correct answer to a question is given.<br \/>\nIn order for this sounds to proceed simultaneously, but individually controllable, music, sound effects and speech are played on each separate audio channel. Through the use of channels we also ensure that only one voice file, per channel is played. Without this allocation, it could otherwise lead to a superposition of different effects or spoken sentences, which means that they were no longer evident.<br \/>\n&nbsp;<\/p>\n<div class=\"actionscript3\">\n<ol>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<span class=\"kw2\">var<\/span> musicChannel<span class=\"sy0\">:<\/span><span class=\"kw5\">SoundChannel<\/span> = <span class=\"kw1\">new<\/span> <span class=\"kw5\">SoundChannel<\/span><span class=\"br0\">(<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span> &nbsp; &nbsp; <span class=\"co1\">\/\/ music<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<span class=\"kw2\">var<\/span> speakerChannel<span class=\"sy0\">:<\/span><span class=\"kw5\">SoundChannel<\/span> = <span class=\"kw1\">new<\/span> <span class=\"kw5\">SoundChannel<\/span><span class=\"br0\">(<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span> &nbsp; <span class=\"co1\">\/\/ moderator<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<span class=\"kw2\">var<\/span> effectsChannel<span class=\"sy0\">:<\/span><span class=\"kw5\">SoundChannel<\/span> = <span class=\"kw1\">new<\/span> <span class=\"kw5\">SoundChannel<\/span><span class=\"br0\">(<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span> &nbsp; <span class=\"co1\">\/\/ effects<\/span><\/div>\n<\/li>\n<\/ol>\n<\/div>\n<p>&nbsp;<br \/>\nIn order to create a varied experience even after several rounds, different variants of the same texts were recorded. So the gam becomese livelier and more realistic than if only a standard text would be repeated constantly.<br \/>\n&nbsp;<\/p>\n<div class=\"actionscript3\">\n<ol>\n<div class=\"li1\"> &#8212;&#8211; Player selection &#8212;&#8211;<\/div>\n<div class=\"li1\"> * selection between 1, 2 or 3 player *<\/div>\n<div class=\"li1\">&nbsp;<\/div>\n<div class=\"li1\"> &#8212;&#8211; 1st roung &#8212;&#8211;<\/div>\n<div class=\"li1\"> 1) How many players do we have today?<\/div>\n<div class=\"li1\"> 2) Okay, I admit it &#8230; I can not count &#8230; * sigh *  can you just tell me to how many of you want to play this round?<\/div>\n<div class=\"li1\">\n 3) So lets count how many of you want to play one, two, five, dice, three, goat &#8230; um &#8230; oh just tell me how many players we have today.<\/div>\n<div class=\"li1\">&#8230;<\/div>\n<\/ol>\n<\/div>\n<p>&nbsp;<br \/>\nShown here is an excerpt from the script of the audio assistant that guides the player through the menu. It shows different versions of how the user will be prompted at the player selection after the first start of the game while selecting the number of players. The corresponding paths of the individual audio files are stored in a separate XML file. Here, the respective related files are grouped into categories.<br \/>\n&nbsp;<br \/>\nBefore a audio is played back from the desired category, it first must be selected. The specially developed function to differentiate the current situation, if the player has previously been at this point in the game or whether he needs an opening statement to the current selection. If this is resolved, the number of possible audio files from the XML file is read and the path of a randomly selected file is returned.<br \/>\n&nbsp;<\/p>\n<div class=\"actionscript3\">\n<ol>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<span class=\"kw3\">function<\/span> getPath<span class=\"br0\">(<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">:<\/span><span class=\"kw5\">String<\/span><span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"kw2\">var<\/span> getFile<span class=\"sy0\">:<\/span><span class=\"kw5\">String<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"kw2\">var<\/span> lngth<span class=\"sy0\">:<\/span><span class=\"kw5\">int<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"kw2\">var<\/span> rnd<span class=\"sy0\">:<\/span><span class=\"kw5\">int<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">(<\/span>roundsPlayed == <span class=\"nu0\">0<\/span><span class=\"br0\">)<\/span><span class=\"br0\">{<\/span>&nbsp; <span class=\"co1\">\/\/ if no round has been played<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ get number of audio files<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; lngth = basicXMLGeneralAudio<span class=\"sy0\">.<\/span>MENUE<span class=\"sy0\">.<\/span>PLAYERSELECT<span class=\"sy0\">.<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FIRST<span class=\"sy0\">.<\/span>ITEM<span class=\"sy0\">.<\/span><span class=\"br0\">(<\/span>@<span class=\"kw7\">name<\/span>==<span class=\"st0\">&#8220;play&#8221;<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">.<\/span><span class=\"kw7\">length<\/span><span class=\"br0\">(<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; rnd = randomNumber<span class=\"br0\">(<\/span><span class=\"nu0\">1<\/span><span class=\"sy0\">,<\/span>lngth<span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ get path of the selected audio file<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; getFile = basicXMLGeneralAudio<span class=\"sy0\">.<\/span>MENUE<span class=\"sy0\">.<\/span>PLAYERSELECT<span class=\"sy0\">.<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FIRST<span class=\"sy0\">.<\/span>ITEM<span class=\"sy0\">.<\/span><span class=\"br0\">(<\/span>@<span class=\"kw7\">name<\/span>==<span class=\"st0\">&#8220;play&#8221;<\/span><span class=\"br0\">)<\/span><span class=\"br0\">[<\/span>rnd<span class=\"sy0\">&#8211;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">]<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"br0\">}<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">(<\/span>playerSelected==<span class=\"nu0\">1<\/span><span class=\"br0\">)<\/span><span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ &#8230;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"kw1\">return<\/span> getFile<span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<\/div>\n<\/li>\n<\/ol>\n<\/div>\n<p>&nbsp;<br \/>\nThe returned path of the audio file is then transferred to the sound management class by calling the callAudio()-function. For the effects and music channel a similar function exists.<br \/>\n&nbsp;<br \/>\nThe function checks in the first step, if a audio file is currently played. If this is the case, the output of the old record is stopped because we assume that the call of the new audio file was triggered from the interaction with the player. So we want to give a instant feedback to its performed action.<br \/>\nAfterwards, the loaded file is played on the corresponding output channel.<br \/>\n&nbsp;<br \/>\nIn addition to the path of the file, the name of a function also can be passed to the callAudio() function. This passed function-name is called automatically after playing the audio file. If needed there can also be a delay set between the end of the audio file and the function call.<br \/>\n&nbsp;<br \/>\nWith this capability, multiple audio files in a row can played without a overlap or a large pause in between.<br \/>\n&nbsp;<\/p>\n<div class=\"actionscript3\">\n<ol>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<span class=\"kw3\">function<\/span> callAudio<span class=\"br0\">(<\/span>whoToCall<span class=\"sy0\">:<\/span><span class=\"kw5\">String<\/span><span class=\"sy0\">,<\/span> <span class=\"kw7\">delay<\/span><span class=\"sy0\">:<\/span><span class=\"kw5\">int<\/span><=<span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;whoToCallAfter<span class=\"sy0\">:<\/span><span class=\"kw5\">String<\/span>=<span class=\"st0\">&#8220;voidme&#8221;<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">:<\/span><span class=\"kw1\">void<\/span><span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">(<\/span>useAudio<span class=\"br0\">)<\/span><span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">(<\/span>debugMe<span class=\"br0\">)<\/span><span class=\"br0\">{<\/span> <span class=\"kw7\">trace<\/span><span class=\"br0\">(<\/span><span class=\"st0\">&#8220;&#8230;play audio: &#8220;<\/span> <span class=\"sy0\">+<\/span> whoToCall<span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span> <span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">(<\/span>audioEnabled<span class=\"br0\">)<\/span><span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; speakerChannel<span class=\"sy0\">.<\/span><span class=\"kw7\">stop<\/span><span class=\"br0\">(<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw7\">delay<\/span> = <span class=\"kw7\">delay<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw2\">var<\/span> urlString<span class=\"sy0\">:<\/span><span class=\"kw5\">String<\/span> = pathAudio <span class=\"sy0\">+<\/span> basicLang <span class=\"sy0\">+<\/span> <span class=\"st0\">&#8220;\/&#8221;<\/span> <span class=\"sy0\">+<\/span> whoToCall<span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; soundURL = <span class=\"kw1\">new<\/span> <span class=\"kw5\">URLRequest<\/span><span class=\"br0\">(<\/span>urlString<span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; mySpeaker = <span class=\"kw1\">new<\/span> <span class=\"kw5\">Sound<\/span><span class=\"br0\">(<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; mySpeaker<span class=\"sy0\">.<\/span><span class=\"kw7\">load<\/span><span class=\"br0\">(<\/span>soundURL<span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; callMeLater = whoToCallAfter<span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; speakerChannel = mySpeaker<span class=\"sy0\">.<\/span><span class=\"kw7\">play<\/span><span class=\"br0\">(<\/span><span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">1<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; audioEnabled=<span class=\"kw1\">true<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">(<\/span><span class=\"kw7\">delay<\/span>==<span class=\"nu0\">0<\/span><span class=\"br0\">)<\/span><span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; speakerChannel<span class=\"sy0\">.<\/span><span class=\"kw7\">addEventListener<\/span><span class=\"br0\">(<\/span><span class=\"kw5\">Event<\/span><span class=\"sy0\">.<\/span><span class=\"kw8\">SOUND_COMPLETE<\/span><span class=\"sy0\">,<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tutSoundDone<span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">}<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; speakerChannel<span class=\"sy0\">.<\/span><span class=\"kw7\">addEventListener<\/span><span class=\"br0\">(<\/span><span class=\"kw5\">Event<\/span><span class=\"sy0\">.<\/span><span class=\"kw8\">SOUND_COMPLETE<\/span><span class=\"sy0\">,<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tutSoundDone_withDelay<span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"br0\">}<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ no audio is used<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">(<\/span>debugMe<span class=\"br0\">)<\/span><span class=\"br0\">{<\/span> <span class=\"kw7\">trace<\/span><span class=\"br0\">(<\/span><span class=\"st0\">&#8220;&#8230;skip audio&#8221;<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span> <span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span><span class=\"br0\">[<\/span>whoToCallAfter<span class=\"br0\">]<\/span><span class=\"br0\">(<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; audioEnabled=<span class=\"kw1\">false<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<span class=\"kw3\">function<\/span> tutSoundDone<span class=\"br0\">(<\/span>e<span class=\"sy0\">:<\/span><<span class=\"kw5\">Event<\/span><span class=\"br0\">)<\/span><span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; audioEnabled=<span class=\"kw1\">false<\/span><span class=\"sy0\">;<\/span> <span class=\"kw1\">this<\/span><span class=\"br0\">[<\/span>callMeLater<span class=\"br0\">]<\/span><span class=\"br0\">(<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<span class=\"kw3\">function<\/span> tutSoundDone_withDelay<span class=\"br0\">(<\/span>e<span class=\"sy0\">:<\/span><span class=\"kw5\">Event<\/span><span class=\"br0\">)<\/span><span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; audioEnabled=<span class=\"kw1\">false<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; delayInterval = <span class=\"kw7\">setInterval<\/span><span class=\"br0\">(<\/span>delayCall<span class=\"sy0\">,<\/span> <span class=\"br0\">(<\/span><span class=\"kw7\">delay<\/span><span class=\"sy0\">*<\/span><span class=\"nu0\">1000<\/span><span class=\"br0\">)<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<span class=\"kw3\">function<\/span> delayCall<span class=\"br0\">(<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">:<\/span><span class=\"kw1\">void<\/span><span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"kw7\">clearInterval<\/span><span class=\"br0\">(<\/span>delayInterval<span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"kw1\">this<\/span><span class=\"br0\">[<\/span>callMeLater<span class=\"br0\">]<\/span><span class=\"br0\">(<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span> &nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<span class=\"kw3\">function<\/span> voidme<span class=\"br0\">(<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">:<\/span><span class=\"kw1\">void<\/span><span class=\"br0\">{<\/span> <span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<\/div>\n<\/li>\n<\/ol>\n<\/div>\n<p>&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<\/p>\n<p>Upcoming blog entries<br \/>\nMaking The Game \u2013 Teil 14: Knowledge base and question selection \/ Working with XML<br \/>\nMaking The Game \u2013 Part 15: Game stages<br \/>\nMaking The Game \u2013 Part 16: Mini-Games<br \/>\nMaking The Game \u2013 Part 17: Evaluation and deployment of the application<br \/>\nMaking The Game \u2013 Part 18: Concept for school use and outlook<\/p>\n<p>&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The sound design has a large share of the overall impact of games. Thus, the right music and a properly placed sound-effect subconsciously contribute to the current situation. The desired effect is often achieved only through the interaction of images and sound. &nbsp; Besides the host of the application, who has only a accustic appearance, several effects and music parts are played, for example if the correct answer to a question is given. In order for this sounds to proceed simultaneously, but individually controllable, music, sound effects and speech are played on each separate audio channel. Through the use of channels we also ensure that only one voice file, per [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1009,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5,7],"tags":[11,14,15,22,23,24,25,43,53,59,66,67,77,85,129,132,135,164,166,182,216,223,224,269],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/porzelt.net\/en\/wp-json\/wp\/v2\/posts\/985"}],"collection":[{"href":"https:\/\/porzelt.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/porzelt.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/porzelt.net\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/porzelt.net\/en\/wp-json\/wp\/v2\/comments?post=985"}],"version-history":[{"count":1,"href":"https:\/\/porzelt.net\/en\/wp-json\/wp\/v2\/posts\/985\/revisions"}],"predecessor-version":[{"id":1236,"href":"https:\/\/porzelt.net\/en\/wp-json\/wp\/v2\/posts\/985\/revisions\/1236"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/porzelt.net\/en\/wp-json\/wp\/v2\/media\/1009"}],"wp:attachment":[{"href":"https:\/\/porzelt.net\/en\/wp-json\/wp\/v2\/media?parent=985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/porzelt.net\/en\/wp-json\/wp\/v2\/categories?post=985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/porzelt.net\/en\/wp-json\/wp\/v2\/tags?post=985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}