Audio für Spiele

Hier erfahren Sie, wie Sie Musik und Sound entwickeln und in Ihr DirectX-Spiel integrieren. Außerdem erfahren Sie, wie Sie Audiosignale verarbeiten, um dynamischen und positionsbezogenen Sound zu erzeugen.

Für die Audioprogrammierung empfiehlt es sich, entweder die XAudio2-Bibliothek in DirectX oder die Windows-Runtime Audiographs-APIs zu verwenden. Hier verwenden wir XAudio2. XAudio2 ist eine untergeordnete Audiobibliothek, die eine grundlegende Signalverarbeitung und -abmischung für Spiele bereitstellt und eine Vielzahl von Formaten unterstützt.

Einfache Sounds sowie eine einfache Musikwiedergabe können auch mithilfe von Microsoft Media Foundation implementiert werden. Microsoft Media Foundation ist eigentlich für die Wiedergabe von Mediendateien und Datenströmen (sowohl Audio als auch Video) konzipiert, kann aber auch in Spielen eingesetzt werden und ist besonders hilfreich bei Filmszenen oder Spielkomponenten ohne Interaktionsmöglichkeit.

Konzepte auf einen Blick

Im Anschluss finden Sie einige Konzepte für die Audioprogrammierung, die in diesem Abschnitt zur Anwendung kommen.

  • Signale bilden die Grundeinheit der Soundprogrammierung (vergleichbar mit Pixeln bei der Grafik). Die digitalen Signalprozessoren (Digital Signal Processors, DSPs), von denen sie verarbeitet werden, sind gewissermaßen die Pixelshader für den Sound des Spiels. Sie können Signale transformieren, kombinieren oder filtern. Mithilfe der DSP-Programmierung können Sie die Soundeffekte und die Musik Ihres Spiels ganz flexibel und mit der gewünschten Komplexität verändern.
  • Bei Stimmen handelt es sich um einen Submix aus mindestens zwei Signalen. XAudio2 bietet drei Arten von Stimmobjekten: Quellstimme, Submixstimme und Masterstimme. Quellstimmen verarbeiten die vom Client bereitgestellten Audiodaten. Quell- und Submixstimmen senden ihre Ausgabe an mindestens eine Submix- oder Masterstimme. Submix- und Masterstimmen mischen die Audiodaten aller Stimmen, von denen sie Daten erhalten, und verarbeiten das Ergebnis. Masterstimmen schreiben Audiodaten auf ein Audiogerät.
  • Beim Mixing werden mehrere getrennte Stimmen – beispielsweise die Soundeffekte und die Hintergrundgeräusche einer Szene – in einem einzelnen Stream miteinander kombiniert. Beim Submixing werden mehrere getrennte Signale – beispielsweise die Soundkomponenten eines Motorengeräuschs – zu einer Stimme kombiniert.
  • Audioformate. Musik und Soundeffekte für Ihr Spiel können in vielen unterschiedlichen digitalen Formaten gespeichert werden. Zur Auswahl stehen unkomprimierte Formate wie WAV sowie komprimierte Formate wie MP3 und OGG. Je stärker die Komprimierung eines Audiosamples (üblicherweise abzulesen an der Bitrate), desto schlechter die Klangtreue, da die Verringerung der Bitrate höhere Verluste nach sich zieht. Aufgrund der Klangtreueunterschiede bei verschiedenen Komprimierungsschemas und Bitraten empfiehlt es sich, ein wenig zu experimentieren, um eine möglichst gute Lösung für Ihr Spiel zu finden.
  • Samplingrate und Qualität. Sound kann unterschiedliche Samplingraten haben. Mit abnehmender Samplingrate verschlechtert sich die Klangtreue allerdings erheblich. Die Samplingrate für Sound in CD-Qualität beträgt 44,1 kHz (44.100 Hz). Wenn es bei Ihrem Sound nicht auf hohe Klangtreue ankommt, können Sie eine geringere Samplingrate wählen. Eine höhere Samplingrate empfiehlt sich unter Umständen für professionelle Audioanwendungen, bei einem Spiel ist sie dagegen nicht unbedingt erforderlich – es sei denn, das Spiel benötigt Sound mit professioneller Klangtreue.
  • Soundquellen. Soundquellen in XAudio2 sind Punkte, von denen Sound ausgeht – ganz gleich, ob es sich dabei um einen Piepton im Hintergrund oder um einen fetzigen Rocksong aus einer Stereoanlage im Spiel handelt. Die Quellen werden anhand von Weltkoordinaten angegeben.
  • Soundempfänger. Beim Soundempfänger handelt es sich häufig um den Spieler, in aufwendigeren Spielen möglicherweise auch um eine Entität mit künstlicher Intelligenz, die den von einer Soundquelle stammenden Sound verarbeitet. Dieser Sound kann per Submixing dem Audiodatenstrom zugeführt und so für den Spieler wiedergegeben werden. Alternativ können Sie den Sound aber auch verwenden, um eine bestimmte Aktion im Spiel (beispielsweise die Alarmierung einer als Empfänger markierten KI-Wache) auszulösen.

Überlegungen zum Entwurf

Audio spielt beim Entwerfen und Entwickeln von Spielen eine immens wichtige Rolle. Viele Spieler erinnern sich noch an eher durchschnittliche Spiele, die allein dank ihres einprägsamen Soundtracks, dank großartiger Sprecher und einer tollen Soundabmischung oder allgemein dank einer herausragenden Audioproduktion Kultstatus erreicht haben. Musik und Sound definieren die Persönlichkeit eines Spiels. Sie liefern auch das Hauptmotiv, das das Spiel definiert und von ähnlichen Spielen abhebt. Der Aufwand, den Sie für die Ausarbeitung und Entwicklung des Audioprofils Ihres Spiel betreiben, zahlt sich in jedem Fall aus.

Mit positionsbezogenem 3D-Sound können Sie die 3D-Grafik Ihres Spiels um ein zusätzliches immersives Element erweitern. Falls Sie ein komplexes Spiel entwickeln, das eine Welt simuliert oder einen filmähnlichen Stil erfordert, sollten Sie die Verwendung von Techniken für positionsbezogenen 3D-Sound in Betracht ziehen, um den Spieler voll und ganz in die Spielwelt eintauchen zu lassen.

Roadmap für DirectX-Audioentwicklung

Konzeptionelle Ressourcen zu XAudio2

XAudio2 ist die Audiomixingbibliothek für DirectX, die in erster Linie zum Entwickeln von Audiomodulen mit hoher Leistung für Spiele gedacht ist. Spieleentwicklern, die Soundeffekte und Hintergrundmusik zu ihren modernen Spielen hinzufügen möchten, bietet XAudio2 ein Modul für Audiodiagramme und zum Mischen mit geringer Latenz und Unterstützung für dynamische Puffer, synchrone Wiedergabe genau nach Beispiel und implizite Quellratenumwandlung.

Thema BESCHREIBUNG

Einführung in XAudio2

Dieses Thema enthält eine Liste der von XAudio2 unterstützten Audioprogrammierfeatures.

Erste Schritte mit XAudio2

Dieses Thema enthält Informationen zu wichtigen XAudio2-Konzepten, XAudio2-Versionen und zum RIFF-Audioformat.

Allgemeine Konzepte für die Audioprogrammierung

Dieses Thema bietet einen Überblick über allgemeine Audiokonzepte, mit denen ein Audioentwickler vertraut sein sollte.

XAudio2-Stimmen

Dieses Thema bietet einen Überblick über XAudio2-Stimmen, die für Submixing und das Verarbeiten und Mastern von Audiodaten verwendet werden.

XAudio2-Rückrufe

In diesem Thema werden die XAudio2-Rückrufe behandelt, mit denen Unterbrechungen bei der Audiowiedergabe verhindert werden.

XAudio2-Audiodiagramme

In diesem Thema werden die XAudio2-Audioverarbeitungsdiagramme behandelt. Diese empfangen eine Reihe von Audiostreams vom Client als Eingabe, verarbeiten sie und übergeben das Endergebnis an ein Audiogerät.

XAudio2-Audioeffekte

In diesem Thema werden XAudio2-Audioeffekte behandelt, die eingehende Audiodaten empfangen und vor der Weitergabe bestimmte Vorgänge für die Daten (z. B. einen Halleffekt) ausführen.

Streamen von Audiodaten mit XAudio2

In diesem Thema wird das Audiostreaming mit XAudio2 behandelt.

X3DAudio

In diesem Thema wird X3DAudio vorgestellt. Dabei handelt es sich um eine API, die in Verbindung mit XAudio2 verwendet wird, um die Illusion eines 3D-Klangeffekts zu erzeugen.

XAudio2-Programmierreferenz

Dieser Abschnitt enthält die vollständige Referenz für die XAudio2-APIs.

XAudio2-Anleitungsressourcen

Thema BESCHREIBUNG

So wird's gemacht: Initialisieren von XAudio2

Hier erfahren Sie, wie Sie XAudio2 für die Audiowiedergabe initialisieren, indem Sie eine Instanz des XAudio2-Moduls und eine Masterstimme erstellen.

So wird's gemacht: Laden von Datendateien in XAudio2

Hier erfahren Sie, wie Sie die zur Wiedergabe von Audiodaten in XAudio2 erforderlichen Strukturen füllen.

So wird's gemacht: Wiedergeben von Ton mit XAudio2

Hier erfahren Sie, wie Sie zuvor geladene Audiodaten in XAudio2 wiedergeben.

So wird's gemacht: Verwenden von Submixstimmen

Hier erfahren Sie, wie Sie Gruppen von Stimmen festlegen, um ihre Ausgabe an dieselbe Submixstimme zu senden.

So wird's gemacht: Verwenden der Rückrufe für Quellstimmen

Hier erfahren Sie, wie Sie die XAudio2-Quellstimmrückrufe verwenden.

So wird's gemacht: Verwenden der Modulrückrufe

Hier erfahren Sie, wie Sie die XAudio2-Modulrückrufe verwenden.

So wird's gemacht: Erstellen eines grundlegenden Audioverarbeitungsdiagramms

Hier erfahren Sie, wie Sie ein Audioverarbeitungsdiagramm erstellen, das sich aus einer Masterstimme und einer Quellstimme zusammensetzt.

So wird's gemacht: Dynamisches Hinzufügen und Entfernen von Stimmen zu bzw. aus einem Audiodiagramm

Hier erfahren Sie, wie Sie Submixstimmen zu einem Diagramm hinzufügen oder daraus entfernen, das anhand der Schritte unter So wird's gemacht: Erstellen eines grundlegenden Audioverarbeitungsdiagramms erstellt wurde.

So wird's gemacht: Erstellen einer Effektkette

Hier erfahren Sie, wie Sie eine Effektkette auf eine Stimme anwenden, um die benutzerdefinierte Verarbeitung der Audiodaten für diese Stimme zu ermöglichen.

So wird's gemacht: Erstellen eines XAPOs

Erfahren Sie, wie Sie IXAPO zum Erstellen eines XAudio2-Audioverarbeitungsobjekts (XAPO) implementieren.

So wird's gemacht: Hinzufügen der Laufzeitparameterunterstützung zu einem XAPO

Erfahren Sie, wie Sie laufzeitparameterunterstützung zu einem XAPO hinzufügen, indem Sie die IXAPOParameters-Schnittstelle implementieren.

So wird's gemacht: Verwenden eines XAPOs in XAudio2

Hier erfahren Sie, wie Sie einen Effekt verwenden, der als XAPO in einer XAudio2-Effektkette implementiert wurde.

So wird's gemacht: Verwenden von XAPOFX in XAudio2

Hier erfahren Sie, wie Sie einen der Effekte in XAPOFX in einer XAudio2-Effektkette verwenden.

So wird's gemacht: Streamen von Sound von einem Datenträger

Hier erfahren Sie, wie Sie Audiodaten in XAudio2 streamen, indem Sie einen separaten Thread zum Lesen eines Audiopuffers erstellen und diesen Thread mithilfe von Rückrufen steuern.

So wird's gemacht: Integrieren von X3DAudio in XAudio2

Hier erfahren Sie, wie Sie mit X3DAudio die Lautstärke- und Tonhöhenwerte für XAudio2-Stimmen sowie die Parameter für den integrierten XAudio2-Halleffekt bereitstellen.

So wird's gemacht: Gruppieren von Audiomethoden als Vorgangssatz

Hier erfahren Sie, wie Sie XAudio2-Vorgangssätze verwenden, damit eine Gruppe von Methodenaufrufen gleichzeitig wirksam wird.

Debuggen von Audiostörungen in XAudio2

Hier erfahren Sie, wie der Debuggingprotokolliergrad für XAudio2 festgelegt wird.

Media Foundation-Ressourcen

Media Foundation (MF) ist eine Medienplattform zum Streamen von Audio- und Videodaten. Mithilfe der Media Foundation-APIs können Sie mit verschiedenen Algorithmen codierte und komprimierte Audio- und Videodaten streamen. Die Plattform ist nicht für Echtzeitspielszenarien konzipiert. Stattdessen bietet sie leistungsstarke Tools und breite Codec-Unterstützung für eine lineare Aufnahme und Präsentation von Audio- und Videokomponenten.

Thema BESCHREIBUNG

Info über Media Foundation

Dieser Abschnitt enthält allgemeine Informationen zu den Media Foundation-APIs und die verfügbaren Tools zu ihrer Unterstützung.

Media Foundation: Grundlegende Konzepte

In diesem Thema werden einige Konzepte vorgestellt, die Sie vor dem Schreiben einer Media Foundation-Anwendung kennen müssen.

Media Foundation-Architektur

In diesem Abschnitt werden das allgemeine Design von Microsoft Media Foundation sowie die Mediengrundtypen und die verwendete Verarbeitungspipeline beschrieben.

Audio-/Videoaufzeichnung

In diesem Thema wird die Verwendung von Microsoft Media Foundation zum Aufzeichnen von Audio- und Videodaten beschrieben.

Audio-/Videowiedergabe

In diesem Thema wird die Implementierung der Audio- oder Videowiedergabe in Ihrer App beschrieben.

Unterstützte Medienformate in Media Foundation

In diesem Thema sind die Medienformate aufgeführt, für die Microsoft Media Foundation systemeigene Unterstützung bietet. (Drittanbieter können zusätzliche Formate durch Erstellung benutzerdefinierter Plug-Ins unterstützen.)

Codierung und Dateierstellung

In diesem Thema wird die Verwendung von Microsoft Media Foundation zum Codieren von Audio- und Videodaten und zum Erstellen von Mediendateien beschrieben.

Windows Media-Codecs

In diesem Thema wird beschrieben, wie Sie mit den Features der Windows Media-Codecs für Audio- und Videodaten komprimierte Datenströme erzeugen und wiedergeben.

Media Foundation-Programmierreferenz

Dieser Abschnitt enthält Referenzinformationen für die Media Foundation-APIs.

Media Foundation-SDK-Beispiele

In diesem Abschnitt sind Beispiel-Apps aufgeführt, die die Verwendung von Media Foundation veranschaulichen.

Medientypen der Windows-Runtime-XAML

Wenn Sie DirectX-XAML-Interop verwenden, können Sie die Windows-Runtime XAML-Medien-APIs in Ihre UWP-Apps integrieren, indem Sie DirectX mit C++ verwenden, um einfachere Spielszenarien zu ermöglichen.

Thema BESCHREIBUNG

Windows.UI.Xaml.Controls.MediaElement

XAML-Element, das ein Objekt darstellt, das Audio- oder Videodaten oder beide Datentypen enthält.

Audio, Video und Kamera

Hier erfahren Sie, wie Sie grundlegende Audio- und Videoinhalte in Ihrer UWP-App (Universelle Windows-Plattform) integrieren.

MediaElement

Hier erfahren Sie, wie Sie in Ihrer UWP-App eine lokal gespeicherte Mediendatei wiedergeben.

MediaElement

Hier erfahren Sie, wie Sie in Ihrer UWP-App eine Mediendatei mit geringer Wartezeit streamen.

Medienumwandlung

Hier erfahren Sie, wie Sie mit dem Vertrag für "Wiedergeben auf" Medien aus Ihrer UWP-App auf anderen Geräten streamen.

Verweis