Sound- und musikbasierte Umgebungsgenerierung in Unity3D

Anmerkung


Hallo an alle. Dieser Artikel ist der erste einer Reihe zum Thema Generieren von Inhalten basierend auf Musik und Sound. Tatsächlich ist eine solche Generierung eine ziemlich komplizierte technische Aufgabe, daher wird dieses Material einführend sein, sich mehr auf das Spieldesign und ein allgemeines Verständnis des Themas konzentrieren, wonach wir uns mit den technischen Aspekten dieses Themas befassen werden.



In diesem Artikel werden wir ein bestimmtes Genre von Spielen betrachten, bei denen Inhalte basierend auf Sound und Musik generiert werden. Die allgemeine Theorie des Klangs wird hier nicht gegeben, aber im Material finden Sie Links zu Informationsquellen und eine kurze Beschreibung der Begriffe, die wir verwenden werden. Das Material enthält zwar technische Informationen zur Klangtheorie und -programmierung, ist jedoch für Anfänger gedacht. Die Illustrationen sind selbst gemacht und da ich kein Künstler bin, nehmen Sie sie bitte nicht ernst, sie werden nur zum besseren Verständnis des Materials benötigt. Viel Spaß beim Lesen!


Einführung


Die prozedurale Generierung basierend auf Musik in Videospielen ist ein Thema, das für mich persönlich immer von einem gewissen Hauch von Mystik umgeben war. Es ist unglaublich, wie Klangformen nicht nur visualisiert werden, sondern auch das Gameplay direkt beeinflussen. Es sieht alles eigenartig aus, aber verdammt lustig. Deshalb haben solche Spiele ein eigenes kleines, aber stabiles Publikum. Steam hat separate Tags für diese Spiele hinzugefügt: "Generation basierend auf Musik" und "Rhythmus-Spiel". Im Moment können diese Tags ungefähr 200 Projekte gefunden werden, obwohl es viel mehr Spiele gibt, die diese Mechanik verwenden.


Tatsächlich bietet die Sound-basierte Generierung unbegrenzten Spielraum für die Entwicklung des Gameplays, aber bisher bleiben solche Ideen das Schicksal von Indie-Projekten, während solche Experimente in AAA-Spielen (mit Ausnahme von Guitar Hero) aufgrund ihrer Instabilität und Ungewöhnlichkeit des Gameplays nicht anwendbar sind .


Beispiele für gute Projekte


Bevor ich zum Kern der klangbasierten Erzeugung übergehe (nicht zu verwechseln mit der Klangerzeugung!), Möchte ich Beispiele für erfolgreiche Spiele geben, die ähnliche Mechaniken verwenden. Wenn Sie sie noch nicht gespielt haben, probieren Sie es aus! Sie haben das wahrscheinlich noch nie gesehen. Viele dieser Projekte wurden von Spielern und der Presse ausgezeichnet.


Genau genommen wird die reine Erzeugung nur in Audiosurf verwendet. Für den Rest der Spiele verwende ich das eine oder andere seiner Elemente. Einige Spiele konzentrieren sich mehr auf das Verfolgen von Bits, andere auf die Lautstärke des Titels usw.


Solche Projekte lassen sich nur schwer anhand eines Screenshots oder einer Beschreibung bewerten. Wenn Sie also keine Zeit zum Abspielen haben, schauen Sie sich das Video einfach auf YouTube an.


Audiosurf



Für viele Spieler war Audiosurf das erste Spiel, das musikbasierte Inhaltsgenerierung verwendete. Das Projekt wurde von einem unabhängigen Entwickler von Invisible Handlebar - der Firma von Dylan Fiterer - erstellt. Als Audiosurf auf Steam erschien, begann sich dieser Markt gerade zu entwickeln, und die derzeitige monströse Wachstumsrate war noch weit entfernt. Audiosurf sah sehr frisch und ungewöhnlich aus. Außerdem war es das erste Spiel auf Steam (mit Ausnahme von Valve-Spielen), das Erfolge enthielt!


Der Slogan von Audiosurf - "Ride your music" - spiegelt das Gameplay sehr genau wider: Auf der Grundlage Ihres Musiktitels wird der Titel erstellt, den Sie fahren müssen. Das Spiel berücksichtigt die Geschwindigkeit des Tracks, dynamische Änderungen (Zunahme und Abnahme der Lautstärke) und das Bit. Darin können Sie verschiedene Musikgenres verwenden und diese mit verschiedenen Spielmodi kombinieren. Außerdem hat jeder Track eine eigene Tabelle mit Aufzeichnungen, und Sie werden überrascht sein, dass Ihr Lieblings-Death Metal "Undeground" von zehn weiteren Personen angehört wird.



Leider wird Audiosurf in der Statik nicht wahrgenommen. Müssen spielen.


Apropos Gameplay: Audiosurf ist großartig. Wenn die Strecke beispielsweise mit einer leisen Einführung beginnt, kriecht Ihr Boot langsam bergauf, aber wenn die musikalische Textur gesättigter und körperreicher wird, steigt die Geschwindigkeit und Sie rasen jederzeit nach unten. Besonders gut zu spüren ist der sogenannte Drop, bei dem der Sound mitten in der Entwicklung „abbricht“ und dann im Moment des Höhepunkts zurückkehrt. Ein abwechslungsreiches Schlagzeug kann Ihren Track in eine hügelige Straße verwandeln und Specials beeinflussen. Effekte. Außerdem werden die Blöcke, die Sie beim Übergeben der generierten Ablaufverfolgung sammeln müssen, unter dem Bit platziert.


10 Jahre sind seit der Veröffentlichung des Spiels vergangen, aber es ist immer noch sehr beliebt bei Spielern. Im Moment wurden zwei Teile des Spiels veröffentlicht, und der Entwickler Dylan Fitterer entwickelte seine Ideen weiter und schuf Audioshield, wo Sie Blöcke der virtuellen Realität abwehren, die unter einem Schlag auf Sie losfliegen.


Wir empfehlen, auf folgenden Titeln zu spielen:


  • System eines Down - Chop Suey!
  • Martin Garrix - Tiere
  • Skrillex - Bangarang

Teile deine Lieblingssongs für Audiosurf in den Kommentaren!


Das Spiel kann bei Steam gekauft werden .


Gefahr überwinden


In diesem Projekt haben die Entwickler die Standardmechanik von Shoot'em übernommen und dort eine Analyse Ihrer Musiktitel hinzugefügt. Es stellte sich als sehr cool heraus. Musik beeinflusst alles: die Kraft Ihres Schiffes, die Anzahl der Gegner, die Gesamtgeschwindigkeit des Spiels. Das Beste ist, dass das Spiel mit Musik zu spüren ist, bei der es scharfe Übergänge von Stille zu kraftvollem Klang gibt, dann explodiert Ihr Bildschirm vor den Effekten und das Schiff beginnt mit riesigen Strahlen zu schießen.


Das Spiel hat eine ziemlich reiche Mechanik, mehrere Modi und riesige Bosse. Im Allgemeinen alles, was Sie zum Spaß brauchen!



Wir empfehlen, auf folgenden Titeln zu spielen:


  • Das Wunderkind - Invasoren müssen sterben!
  • Infizierter Pilz - Die Legende vom schwarzen Shawarma
  • Daft Punk - Kontakt

Schreiben Sie in die Kommentare, welche Spuren Sie am liebsten feindliche Schiffe zerstören!


Das Spiel kann bei Steam gekauft werden .


Soundodger +


Das Spiel ist eine Art Mischung aus Beat Hazzard und dem beliebten Super Hexagon. Das Wesentliche des Spiels ist, dass Sie Objekten ausweichen müssen, deren Aktivität von Ihrem Musiktitel abhängt. Der Prozess ist sehr kompliziert und daher - super spannend.



Das Spiel kann bei Steam gekauft werden .


Krypta des Nekrodancers


Ein Spiel, das den Rhythmus wahnsinnig genau überträgt und Sie mit einem Gamepad zum Tanzen bringt. Crypt of the NecroDancer ist ein Roguelike-Projekt, bei dem sowohl Sie als auch die Monster sich strikt an die Musik halten müssen. Wenn Sie nicht in den Rhythmus kommen, werden Sie vom Spiel bestraft, wenn Sie sich bewegen. Der gesamte Ort pulsiert gleichzeitig im Takt, was eine unwirkliche Atmosphäre schafft. Der Soundtrack wurde von dem berühmten Danny Baranowsky (Super Meat Boy, Die Bindung von Isaac) geschrieben. Das Spiel unterstützt übrigens Tanzmatten!



Das Spiel kann bei Steam gekauft werden .


Geometrie-Strich


Es ist ein sehr harter Läufer, bei dem Sie sich nicht nur auf Ihre Reaktion, sondern auch auf den Sinn für Rhythmus verlassen, da alle Hindernisse klar überwunden sind und Sie sich am Ende der Strecke (wenn Sie sie erreichen) bereits auf einer intuitiven Ebene bewegen. Genau genommen gibt es keine Generation als solche, aber die Entwickler haben die Analyse von Musiktiteln verwendet, um das Level besser zu konstruieren.



Wie fast alle Spiele dieses Genres sieht Geometry Dash sehr hell aus


Das Spiel kann bei Steam gekauft werden .


Beatbuddy: Geschichte der Wächter


Ein großartiger musikalischer Plattformer, dessen Action in der Unterwasserwelt stattfindet und der unter einem hellen Elektro-Swing-Beat lebt. Jede Kreatur in diesem Spiel erzeugt ihren eigenen Sound. Krabik tippt schnell, Anemonen sind für das Fass verantwortlich ... Gleichzeitig kann die Hauptfigur die Bewohner der Welt beeinflussen und die Musik und das Gameplay selbst verändern. Für das Spiel wurden die Tracks von Musikern wie Parov Stelar, Austin Wintory, Sabrepulse und La Rochelle Band verwendet.



Das Spiel kann bei Steam gekauft werden .


Nachdem wir uns von hervorragenden Projekten inspirieren ließen, können wir mit der Untersuchung der Frage fortfahren: "Wie funktioniert das alles?"


Grundlegende Soundoptionen


Analoge Audiooptionen


Da das gewählte Thema nicht zu einfach ist und viele technische Aspekte enthält, habe ich beschlossen, den Artikel nicht mit Theorie aufzublasen, sondern grundlegende Konzepte zu definieren. Wenn Sie die Theorie des Klangs genauer studieren möchten, dann gab es auf Habr viele Artikel zu diesem Thema. Am Ende des Artikels finden Sie viele nützliche Links.


Zu den grundlegenden Klangparametern gehören:


  • Schallwellenfrequenz oder Tonhöhe, Hz
  • Schallwellenamplitude oder Schalllautstärke, dB
  • Der Dämpfungskoeffizient ist die Abnahmerate der Amplitude über die Zeit.
  • Wellenform - eine allgemeine Ansicht einer Schallwelle. Mit diesem Parameter können Sie Sounds in Gruppen einteilen (scharf, weich, Rauschen usw.).

Aus Gründen der Klarheit habe ich in den folgenden Grafiken die Hauptmerkmale der Schallwelle angeführt (Einheiten sind nicht eingestellt, ich entschuldige mich):



Lauter Klang mit großer Amplitude



Leiser Klang mit weniger Amplitude



Hohe Tonhöhe, hohe Frequenz



Leiser Ton mit weniger Frequenz



Lauter und hoher Ton (pass auf deine Ohren auf!)


Im Allgemeinen reichen diese Daten aus, um ein ausreichendes Verständnis für den Klang zu erhalten und weiterzumachen. Aber wenn Sie sich für dieses Thema interessieren, müssen Sie es natürlich genauer studieren.


Digitale Audiooptionen


Beim Schreiben von Spielen und anderen Programmen werden wir mit der digitalen Klangform arbeiten. Digitaler Klang wird durch Abtasten (Aufteilen in kleine Zeitpunkte), Quantisieren (Aufrunden auf ein bestimmtes Niveau) und Codieren (tatsächlich Umwandeln von Schall in Nullen und Einsen) erhalten. Viele Informationen zu diesem Thema finden Sie im Artikel Theory of Sound. Was Sie über Sound wissen müssen, um damit arbeiten zu können. Erleben Sie Yandex.Music , das mir sehr gut gefallen hat. Dort finden Sie Informationen zum Messen des Volumens und eine Beschreibung der Filter, die ich erwähnen werde.


Das Wichtigste, was wir über das digitale Signal wissen müssen, ist:


  1. Abtastrate - Gibt an, wie genau Ihr Sound digitalisiert wird. Wenn wir beispielsweise sagen, dass die Abtastrate 44,1 kHz beträgt, bedeutet dies, dass das Signal 44.100 Mal in einer Sekunde gemessen wird. Heutzutage sind die häufigsten Abtastraten 44,1 kHz und 48 kHz.


  2. Bittiefe eines digitalen Signals - charakterisiert, wie weit der Dynamikbereich in Ihr digitales Signal "passt". Es wird in Bit gemessen und ist normalerweise 16, 24 und 32 Bit. Der Dynamikbereich ist der Unterschied zwischen dem lautesten und dem leisesten Ton, ausgedrückt in Dezibel. Für ein 8-Bit-Signal sind es beispielsweise 48 dB, für ein 16-Bit-Signal 96 dB, für ein 24-Bit-Signal 144 dB und für ein 32-Bit-Signal 192 dB.


  3. Bitrate haben sich alle Internetnutzer im Jahr 2002 angesehen, als sie Musik heruntergeladen haben. Bitrate ist die Anzahl der Bits, die zum Übertragen oder Verarbeiten von Daten pro Zeiteinheit verwendet werden. In Streaming-Video- und Audio-Formaten (z. B. MPEG und MP3), die eine Komprimierung mit Qualitätsverlust verwenden, drückt der Parameter „Bitrate“ den Grad der Komprimierung des Streams aus.



Metadaten in Musikdateien


Zusätzlich zu den Soundparametern selbst können wir Informationen verwenden, die in den Sounddateien selbst verborgen sind. Diese Informationen werden normalerweise als Tags bezeichnet und jedes Dateiformat hat ein eigenes Tag-Format. Wir werden über MP3-Dateien als die am häufigsten verwendeten sprechen.


Tags lassen sich am einfachsten mit einer vorgefertigten Bibliothek lesen, beispielsweise mit TagLib .


Das MP3-Format enthält Metadaten in seiner ID3-Struktur, in denen wir viele Informationen speichern können. Es gibt verschiedene Optionen für das ID3-Format, aber wir werden über ID3 v2.3 sprechen, in dem Sie die meisten Daten speichern können. Aus nützlichen Informationen müssen Sie Folgendes beachten: Name, Aufnahmejahr, Genre, BPM (Anzahl der Beats pro Minute), Titeldauer . Wie können uns diese Felder beim Generieren von Inhalten helfen? Wenn mit BPM alles klar ist, wird es während der Generierung ständig verwendet und wir werden separat darüber sprechen. Warum brauchen wir dann andere Felder? Hier muss man Fantasie zeigen.


Zum Beispiel lesen wir das Genre und das Jahr. Zunächst müssen wir diese Informationen ein wenig verarbeiten. Der Einfachheit halber werden wir nur Englisch betrachten. MP3-Tags (und andere Tags) werden häufig manuell ausgefüllt. Von hier aus folgen unterschiedliche Schreibweisen von Genres, unterschiedliche Interpunktion usw. Es ist besser, das resultierende Tag in ein einziges Format zu bringen, damit es leichter mit anderen verglichen werden kann. Es ist ratsam, alle Satzzeichen und Leerzeichen zu entfernen und die Zeichenfolge in Kleinbuchstaben umzuwandeln. Dies kann mit regulären Ausdrücken erfolgen.


Nach solchen Manipulationen ist es für Sie viel einfacher, Genres von Songs zu vergleichen. Als Nächstes müssen Sie eine Basis von Genres erstellen, die auf einer bestimmten Quelle basieren, und diese durchgehen, um Ihre Tag-Datenbank zu kompilieren. Hier ist ein Beispiel für eine Liste aller Genres: musicgenreslist.com . Natürlich müssen Sie nur die grundlegendsten auswählen.


Ich antwortete nicht, warum solche Schwierigkeiten? Ich werde Beispiele geben (sehr vereinfacht).
Basierend auf dem Genre können wir:


  • Ort wechseln (Rock - düsterer Wald, elektronische Musik - Raum, Land - Wüste, Pop - Stadt usw.)
  • Charakter ändern
  • Ändere Feinde usw.


Ein Beispiel für einen Charakter, der auf den Tags Rock, Electro, Pop basiert.


Und dann können Sie sich alles einfallen lassen! Erscheinungsjahr des Albums: 1960-1970? Kleide den Charakter in die Kleidung dieser Zeit. Trackdauer 10 Minuten? Lassen Sie Ihre "musikalisch erzeugte Schlange" einen langen Schwanz haben. Es gibt viele Möglichkeiten und es gibt immer eine Chance, den Spieler zu überraschen.


Darstellung von Audiodateien in Unity



Alles scheint einfach zu sein ...


Unity besteht aus mehreren Hauptkomponenten für die Arbeit mit Sound:


  • Der Audio Listener (Listener) verhält sich wie ein Mikrofon. Es empfängt Eingaben von jeder Tonquelle (Audioquelle) in der Szene und spielt Töne über die Lautsprecher ab. Für die meisten Anwendungen ist es sinnvoll, der Hauptkamera einen Listener hinzuzufügen - das Hauptkameraobjekt.
  • Audio Source spielt den Audioclip in der Szene ab. Wenn es sich bei dem Audioclip um einen 3D-Clip handelt, wird die Quelle an einer bestimmten Position im Raum abgespielt und je nach Entfernung stummgeschaltet.
  • Audioclips (Clips) enthalten Audiodaten, die in Audioquellen verwendet werden. Unity unterstützt Mono-, Stereo- und Mehrkanal-Audio-Assets. Unity kann die folgenden Dateitypen importieren: .aif, .wav, .mp3 und .ogg.


Wenn Sie tief in die Arbeit mit Sound vertieft sind, müssen Sie direkt mit Audioclips interagieren. Ein Audioclip enthält eine Reihe von Soundframes (Samples), die Sie lesen und überschreiben können. Mit diesem (und vielen Matan) können Sie die Parameter von Tonspuren bestimmen und Soundeffekte erzeugen.


Musiktiteleinstellungen


Also haben wir einige Startdaten von unserer Strecke gelesen und die ersten Grundlagen der Generation erhalten. Jetzt können Sie zum schwierigeren Teil übergehen. Wir müssen verstehen, welche dynamischen Parameter des Tracks wir bestimmen können und wie sie im Gameplay verwendet werden können. Ein Teil des Materials basiert auf dem Parallelcube Studio-Blog. Die Jungs machen Assets und Tutorials für Unreal Engine, wofür sie sich sehr bedanken.


Folgende Aufgaben können unterschieden werden:


  • Definieren eines Fasses als Auslöser für Spezialeffekte
  • Bestimmen leiser und lauter Momente in einer Spur
  • Verwenden dieser Daten zum Erstellen eines Levels
  • Verwenden dieser Daten zum Erstellen von Effekten

Erkennen einer Kick-Drum in einer Spur und Verwenden dieses Sounds als Auslöser.


Um mit der Bestimmung der Parameter des Titels zu beginnen, müssen Sie die Musik auswählen. Um die Arbeit zu erleichtern, benötigen Sie eine Spur, in der sich ein offensichtlicher Lauf und vorzugsweise scharfe Volumenübergänge befinden. Ich habe den Titel Perturbator - Future Club gewählt , den man im Spiel Hotline Miami 2: Wrong Number hören konnte.


Hier ist eine kleine Analyse des Eintrags dieser Spur (die Audiospur wurde speziell gekürzt)



  1. Das sogenannte Einblenden oder Einführen. In diesem Moment steigt die Lautstärke des Tracks.
  2. Die Hauptstoßkraft erscheint - der Lauf. Die Momente des Auftretens des Laufs sind auf der visuellen Darstellung der Audiospur sehr leicht abzulesen. Außerdem ertönt hier ein Hintergrundsynthesizer, dessen Rauschen auf der Spur sichtbar ist. Wenn die Spur nicht komprimiert worden wäre, wäre sie noch klarer gewesen. (Details zur Komprimierung hier )
  3. Es erscheint ein zusätzlicher Synthesizer, der die Klarheit der visuellen Darstellung des Zylinders leicht beeinträchtigt
  4. Eine Pause, die vor einem hellen Moment in der Spur erscheint (Drop).
  5. Der Hauptteil, in dem zusätzlich zum Barrel ein Bass-Synthesizer erscheint, der die visuelle Darstellung des Signals stark verzerrt, der Barrel jedoch noch unterschieden werden kann.

Unsere Hauptaufgabe ist es also zu bestimmen, an welchem ​​Punkt unser Fass klingt. Dies ist eine ziemlich schwierige Aufgabe, für die normalerweise spezielle Audiobibliotheken verwendet werden. Denken Sie daran, wenn es vorgefertigte Optionen gibt und Sie das Ziel haben, einen Effekt zu erzielen, und nicht die Matte zu studieren. Teil, nehmen Sie vorgefertigte Optionen. Wenn Ihr Spiel ein Budget und zusätzliche 25 US-Dollar hat, können Sie beim Entwickler 3y3net einen speziellen Vermögenswert kaufen, der Beat Detection heißt . Darüber hinaus können Sie eine großartige Option des Entwicklers Allan Pichardo in Betracht ziehen. Wenn Sie verstehen möchten, wie solche Algorithmen funktionieren, schreiben Sie sie natürlich selbst von Grund auf neu.


Wie wir aus der Audiospur gesehen haben, unterscheidet sich ein Beat immer deutlich durch den Schallpegel. Das ist seine Essenz. Musiker verarbeiten und komprimieren den Track speziell, damit der Beat nicht durch andere Sounds verstopft wird und seinen Platz im Frequenzbereich des Tracks hat. Das Bit ist immer lauter als der durchschnittliche Lautstärkepegel (Durchschnitt). Wenn der Ton lauter als ein bestimmter Schwellenwert ist, können wir, wenn wir nur die grafische Anzeige der Schallwelle betrachten, mit Zuversicht sagen: "Ja, das ist ein bisschen!".



Ich möchte eine detailliertere technische Beschreibung und spezifische Algorithmen zur Bestimmung eines Bits in einem separaten Artikel veröffentlichen (der nach einer Weile veröffentlicht wird), da dieses Thema weit über den Rahmen dieses Materials hinausgeht. Kurz gesagt, bei solchen Algorithmen durchläuft der Schall zuerst Filter, um die Verarbeitung zu vereinfachen. Anschließend wird die Dynamik der Schallenergie analysiert. Hier ist ein Beispiel für einen solchen Algorithmus (Aufmerksamkeit, Matlab!) .


Eine vollständige mathematische Beschreibung dieses Algorithmus finden Sie in diesem Artikel: Entwurf und Implementierung eines Beat Detector-Algorithmus .


Stellen wir uns daher vor, wir könnten ein Skript schreiben, das in Echtzeit bestimmt, an welchem ​​Punkt ein Fass tritt. Darüber hinaus können wir mithilfe des Algorithmus auch die allgemeine BPM bestimmen und verstehen, wo der Hauptrhythmus bei uns „schlägt“. Was können wir mit den erhaltenen Informationen tun?


Sie können Beathazard als Beispiel nehmen und sicherstellen, dass unser Schiff für jeden Schlag des Hauptrhythmus mit einem gewöhnlichen konventionellen Laser schießt. Wenn der Lauf trifft, schießen wir mit einem Superlaser. Es wird ungefähr so ​​aussehen:



Zusätzlich können wir weitere Specials hinzufügen. Effekte. Und lassen Sie den Pegel zusammen mit dem Bit pulsieren:



Mit demselben Algorithmus, der das Bit in Echtzeit bestimmt, können wir die BPM berechnen (Schläge pro Minute oder die Anzahl der Schläge pro Minute). BPM-Informationen können beispielsweise verwendet werden, um Schwierigkeitsgrade zu generieren und Bonuspunkte zu berechnen. Wenn die Strecke schnell ist (150 - 180 BMP), erhält der Spieler einen X5-Bonus usw.


Bestimmen leiser und lauter Momente in einer Spur


Eine Möglichkeit, laute und leise Momente zu bestimmen, besteht darin, die Spur mit einem Tiefpassfilter zu verarbeiten und einen gleitenden Durchschnitt für den Lautstärkepegel zu erhalten. Danach können wir diese Lautstärke in einem für uns geeigneten Format speichern, beispielsweise in einem Float-Array.


, . , , , . , . , .



.


, , , , ( ). , , 2D-? . :



3D, 2D . , Audiosurf , .



Elastomania, ? !?


, , , - .


Fazit


, , . , , , , . , , , . , , . Unity. Folgen Sie den Nachrichten!



Nützliche Links


Source: https://habr.com/ru/post/de429872/


All Articles