Audio für Spiele
Erfahren Sie, wie Sie Musik und Sounds in Ihr DirectX-Spiel entwickeln und integrieren und wie Sie die Audiosignale verarbeiten, um dynamische und positionale Sounds zu erzeugen.
Für die Audioprogrammierung empfehlen wir die Verwendung der XAudio2-Bibliothek in DirectX oder der Windows-Runtime Audiodiagramm-APIs. Hier verwenden wir XAudio2. XAudio2 ist eine Audiobibliothek mit niedriger Ebene, die eine Signalverarbeitungs- und Mischgrundhaltung für Spiele bereitstellt und eine Vielzahl von Formaten unterstützt.
Sie können auch einfache Sounds und Musikwiedergabe mit Microsoft Media Foundation implementieren. Microsoft Media Foundation ist für die Wiedergabe von Mediendateien und -streams konzipiert, sowohl audio als auch video, kann aber auch in Spielen verwendet werden und ist besonders nützlich für kinotische Szenen oder nicht interaktive Komponenten Ihres Spiels.
Konzepte auf einen Blick
Im Folgenden sind einige Konzepte für die Audioprogrammierung aufgeführt, die in diesem Abschnitt verwendet werden.
- Signale sind die Grundeinheit der Soundprogrammierung, analog zu Pixeln in Grafiken. Die digitalen Signalprozessoren (DIGITAL Signal Processor, DSPs), die sie verarbeiten, sind wie die Pixelshader von Spielaudio. Sie können Signale transformieren oder kombinieren oder filtern. Durch die Programmierung an die DSPs können Sie die Soundeffekte und Die Musik Ihres Spiels mit so wenig oder so viel Komplexität ändern, wie Sie benötigen.
- Stimmen sind die submixten Komposite von zwei oder mehr Signalen. Es gibt drei Arten von XAudio2-Sprachobjekten: Quell-, Submix- und Masterstimme. Quellstimmen werden auf vom Client bereitgestellten Audiodaten ausgeführt. Quell- und Submixstimden senden ihre Ausgabe an eine oder mehrere Submix- oder Masterstimden. Submix- und Masterstimmen mischen die Audiodaten von allen Stimmen, die sie füttern, und arbeiten mit dem Ergebnis. Masterstimden schreiben Audiodaten auf ein Audiogerät.
- Das Mischen ist der Prozess der Kombination mehrerer diskreter Stimmen, z. B. der Soundeffekte und der Hintergrundaudio, die in einer Szene wiedergegeben werden, in einem einzigen Stream. Submixing ist der Prozess der Kombination mehrerer diskreter Signale, z. B. der Komponentensounds eines Motorgeräuschs und der Erstellung einer Stimme.
- Audioformate. Musik- und Soundeffekte können in einer Vielzahl digitaler Formate für Ihr Spiel gespeichert werden. Es gibt nicht komprimierte Formate wie WAV und komprimierte Formate wie MP3 und OGG. Je mehr ein Beispiel komprimiert wird – in der Regel durch seine Bitrate bestimmt, wo die Bitrate niedriger ist, desto größer ist der Verlust der Komprimierung - die schlechtere Genauigkeit, die er hat. Genauigkeit kann je nach Komprimierungsschema und Bitraten variieren. Experimentieren Sie daher mit ihnen, um zu finden, was für Ihr Spiel am besten geeignet ist.
- Abtastrate und Qualität. Sounds können mit unterschiedlichen Geschwindigkeiten abgesampft werden, und Sounds, die mit einer niedrigeren Rate abgesampft werden, weisen viel schlechtere Genauigkeit auf. Die Samplingrate für die CD-Qualität beträgt 44,1 KHz (44100 Hz). Wenn Sie für einen Sound keine hohe Genauigkeit benötigen, können Sie eine niedrigere Samplingrate auswählen. Höhere Tarife sind möglicherweise für professionelle Audioanwendungen geeignet, aber Sie benötigen sie wahrscheinlich nicht, es sei denn, Ihr Spiel erfordert professionelle Klangtreue.
- Soundstrahler (oder Quellen). In XAudio2 sind Sound-Emitter Orte, die einen Sound ausgeben, sei es ein bloßer Ausstoß eines Hintergrundgeräuschs oder eines schnörkelnden Rocktitels, der von einem In-Game-Jukebox gespielt wird. Sie geben Emitter nach Weltkoordinaten an.
- Soundhörer. Ein Soundhörer ist häufig der Spieler oder vielleicht eine KI-Entität in einem fortgeschritteneren Spiel, die die von einem Zuhörer empfangenen Sounds verarbeitet. Sie können diesen Sound in den Audiodatenstrom für die Wiedergabe für den Spieler submixen, oder Sie können ihn verwenden, um eine bestimmte In-Game-Aktion auszuführen, z. B. das Wecken eines AI-Wächters, der als Zuhörer gekennzeichnet ist.
Überlegungen zum Entwurf
Audio ist ein enorm wichtiger Bestandteil des Spieldesigns und der Entwicklung. Viele Spieler können sich an ein mediokriertes Spiel erinnern, das zu legendärem Status erhöht wurde, nur aufgrund eines unvergesslichen Soundtracks oder einer großartigen Spracharbeit und Soundmischung oder einer allgemeinen hervorragenden Audioproduktion. Musik und Sound definieren die Persönlichkeit eines Spiels und legen das Hauptmotiv fest, das das Spiel definiert und es von anderen ähnlichen Spielen unterscheidet. Der Aufwand, den Sie für das Entwerfen und Entwickeln des Audioprofils Ihres Spiels aufwenden, lohnt sich.
Positions-3D-Audio kann eine Ebene der Immersion hinzufügen, die von 3D-Grafiken bereitgestellt wird. Wenn Sie ein komplexes Spiel entwickeln, das eine Welt simuliert oder einen filmischen Stil erfordert, sollten Sie die Verwendung von 3D-Positionsaudiotechniken in Betracht ziehen, um den Spieler wirklich einzuzeichnen.
Roadmap für die DirectX-Audioentwicklung
Konzeptionelle XAudio2-Ressourcen
XAudio2 ist die Audiomischbibliothek für DirectX und ist in erster Linie für die Entwicklung leistungsstarker Audiomodule für Spiele vorgesehen. Für Spieleentwickler, die Soundeffekte und Hintergrundmusik zu ihren modernen Spielen hinzufügen möchten, bietet XAudio2 ein Audiodiagramm- und Mischmodul mit geringer Latenz und Unterstützung für dynamische Puffer, synchrone samplegenaue Wiedergabe und implizite Quellratenkonvertierung.
Thema | Beschreibung |
---|---|
Das Thema enthält eine Liste der von XAudio2 unterstützten Audioprogrammierfunktionen. |
|
Dieses Thema enthält Informationen zu wichtigen XAudio2-Konzepten, XAudio2-Versionen und dem RIFF-Audioformat. |
|
Dieses Thema enthält eine Übersicht über allgemeine Audiokonzepte, mit denen ein Audioentwickler vertraut sein sollte. |
|
Dieses Thema enthält eine Übersicht über XAudio2-Stimmen, die zum Submixen, Arbeiten mit und Master-Audiodaten verwendet werden. |
|
In diesem Thema werden die XAudio 2-Rückrufe behandelt, die verwendet werden, um Unterbrechungen in der Audiowiedergabe zu verhindern. |
|
In diesem Thema werden die XAudio2-Audioverarbeitungsdiagramme behandelt, die einen Satz von Audiostreams vom Client als Eingabe übernehmen, verarbeiten und das Endergebnis an ein Audiogerät übermitteln. |
|
Im Thema werden XAudio2-Audioeffekte behandelt, die eingehende Audiodaten übernehmen und einige Vorgänge für die Daten (z. B. einen Halleffekt) ausführen, bevor sie übergeben werden. |
|
In diesem Thema wird das Audiostreaming mit XAudio2 behandelt. |
|
In diesem Thema wird X3DAudio behandelt, eine API, die in Verbindung mit XAudio2 verwendet wird, um die Illusion eines Sounds zu erzeugen, der von einem Punkt im 3D-Raum stammt. |
|
Dieser Abschnitt enthält die vollständige Referenz für die XAudio2-APIs. |
XAudio2 -Ressourcen "Vorgehensweise"
Thema | Beschreibung |
---|---|
Erfahren Sie, wie Sie XAudio2 für die Audiowiedergabe initialisieren, indem Sie eine Instanz des XAudio2-Moduls erstellen und eine Masterstimme erstellen. |
|
Erfahren Sie, wie Sie die strukturen auffüllen, die zum Wiedergeben von Audiodaten in XAudio2 erforderlich sind. |
|
Erfahren Sie, wie Sie zuvor geladene Audiodaten in XAudio2 wiedergeben. |
|
Erfahren Sie, wie Sie Gruppen von Stimmen festlegen, um ihre Ausgabe an dieselbe Submixstimme zu senden. |
|
Erfahren Sie, wie Sie XAudio2-Quellstimmrückrufe verwenden. |
|
Erfahren Sie, wie Sie XAudio2-Modulrückrufe verwenden. |
|
Gewusst wie: Erstellen eines einfachen Audioverarbeitungsdiagramms |
Erfahren Sie, wie Sie ein Audioverarbeitungsdiagramm erstellen, das aus einer einzigen Masterstimme und einer einzelnen Quellstimme erstellt wird. |
Vorgehensweise: Dynamisches Hinzufügen oder Entfernen von Stimmen aus einem Audiodiagramm |
Erfahren Sie, wie Sie Submixstimmstimden aus einem Diagramm hinzufügen oder entfernen, das erstellt wurde, und führen Sie die schritte in "How to: Build a Basic Audio Processing Graph" aus. |
Erfahren Sie, wie Sie eine Effektkette auf eine Stimme anwenden, um die benutzerdefinierte Verarbeitung der Audiodaten für diese Stimme zu ermöglichen. |
|
Erfahren Sie, wie Sie IXAPO implementieren, um ein XAudio2-Audioverarbeitungsobjekt (XAPO) zu erstellen. |
|
Vorgehensweise: Hinzufügen der Laufzeitparameterunterstützung zu einem XAPO |
Erfahren Sie, wie Sie einer XAPO-Laufzeitparameterunterstützung hinzufügen, indem Sie die IXAPOParameters-Schnittstelle implementieren. |
Erfahren Sie, wie Sie einen Effekt verwenden, der als XAPO in einer XAudio2-Effektkette implementiert wird. |
|
Erfahren Sie, wie Sie einen der effekte verwenden, die in XAPOFX in einer XAudio2-Effektkette enthalten sind. |
|
Erfahren Sie, wie Sie Audiodaten in XAudio2 streamen, indem Sie einen separaten Thread zum Lesen eines Audiopuffers erstellen und Rückrufe verwenden, um diesen Thread zu steuern. |
|
Hier erfahren Sie, wie Sie mit X3DAudio die Lautstärke- und Tonhöhewerte für XAudio2-Stimmen sowie die Parameter für den integrierten XAudio2-Halleffekt bereitstellen. |
|
Vorgehensweise: Gruppieren von Audiomethoden als Vorgangssatz |
Erfahren Sie, wie Sie XAudio2-Vorgangssätze verwenden, um eine Gruppe von Methodenaufrufen gleichzeitig wirksam zu machen. |
Erfahren Sie, wie Sie die Debugprotokollierungsebene für XAudio2 festlegen. |
Media Foundation-Ressourcen
Media Foundation (MF) ist eine Medienplattform zum Streamen von Audio- und Videowiedergabe. Mit den Media Foundation-APIs können Sie audio- und videocodierte und komprimierte Medien mit einer Vielzahl von Algorithmen streamen. Es ist nicht für Echtzeit-Spielszenarien konzipiert; Stattdessen bietet es leistungsstarke Tools und umfassende Codec-Unterstützung für mehr lineare Aufnahme und Darstellung von Audio- und Videokomponenten.
Thema | Beschreibung |
---|---|
Dieser Abschnitt enthält allgemeine Informationen zu den Media Foundation-APIs und den verfügbaren Tools zur Unterstützung. |
|
In diesem Thema werden einige Konzepte vorgestellt, die Sie vor dem Schreiben einer Media Foundation-Anwendung verstehen müssen. |
|
In diesem Abschnitt wird das allgemeine Design von Microsoft Media Foundation sowie die von ihr verwendeten Mediengrundtypen und die verarbeitungspipeline beschrieben. |
|
In diesem Thema wird die Verwendung von Microsoft Media Foundation zum Ausführen von Audio- und Videoaufnahmen beschrieben. |
|
In diesem Thema wird beschrieben, wie Sie die Audio-/Videowiedergabe in Ihrer App implementieren. |
|
In diesem Thema werden die Medienformate aufgeführt, die Von Microsoft Media Foundation nativ unterstützt werden. (Drittanbieter können zusätzliche Formate unterstützen, indem sie benutzerdefinierte Plug-Ins schreiben.) |
|
In diesem Thema wird beschrieben, wie Sie Mit Microsoft Media Foundation Audio- und Videocodierung ausführen und Mediendateien erstellen. |
|
In diesem Thema wird beschrieben, wie Sie die Features der Windows Media Audio- und Video-Codecs verwenden, um komprimierte Datenströme zu erzeugen und zu nutzen. |
|
Dieser Abschnitt enthält Referenzinformationen für die Media Foundation-APIs. |
|
In diesem Abschnitt werden Beispiel-Apps aufgeführt, die die Verwendung von Media Foundation veranschaulichen. |
Windows-Runtime XAML-Medientypen
Wenn Sie die DirectX-XAML-Interoperabilität verwenden, können Sie die Windows-Runtime XAML-Medien-APIs in Ihre UWP-Apps integrieren, indem Sie DirectX mit C++ für einfachere Spielszenarien verwenden.
Thema | Beschreibung |
---|---|
XAML-Element, das ein Objekt darstellt, das Audio, Video oder beides enthält. |
|
Erfahren Sie, wie Sie grundlegende Audio- und Videoinhalte in Ihre Universelle Windows-Plattform-App (UWP) integrieren. |
|
Erfahren Sie, wie Sie eine lokal gespeicherte Mediendatei in Ihrer UWP-App wiedergeben. |
|
Erfahren Sie, wie Sie eine Mediendatei mit geringer Latenz in Ihrer UWP-App streamen. |
|
Erfahren Sie, wie Sie den Vertrag für "Wiedergeben auf" verwenden, um Medien von Ihrer UWP-App auf ein anderes Gerät zu streamen. |