FAQ/Entwicklung/XNA/Sound

Aus Das Sopra Wiki
Wechseln zu: Navigation, Suche
Wie bekomme ich Soundeffekte ins Spiel?

Um Sounds ins Spiel zu bekommen, solltest du das X Audio Creation Tool benutzen. (s.h auch XNA Audio Programming Guide ) Außerdem macht es Sinn, dir einen Überblick über die XNA Audio Klassen zu verschaffen. Für reine 2D-Sounds, z.B. für Menüs ist auch die SoundEffect-Klasse interessant, die ohne XACT auskommt.

zum Anfang

Wie bekomme ich Hintergrundmusik ins Spiel?

Der einfachste und vermutlich beste Weg führt über die MediaPlayer-Klasse. Artikel dazu mit Sample

zum Anfang

Wie bekomme ich 3D-Sound? (d.h. Stereo entsprechend der Position eines Objekts z.B. zur Kamera)

XNA stellt sogenannte Audio Emitter und -Listener zur Verfügung, damit geht alles ganz einfach - Ein Sample für 3D-Sound.

zum Anfang

Wir haben Performanceprobleme (eventuell besonders bei bestimmten Aktionen), kann das am Sound liegen?

Das kann sein, ja. Für jeden abgespielten Sound wird ein neues Objekt, eine sog. Cue, erstellt. Wenn dein Spiel in jedem Update-Zyklus erneut einen oder mehrere von diesen Objekten erzeugt, dann kann das die Framerate sehr schnell sehr stark drücken. Typischerweise passiert so etwas zum Beispiel, wenn ein Sound immer abgespielt wird, wenn eine bestimmte Taste gedrückt ist. Falls der Benutzer dann diese Taste hält (z.B. MG-Feuer), wird in jedem Update (falls die Implementierung entsprechend schlecht ist) eine Cue erzeugt.

zum Anfang

Wie verhindere ich, dass bei jedem Update eine neue Cue erzeugt wird?

Es macht Sinn, zwischen Sounds zu unterscheiden, die einmalig abgespielt werden sollen und solchen, die geloopt werden (z.B. ein Motorengeräusch). Dann muss zwar wegen der eventuellen Positionsveränderung trotzdem geupdated werden, aber man könnte z.B. eine Methode implementieren, die die eine zu einem Objekt gehörende Cue nur dann neu instanziiert, wenn sie zu Ende gespielt hat und sonst nur die Position updated.

zum Anfang

Was sind gute Einstiegspunkte, wenn ich mich in das Thema Sound unter XNA einlesen will?

Am besten schaust du dir mal die Klassen auf MSDN an, dann hast du schon einen Überblick und dann ein Sample. Hier einige Links:

zum Anfang

Ich habe im Code alles richtig gemacht, aber der Sound wirkt nicht 3D-mäßig. Wo klemmt's?

Möglicherweise hast du in deiner Soundbank den Sounds nicht die entsprechenden RPCs gegeben. Füge im XACT Distance Curve und eventuell Doppler Curve hinzu. Dann könnte es gehen.

zum Anfang