{"id":6152,"date":"2021-06-21T11:45:23","date_gmt":"2021-06-21T11:45:23","guid":{"rendered":"http:\/\/desres20.netornot.at\/?p=6152"},"modified":"2021-06-21T11:45:23","modified_gmt":"2021-06-21T11:45:23","slug":"wwise-implementierung-in-unity-teil-2-akinitializer-akbank","status":"publish","type":"post","link":"http:\/\/desres20.netornot.at\/?p=6152","title":{"rendered":"Wwise Implementierung in Unity (Teil 2: AkInitializer &#038; AkBank)"},"content":{"rendered":"\n<p>Im letzten Blogpost habe ich die f\u00fcr Unity vorgefertigten Skripte <em>AkEvent<\/em> und <em>AkTriggerEnter<\/em> beschrieben, die in Kombination f\u00fcr das Ausl\u00f6sen von Wwise-Events genutzt werden. Dieses Mal m\u00f6chte ich einige grundlegende Skripte zur Nutzung von Wwise vorstellen.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Damit die Unity-Engine allerdings \u00fcberhaupt erkennt, dass es Wwise als Audio-Engine nutzen soll, muss zun\u00e4chst Wwise beim Spielstart initialisiert werden. Das wird mit dem Skript <em><strong>AkInitializer<\/strong><\/em> realisiert. Hierf\u00fcr wird ein leeres <em>GameObject<\/em> ben\u00f6tigt, das beim Starten des Spiels bereits vorhanden ist. Das <em>GameObject<\/em> wird im Inspector von Unity mit dem <em>AkInitializer<\/em>-Skript versehen, das automatisch beim Starten des Spiels geladen wird. W\u00e4hrend des Spiels sorgt das Skript zus\u00e4tzlich daf\u00fcr, dass Frame f\u00fcr Frame Daten an die Wwise-Engine \u00fcbetragen werden und somit die Kommunikation unter den beiden Engines gew\u00e4hrleistet wird. Das ist eine der Grundvoraussetzungen f\u00fcr die Nutzung von Wwise.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"532\" src=\"http:\/\/desres20.netornot.at\/wp-content\/uploads\/2021\/06\/AkInitialize-1024x532.jpg\" alt=\"\" class=\"wp-image-6155\" srcset=\"http:\/\/desres20.netornot.at\/wp-content\/uploads\/2021\/06\/AkInitialize-1024x532.jpg 1024w, http:\/\/desres20.netornot.at\/wp-content\/uploads\/2021\/06\/AkInitialize-300x156.jpg 300w, http:\/\/desres20.netornot.at\/wp-content\/uploads\/2021\/06\/AkInitialize-768x399.jpg 768w, http:\/\/desres20.netornot.at\/wp-content\/uploads\/2021\/06\/AkInitialize-1536x798.jpg 1536w, http:\/\/desres20.netornot.at\/wp-content\/uploads\/2021\/06\/AkInitialize.jpg 1919w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption><em>Leeres GameObject (links) mit AkInitializer-Skript (rechts)<\/em><\/figcaption><\/figure>\n\n\n\n<p>Eine mit <em>AkInitializer<\/em> nah verwandte Funktion von Wwise ist das Laden von sogenannten Soundbanks. Soundbanks sind Audiodaten und Befehle, die w\u00e4hrend des Spiels in den Arbeitsspeicher geladen werden und somit unmittelbar ohne l\u00e4ngeren Wartezeiten abgerufen werden k\u00f6nnen. Gro\u00dfe Spiele arbeiten mit vielen Soundbanks, die abh\u00e4ngig von der Position des Spielers oder anderen Bedingungen einzeln geladen und wieder entladen werden. Das erm\u00f6glicht die Realisierung von gro\u00dfen und komplexen Spielwelten auf einem PC oder einer Konsole. H\u00e4ufig wird vom Entwicklerteam ein Datenmengenlimit vorgegeben, welches das Audio-Team nicht \u00fcberschreiten darf. <\/p>\n\n\n\n<p>Das Skript f\u00fcr das Laden von Soundbanks hei\u00dft <em><strong>AkBank<\/strong><\/em> und kann an unterschiedlichen Stellen ausgef\u00fchrt werden. In der Regel hat man immer eine Soundbank, die beim Starten des Spiels geladen wird. Weitere Soundbanks werden unter anderem geladen, wenn ein neues Gebiet betreten wird. Das Laden einer Soundbank dauert eine Weile, weshalb einige Spiele w\u00e4hrenddessen eine Ladesequenz anzeigen. Bei der praktischen Anwendung erfordert das Skript im Unity-Inspector eine Information, wann die Soundbank geladen, wann sie entladen werden soll. Dabei muss auch bestimmt werden, welche Soundbank geladen werden soll. Es gibt noch weitere Optionen, mit welchen sich einstellen lassen, wie dekodiert und wie genau mit den Daten verfahren werden soll. Das hilft beim Datenmanagement und ist vor allem f\u00fcr umfangreiche Spiele mit gro\u00dfen Datenmengen praktisch.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"580\" height=\"170\" src=\"http:\/\/desres20.netornot.at\/wp-content\/uploads\/2021\/06\/AkBank.png\" alt=\"\" class=\"wp-image-6157\" srcset=\"http:\/\/desres20.netornot.at\/wp-content\/uploads\/2021\/06\/AkBank.png 580w, http:\/\/desres20.netornot.at\/wp-content\/uploads\/2021\/06\/AkBank-300x88.png 300w\" sizes=\"(max-width: 580px) 100vw, 580px\" \/><figcaption><em>Die Soundbank &#8220;Footsteps&#8221; wird beim Starten des Spiels geladen<\/em> und beim Zerst\u00f6ren des GameObjects entladen<\/figcaption><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Quellen:<\/p>\n\n\n\n<p>[1] https:\/\/www.audiokinetic.com\/library\/edge\/?source=Unity&amp;id=class_ak_initializer.html<\/p>\n\n\n\n<p>[2] https:\/\/www.audiokinetic.com\/library\/edge\/?source=WwiseFundamentalApproach&amp;id=understanding_soundbanks_understanding_soundbanks<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im letzten Blogpost habe ich die f\u00fcr Unity vorgefertigten Skripte AkEvent und AkTriggerEnter beschrieben, die in Kombination f\u00fcr das Ausl\u00f6sen von Wwise-Events genutzt werden. Dieses Mal m\u00f6chte ich einige grundlegende Skripte zur Nutzung von Wwise vorstellen. Damit die Unity-Engine allerdings \u00fcberhaupt erkennt, dass es Wwise als Audio-Engine nutzen soll, muss zun\u00e4chst Wwise beim Spielstart initialisiert<\/p>\n<footer class=\"entry-footer index-entry\">\n<div class=\"post-social pull-left\"><a href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=http%3A%2F%2Fdesres20.netornot.at%2F%3Fp%3D6152\" target=\"_blank\" class=\"social-icons\"><i class=\"fa fa-facebook\" aria-hidden=\"true\"><\/i><\/a><a href=\"https:\/\/twitter.com\/home?status=http%3A%2F%2Fdesres20.netornot.at%2F%3Fp%3D6152\" target=\"_blank\" class=\"social-icons\"><i class=\"fa fa-twitter\" aria-hidden=\"true\"><\/i><\/a><a href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=http%3A%2F%2Fdesres20.netornot.at%2F%3Fp%3D6152&#038;title=Wwise+Implementierung+in+Unity+%28Teil+2%3A+AkInitializer+%26%23038%3B+AkBank%29\" target=\"_blank\" class=\"social-icons\"><i class=\"fa fa-linkedin\" aria-hidden=\"true\"><\/i><\/a><\/div>\n<p class=\"link-more\"><a href=\"http:\/\/desres20.netornot.at\/?p=6152\" class=\"more-link\">Continue reading <span class=\"meta-nav\">\u2192<\/span><\/a><\/p>\n<\/footer>\n","protected":false},"author":32,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"_links":{"self":[{"href":"http:\/\/desres20.netornot.at\/index.php?rest_route=\/wp\/v2\/posts\/6152"}],"collection":[{"href":"http:\/\/desres20.netornot.at\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/desres20.netornot.at\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/desres20.netornot.at\/index.php?rest_route=\/wp\/v2\/users\/32"}],"replies":[{"embeddable":true,"href":"http:\/\/desres20.netornot.at\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6152"}],"version-history":[{"count":5,"href":"http:\/\/desres20.netornot.at\/index.php?rest_route=\/wp\/v2\/posts\/6152\/revisions"}],"predecessor-version":[{"id":6329,"href":"http:\/\/desres20.netornot.at\/index.php?rest_route=\/wp\/v2\/posts\/6152\/revisions\/6329"}],"wp:attachment":[{"href":"http:\/\/desres20.netornot.at\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6152"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/desres20.netornot.at\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6152"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/desres20.netornot.at\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6152"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}