Benutzer-Werkzeuge

Webseiten-Werkzeuge


tutorials:sound

Sound Tutorial

Robert

Wir kennen im DEDK zwei Arten von Sounds. Da ist einmal die Begleitmusik und zum Anderen einzelne Sprüche („Es ist Zahltag“) oder Geräusche (Kanonendonner)

Begleitmusik

Die Begleitmusiken liegen im Siedler-Verzeichnis unter „..\Base\shr\music“ als MP3 - Dateien.

Laut „Chef“ ist es zwar durch Umwege auch möglich andere Mp3-Dateien abzuspielen. Dies ist aber nicht praktikabel. Niemand hat diese Dateien auf seinem PC. Sie müßten daher immer mitgeliefert werden und in das entsprechende Verzeichnis gepackt werden.

Dann kann man im Map-Editor Gebieten mit dem XS_Ambient einen bestimmten Sound zuweisen.

Das Ambient erzeugt man im Map-Editor. Unter Punkt Type legt man die Art der Musik fest. Unter Punkt Volume die Lautstärke.

GUI Sounds

Die anderen Sounds sind dagegen schon etwas interessanter. Die Namen der Sounds sind in dem Table Sounds gespeichert. Nach meinem Stand gibt es 1364 verschiedene davon.

Man kann dort alle Geräusche, Sprüche finden, die wir andauernd beim Spielen hören. Alle Sprüche des Mentors, der Helden und sonstiger Personen. Dann Geräusche wie Wasserfall, Explosionen, Feuer und vieles mehr. Eine vollständige Liste ist hier zu finden.

Nun können diese im Programm abgespielt werden. Dies geschieht mit:

Sound.PlayGUISound( ausgesuchter Sound , Lautstärke )

Der ausgesuchte Sound ist aus der o.g. Liste; davor muß noch „Sounds.

Lautstärke: Man kann die Lautstärke zwischen 1% und 100 % einstellen. Man muß nichts schreiben. Dann ist die Voreinstellung [default] = 0, was auch 100 % sind.

Konkretes Beispiel:

 id = Sound.PlayGUISound( Sounds.VoicesMentor_HAPPY_Alchemist , 60 )

Hier sagt der Mentor mit 60 % der vollen Lautstärke, dass einer unserer Alchimisten sehr glücklich ist.
Als Rückgabe erhalten wir die id des Sounds.
Jetzt gibt es innerhalb der Sounds viele, die im Text „_r n d_“ stehen haben. Z.B.:

Sounds.VoicesMentor_INFO_VillageCenterEmpty_rnd_01
Sounds.VoicesMentor_INFO_VillageCenterEmpty_rnd_02
Sounds.VoicesMentor_INFO_VillageCenterEmpty_rnd_03
Sounds.VoicesMentor_INFO_VillageCenterEmpty_rnd_04

Nun wird nicht, wie ich angenommen hatte bei „01“ der Sound „01“ abgespielt. Hier wird dann durch Zufall ausgewählt einer der 4 abgespielt. Meine Nachfrage ob dies ein Fehler sei wurde von Chromix mit

Das ist kein Fehler, das ist nur "unerwartetes Verhalten" durch eine kleine Designänderung.

beantwortet. Also doch ein Fehler. Aber kein schlimmer.

Die Dauer der Sounds ist vorgegeben kann aber nach Wunsch gestoppt werden. Es kann nicht deren Länge abgefragt werden.

Hilfscode/Funktionen

Durch einen kleine Umweg kann man aber wissen, wann der Sound zu ende ist.

	...
	id = Sound.PlayGUISound( Sounds.VoicesMentor_HAPPY_Alchemist , 60 )
	while Sound.IsSoundPlaying( id ) do
		DelayShort(2);
	end
	...

In der ersten Zeile wird unser gewünschter Sound gespielt. Dann bleibt das Programm in der While-Schleife, bis der Sound zu ende ist. Dann gehts erst weiter. Das ganze muß innerhalb einer DelayFunc ablaufen. Da während eine DelayFunc läuft nicht gespeichert werden kann, sollte diese Funktion nur während Briefings verwendet werden, oder für Sounds die nur einmal abgespielt werden. Wenn ein Sound ständig, oder wiederholt abgespielt werden soll, muss dieses aus einem SimpleJob heraus geschehen, da es dem Spieler ja ermöglicht werden muss abzuspeichern.

Um einen Sound zu stoppen, bevor dieser von sich aus zuende ist, hilft diese Funktion:

			Sound.StopSound( id )



Zur Tutorial-Übersicht

tutorials/sound.txt · Zuletzt geändert: 2021/09/18 19:16 (Externe Bearbeitung)