Sie kennen vielleicht Ryhtm-Spiele wie Dancing Line , Geometry Dash oder sogar Guitar Hero . Sie haben etwas gemeinsam: Jede einzelne Aktion im Spiel wird mit der Musik synchronisiert. Mein Ziel ist es, ein Spiel wie Geometry Dash zu erstellen, bei dem der Spieler einige Aktionen im Rhythmus ausführen muss, während der Charakter automatisch im Level scrollt. Ich habe ein paar Fragen zu dieser Art von Spiel:
- Muss ich meine FPS konstant halten, da sie immer mit der Musik synchronisiert sein muss?
- Wie kann ich meine Level mit Blick auf eine Musik erstellen, um sicherzustellen, dass sie synchronisiert wird?
Ich arbeite an Unity mit C #.
quelle
Als Alternative, wenn Sie nicht von Grund auf neu arbeiten können.
Es gibt bereits fertige Assets (unter Editor Extensions / Audio wie https://www.assetstore.unity3d.com/en/#!/content/54639 (bezahlt) oder https://www.assetstore.unity3d.com/en / #! / content / 39835 (kostenlos)), wo Sie Musiktitel mit dem Ereignis synchronisieren können. In diesem Beispiel schießt die Waffe im Takt der Musik.
Wenn Sie erfahren möchten, wie sie funktionieren, probieren Sie 1-2 der kostenlosen aus und sehen Sie sich die Quelle an.
quelle
Unity entkoppelt das Gameplay bereits von der Framerate. Wenn Sie daran denken, immer
Time.deltaTime
in Ihren Update-Funktionen zu verwenden, sollte die tatsächliche Grafik-Framerate die Spielgeschwindigkeit nicht beeinflussen. Wenn Sie also das Spiel und die Audiospur gleichzeitig starten, sollten sie synchron bleiben.In Bezug auf das Entwerfen von Ebenen rund um Musik gibt es zwei Ansätze:
Der prozedurale Ansatz. Verwenden Sie Audioanalysealgorithmen, um automatisch Pegel um Audiospuren zu generieren. Am einfachsten ist es, nur nach Lautstärkespitzen zu suchen. Das sollte es Ihnen bereits ermöglichen, Drum Beats in vielen Songs zu identifizieren und Hindernisse entsprechend zu erzeugen. Ein weiterer Schritt ist die getrennte Erfassung von Volumenverschiebungen in verschiedenen Frequenzspektren. Dies macht die Beat-Erkennung zuverlässiger und ermöglicht es Ihnen, verschiedene Hindernisse für verschiedene Tonhöhen zu erzeugen. Aber das kratzt immer noch nur an der Oberfläche. Die Audioanalyse ist ein sehr weites und interessantes Gebiet. Die Leute haben viel wissenschaftliche Literatur darüber geschrieben.
Wie tief Sie in dieses Feld eintauchen müssen, hängt davon ab, wie ehrgeizig Sie sind. Einige Spiele geben sich damit zufrieden, nur die Beats zu erkennen und den Rest des Level-Designs ( Crypt of the Necrodancer ) zufällig zu generieren . Andere versuchen, so viele Aspekte des Level-Designs wie möglich unter die Kontrolle des Audios zu bringen ( Audiosurf ).
Viele Rhythmus-Spiele verwenden einen hybriden Ansatz. Sie generieren einen ersten Entwurf des Levels mit einem Generator und optimieren ihn dann von Hand, um ihn spielbarer zu machen.
quelle
Time.time
stattdessen.Sehr verbreitet ist der Ansatz, eine "Beat Map" zu haben. Jede Art von Daten, die die Beats im Song darstellen. Es kann sich um eine Textur, eine Datendatei oder etwas anderes handeln, das diese Informationen enthält. Meistens wird es manuell erstellt, um verschiedene Beats und Kombinationen zu erstellen, Versionen von Geschwindigkeiten für eine Audiokarte.
Es kann jedoch prozedural aus Audiodateidaten generiert werden.
Wie kann man die Geschwindigkeit auf den "Beat Point" bringen? Wann soll ein Objekt erzeugt werden?
Speed = Distance / Time
.Distance =
Abstand zwischen den Erstellungspunkten von GameObject und dem "Beat Point".Time =
Die Audiolänge und die konstruierte Beat-Map sollten ausreichen. Mit diesen Informationen können Sie die Daten von Audio / Karte analysieren, um vorherzusagen, wann ein Objekt erzeugt werden muss, um den genauen Punkt zu erreichen. Jetzt hängt alles davon ab, wann Sie dieses Objekt spawnen möchten. Wenn Sie möchten, dass es nach dem Spawn sehr schnell ist, dann spawnen Sie es später mit großer Geschwindigkeit. Wenn Sie möchten, dass die Geschwindigkeit normal ist, benötigen Sie Zeit, um den Player zu erreichen, und Audio benötigt Zeit, um im richtigen Moment abgespielt zu werden.Sie können sogar eine neue Karte mit Zeitstempeln für Spawns von Beat-Objekten für eine bestimmte Audiokarte erstellen. Sie müssen irgendwann einige Vorhersagen treffen, um mit dem Beat übereinstimmen zu können, für den populärsten Stil, den ich sagen würde, um vorherzusagen
when
, dass das Objekt erzeugt wird, damit es sich mit bestimmten Bewegungen bewegtspeed
. Diese können zur Laufzeit erstellt oder aus einer zuvor berechneten Datei gelesen oder im RAM gespeichert werden ...Ich
Osu
gehe davon aus, dass Spiele wie diese nicht habenDistance
, sie haben nur die Zeit, in der Kreise schrumpfen, bpm ... Karten werden im Allgemeinen nach Maß angefertigt. Der Ansatz zur Berechnung der Grafik hängt also auch vom Stil des Spiels ab, das Sie erstellen.Um alles zusammenzufassen, die Werte sind voneinander abhängig. Hängt davon ab, wie viele Schläge Sie haben, von der Entfernung zwischen Spawnpunkt und Spieler und hängt manchmal von den bereitgestellten Daten ab [einige Spiele haben die Geschwindigkeit jedes Schlags und sein Aussehen in einer manuell erstellten Datendatei codiert]. Wenn Sie dies prozedural tun, können Sie alles grundsätzlich mithilfe von Audiodaten berechnen.
quelle