User Tag List

Ergebnis 1 bis 3 von 3

Thema: Eigene Soundscapes

  1. #1
    Mitglied Avatar von novice
    Registriert seit
    18.07.2010
    Beiträge
    313
    Renommee-Modifikator
    9

    Eigene Soundscapes

    Willkommen zurück zum zweiten Teil des Tutorials(Zum ersten Teil)

    Hier werdet ihr lernen wie ihr Soundscapes selbst schreibt.

    Name:  Tastatur.jpg
Hits: 313
Größe:  48,4 KB

    Ein Soundscape steht zusammen mit allen anderen in der Map vorkommenden Soundscapes in einer Textdatei, dem Soundscape-Script. Diese Datei ist in einer von Valve entwickelten, sehr einfachen Scriptsprache geschrieben. Wenn ihr noch keinerlei Erfahrung mit Programmieren oder dem Schreiben in irgendeiner Scriptsprache habt, kann ich euch Notepad++ empfehlen. Das Programm kann mit den VDFSprachen(Für soundscapes, .vmt, .qc ...etc) ausgerüstet werden. Dadurch werden die Fehlersuche und das Schreiben selbst stark erleichtert. Auch als Anfänger kann man das Ganze natürlich einfach im Editor(Windows-Standard-Programm) schreiben

    §1
    Grundregeln zu Scriptsprachen allgemein:
    (Wenn ihr bereits Erfahung mit Scriptsprachen oder Programmieren habt, könnt ihr diesen Punkt überspringen)
    -Alle Werte die zu einer Klasse/Methode/etc gehören, stehen innerhalb von Klammern hinter/unter der Klasse/Methode/etc
    -Innerhalb dieser äußeren Klammern können weitere untergeordnete "Regeln" stehen, deren Werte, meist ebenfalls in Klammern stehen
    -Auf jede geöffnete Klammer muss irgendwann eine zugehörige, geschlossene Klammer folgen. Also: Jede Klammer die ich öffne muss ich
    irgendwann wieder schließen.




    §2
    Grundregeln zu Soundscapes:
    -Alle Werte, Namen, rules etc sind in Anführungszeichen zu setzen
    -Es werden nur geschweifte Klammern verwendet
    -Die Formatierung wirkt sich nicht auf das Script aus. Es ist also egal ob und wie viele Zeilenumbrüche und Leerzeichen(jedoch mindestens ein Leerzeichen zwischen allen Werten)ihr in eurem Script habt. Für einen übersichtlichen und nachvollziehbaren Script sind sie jedoch unerlässlich.
    -Laut Valve-Wiki sind nicht mehr als 30 Soundscapes pro Map/Script möglich.
    -Kommentare werden beim compilen ignoriert. Sie stehen hinter doppelten Slashs.
    -Kommazahlen haben wie im Englischen üblich einen Punkt statt wie im Deutschen ein Komma
    -Manche keyvalues der Regel "playrandom" akzeptieren zufällige Werte. Dafür werden einfach ein Maximalwert und ein Minimalwert durch ein Komma abgetrennt angegeben.
    Beispiel:
    Code:
    "pitch"	"70,120"
    Die Engine wählt so bei jedem Ausführen der Regel einen zufälligen Wert zwischen Minimum und Maximum.

    Klicke auf die Grafik für eine größere Ansicht 

Name:	SoundscapeBaukasten2.jpg 
Hits:	60 
Größe:	44,0 KB 
ID:	1160
    [schematischer Aufbau eines Soundscapes]

    §3
    Gebräuchliche keyvalues:

    1) "wave"
    Gibt den Pfad eines Sounds innerhalb des "Sound"-Ordners im HL2 Verzeichnis an. MP3s können nicht verwendet werden!
    Code:
    "wave"	"ambient/misc/flush1.wav"
    2) "volume"
    Gibt die Lautstärke eines Sounds an. Der Wert darf zwischen "0" und "1" liegen. "1" entspricht 100% - volle Lautstärke
    Code:
    "volume"	"0.45"
    3) "pitch"
    Gibt per Prozentzahl die Tonhöhe des Sounds an. Hiermit kann ein Sound von der Engine aus höher/tiefer gemacht werden.
    "100" entspricht der normalen Tonhöhe. Die Valve-Wiki schlägt vor, Werte zwischen 70 und 130 zu verwenden.
    Code:
    "pitch"	"100"
    4) "position"
    Wenn diese keyvalue gesetzt ist wird der Sound an der angegebenen Position abgespielt, wenn nicht, ist der Sound einfach überall zu hören.
    Die Position wird später im Feld "Sound Position 0-7" im entity selbst festgelegt. Dafür wird der Name eines entities(gebräuchlich sind info_targets)
    in das Feld geschrieben
    Code:
    "position"	"1"
    5) "position" "random"
    Der Sound wird einfach irgendwo in der Nähe des Spielers abgespielt. Diese Stelle in der Nähe des Spielers wird an den Spieler geparentet. Sinnvoll zum Beispiel für Fliegensummen.
    Code:
    "position" "random"
    6) "attenuation"(nur bei der Regel "playlooping")
    Wenn eine Position angegeben ist, bestimmt dieser Wert wie schnell der Sound aufhört zu spielen sobald der Spieler sich von der angegebenen Position wegdreht.
    Diese Zeit wird in Sekunden angegeben. Der Wert kann zwischen 0 und Unendlich(?) liegen.
    Code:
    "attenuation"	"1.4"
    7) "soundlevel"(nur bei der Regel "playlooping")
    Funktioniert wie "attenuation", verwendet jedoch auch von der Engine vorgefertige Werte.
    (Wird selbst von Valve nur relativ selten verwendet)
    Code:
    "soundlevel"	"SNDLVL_140dB"



    §4
    Rules/Regeln
    Wichtige Bemerkungen befinden sich innerhalb der Codes als Kommentare


    1) "dsp"
    Es gibt 29 verschiedene, vorgegebene DSP-types, von denen man sich immer nur einen für sein Soundscape aussuchen kann. Sie sind für Hall, Echo und ähnliches zuständig
    So wird der dsp-type festgelegt:
    Code:
    "dsp" "14"
    Anbei eine Liste mit allen DSP-types der SourceEngine
    Spoiler für DSP-types:
    // DSP types
    //0 : “Normal (off)”
    //1 : “Generic”
    //2 : “Metal Small”
    //3 : “Metal Medium”
    //4 : “Metal Large”
    //5 : “Tunnel Small”
    //6 : “Tunnel Medium”
    //7 : “Tunnel Large”
    //8 : “Chamber Small”
    //9 : "Chamber Medium”
    //10: “Chamber Large”
    //11: “Bright Small”
    //12: “Bright Medium”
    //13: “Bright Large”
    //14: “Water 1”
    //15: “Water 2”
    //16: “Water 3”
    //17: “Concrete Small”
    //18: “Concrete Medium”
    //19: “Concrete Large”
    //20: “Big 1”
    //21: “Big 2”
    //22: “Big 3”
    //23: “Cavern Small”
    //24: “Cavern Medium”
    //25: “Cavern Large”
    //26: “Weirdo 1”
    //27: “Weirdo 2”
    //28: “Weirdo 3”



    2) "playlooping"
    Diese Regel legt fest, dass der Sound der unter "wave" angegeben wird, geloopt wird, also als Endlosschleife läuft.
    Das bedeutet aber auch, dass der verwendete Sound loopfähig sein muss.
    Valve hat uns das bei den Standard-Sounds meistens mit einem "_loop" hinter dem Soundname signalisiert.
    Code:
    "playlooping"
    	{
    		"volume" "0.3"	//30% der Maximallautstärke
    		"pitch"  "100"	//100% Pitch, also normale Tonhöhe
    		"wave"   "ambient/atmosphere/underground_hall_loop1.wav"	//ein dumpfes Dröhnen
    	}
    3) "playrandom"
    Eine sehr hilfreiche Regel: Mit ihr können zufällige Sounds in festgelegten oder auch zufälligen Zeitabständen abgespielt werden.
    Selbstverständlich ist es auch möglich nur einen einzelnen Sound in zufälligen Zeitabständen abzuspielen.
    Code:
    "playrandom"
    {
    	"volume" "0.2"
    	"pitch"  "100"
    	"time"   "3,15"
    	"rndwave"	//"rndwave" und die geschweiften Klammern müssen in Verbindung mit "playrandom" immer
    			//verwendet werden, auch wenn nur ein Sound eingebunden wird.
    		{
    			"wave" "ambient/animal/bird9.wav"
    			"wave" "ambient/animal/bird8.wav"
    			"wave" "ambient/animal/bird7.wav"
    			"wave" "ambient/animal/bird6.wav"
    			"wave" "ambient/animal/bird2.wav"
    			"wave" "ambient/animal/bird13.wav"
    			"wave" "ambient/animal/bird14.wav"
    			"wave" "ambient/animal/bird19.wav"
    			"wave" "ambient/animal/bird20.wav"
    		}
    }
    4) "playsoundscape"
    Spielt das unter "name" angegebene Soundscape. Der DSP-type des Unter-Soundscapes wird überschrieben. Ausserdem gibt es folgende keyvalues speziell für diese Regel:
    -"position" lässt in diesem Fall alle Sounds des Unter-Soundscapesa an einer Stelle spielen
    -"positionoverride" lässt alle positionierten Sounds des Unter-Soundscapes an einer Stelle spielen
    -"ambientpositionoverride" lässt alle unpositionierten Sounds des Unter-Soundscapes an einer Stelle spielen
    Code:
    "playsoundscape"
    {
    	"name"			"combine.computer"
    	"volume"		"1.0"
    	"positionoverride"	 "0" 	//alle Sounds die im Untersoundscape "combine.computer" auf eine Position
    					//zugewiesen waren spielen jetzt an der Position "0"
    }

    5) "soundmixer"
    Zitat Zitat von Valve-Wiki
    Selects a custom soundmixer. Soundmixers manage the priority and volume of groups of sounds; create new ones in scripts\soundmixers.txt (ALWAYS use Default_Mix as a template)
    Da ich diese Funktion noch nie benötigt habe und auch nicht wirklich verstehe, wozu sie gebraucht wird, werde ich nicht näher darauf eingehen.

    §5
    BEISPIEL:
    Das war jetzt schonmal ganz schön viel. Für ein gutes Soundscape brauchen wir aber lang nicht alle Funktionen.
    Wir werden erstmal mit kleinen Soundscapes anfangen.
    Dazu erstellen wir eine Textdatei, das Soundscape-Script, in das die Soundscapes geschrieben werden. Für jede Map muss diese Textdatei neu erstellt werden, denn jede Map kann nur die Soundscapes aus ihrem zugehörigen Soundscape-Script nutzen. Also gehen wir in den Ordner "...\SteamApps\Steam-Name\HL2-Modifikation\Spiel\" bei mir wäre das am Beispiel CS:S: "C:\Programme\Steam\SteamApps\XXX\counter-strike source\cstrike"

    Dort wird, falls er nicht schon vorhanden ist, ein neuer Ordner mit dem Namen "scripts" erstellt. Hier wird das Soundscape-Script für eure Map platziert. Wenn eure Map "de_dust2" heisst, muss eure Datei "soundscapes_de_dust2.txt" heissen.
    Jetzt können wir direkt mit dem Schreiben anfangen:
    Und zwar mit dem Namen des ersten Soundscapes, das in meinem Beispiel die Geräuschkulisse in einem kleinen Garten sein soll. Ich nenne es also "soundscape.garden". Der Name ist allerdings völlig egal, solange keine Sonderzeichen oder Ähnliches darin vorkommt... Ich denke ihr wisst was ich meine.
    Darauf folgt überlicherweise der "dsp-type" als erste Regel. Wir suchen uns also aus der Liste einen passenden aus; in meinem Fall z.B. "Bright Large" - "13" für eine helle, freundliche Atmosphäre.
    Dann folgt schon unsere zweite Regel - in meinem Beispiel soll das "playlooping" sein. Verwenden werde ich sie, um einen Grundsound zu erzeugen, der immer zu hören sein soll. So eine Art Fundament für mein Soundscape.
    Jetzt brauchen wir einen Sound für die Regel. Also starten wir den "Sound Browser" im Hammer-Editor und suchen per Filter einen Sound der uns gefällt. In das Soundscape muss der komplette Pfad geschrieben werden, der im Feld "Sound Name" angezeigt wird.

    Name:  Tools_Soundbrowser.JPG
Hits: 309
Größe:  20,2 KBKlicke auf die Grafik für eine größere Ansicht 

Name:	Soundbrowser.JPG 
Hits:	56 
Größe:	55,9 KB 
ID:	1161
    Hilfreiche Filter sind beispielweise:
    -"atmosphere"
    -"nature"
    -"industrial"
    -"wind"
    -"animal"
    -"tone"
    ...

    Schließlich wird noch ein pitch-Wert angegeben und die erste Regel ist fertig.


    Aber Achtung!: Jeder Sound, der in der Regel "playlooping" verwendet wird muss, wie gesagt, loopgfähig sein.

    Mein Soundscape sieht bis jetzt so aus:
    Code:
    "soundscape.garden"
    {
    	"dsp" "13"
    	"playlooping"
    	{
    		"volume" "0.2"
    		"pitch"  "100"
    		"wave"   "ambient/wind/wind_outdoors_1.wav"
    	}
    }
    In meinem Garten sollen aber auch Grillen zirpen und Vögel zwitschern, das kommt jetzt... Zuerst zu den Grillen: Für die erstelle ich eine weitere playlooping-Regel, weise dieses Mal aber zusäzlich noch eine Position zu, denn meine Grillen sollen nur an bestimmten Stellen im Garten zirpen. Für jede meiner Positionen(in meinem Fall drei) muss eine neue playlooping-Regel erstellt werden, denn für einen Sound kann immer nur eine Position angegeben werden. Für meine Grillen nehme ich folgenden Sound: "ambient/animal/crickets.wav"
    Jetzt zu den Vögeln: Die sollen überall zu hören sein und in zufälligen Zeitabständen zwitschern, ich brauche also "playrandom". Als passende Sounds habe ich einige der "ambient/animal/birdX.wav"-Sounds herausgesucht. Mit der keyvalue "time" geben wir dann noch an, wie lang die Zeit zwischen den Sounds sein soll. In meinem Fall sollen die Intervalle recht klein sein.

    Mein Soundscape sieht jetzt so aus:
    Code:
    "soundscape.garden"
    {
    	"dsp" "13"
    	"playlooping"		//Soundscape-Basis: Windrauschen
    	{
    		"volume" "0.2"
    		"pitch"  "100"
    		"wave"   "ambient/wind/wind_outdoors_1.wav"
    	}	
    	"playlooping"		//an Position 0 ist ein gelooptes Grillenzirpen zu hören
    	{	
    		"volume"   "0.2"
    		"pitch"    "100"
    		"position" "0"
    		"wave"     "ambient/animal/crickets.wav"
    	}
    	"playlooping"		//an Position 1 ist ein gelooptes Grillenzirpen zu hören
    	{	
    		"volume"   "0.2"
    		"pitch"    "100"
    		"position" "1"
    		"wave"     "ambient/animal/crickets.wav"
    	}
    	"playlooping"		//an Position 2 ist ein gelooptes Grillenzirpen zu hören
    	{	
    		"volume"   "0.2"
    		"pitch"    "100"
    		"position" "2"
    		"wave"     "ambient/animal/crickets.wav"
    	}
    	"playrandom"		//Zufällige Vogel-Sounds die überall zu hören sind
    	{
    		"volume" "0.2"
    		"pitch"  "100"
    		"time"   "3,15"
    		"rndwave"
    			{
    				"wave" "ambient/animal/bird9.wav"
    				"wave" "ambient/animal/bird8.wav"
    				"wave" "ambient/animal/bird7.wav"
    				"wave" "ambient/animal/bird6.wav"
    				"wave" "ambient/animal/bird2.wav"
    				"wave" "ambient/animal/bird13.wav"
    				"wave" "ambient/animal/bird14.wav"
    				"wave" "ambient/animal/bird19.wav"
    				"wave" "ambient/animal/bird20.wav"
    			}
    	}
    }
    Für den Garten sollte das erstmal reichen. Vom Garten gelangt man über einen Schacht in einen Abwasserkanal. Eine passende Stelle für das zweite Soundscape.
    Ich nenne es "soundscape.canal" und werde als Basis dieses Mal drei verschieden Sounds verwenden: Das Geräusch eines Baches, ein Tropfen und ein Plätschern . Zusätzlich soll an zwei verschiedenen Stellen, an denen Rohre in den Kanal münden, ein besonders lautes Plätschern zu hören sein.
    Es sieht also folgendermaßen aus:
    Code:
    "soundscapes.canal"
    {
    	"dsp" "5"
    	"playlooping"	//das Geräusch des Bachs
    	{
    		"volume" "0.3"
    		"pitch"  "100"
    		"wave"   "ambient/levels/canals/water_rivulet_loop2.wav"
    	}
    	"playlooping"	//das Tropfen
    	{
    		"volume" "0.35"
    		"pitch"  "100"
    		"wave"   "ambient/water/drip_loop1.wav"
    	}
    	"playlooping"	//das Plätschern
    	{
    		"volume"   "0.4"
    		"pitch"    "100"
    		"wave"     "ambient/nature/water_gently_lapping.wav"
    	}
    	"playlooping"	//lautes Plätschern an Position 0
    	{
    		"volume"   "0.9"
    		"pitch"    "100"
    		"position" "0"
    		"wave"     "ambient\nature\water_streamloop3.wav"
    	}
    	"playlooping"	//lautes Plätschern an Position 1
    	{
    		"volume"   "0.9"
    		"pitch"    "100"
    		"position" "1"
    		"wave"     "ambient\nature\water_streamloop3.wav"
    	}
    }
    Dieses Beispiel-Script wird nun gespeichert und wir können die in ihm enthaltenen Soundscapes, wie im ersten Teil des Tutorials beschrieben, in die Map einbauen.

    Klicke auf die Grafik für eine größere Ansicht 

Name:	info_target.JPG 
Hits:	55 
Größe:	60,9 KB 
ID:	1166
    [So werden die im Soundscape verwendeten Postionen auf info_targets verlinkt]

    Wie bei jeglichem sonstigen Custom-Content, muss auch bei den Soundscapes jeder Client das Soundscape-Script auf seinem Rechner haben. Es reicht also nicht, wenn nur der Server über die Soundscapes verfügt. Ich empfehle daher das Einbinden der "soundscapes_MAPNAME.txt" in die .bsp per MAN.

    Das war der zweite Teil des Tutorials. Ich hoffe ich konnte euch dieses Thema näherbringen und ihr werdet in Zukunft eure Maps auch mit eigenen Soundscapes bereichern!


    mfG novice
    Geändert von novice (10.12.2010 um 14:02:36 Uhr)
    signatur.jpg

  2. #2
    Moderator Avatar von Campeòn
    Registriert seit
    20.06.2010
    Ort
    Bielefeld
    Beiträge
    2.189
    Blog-Einträge
    1
    Renommee-Modifikator
    20
    Super!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Darauf habe ich gewartet, werde direkt meine Map vertonen und einen großen Schritt weiter sein.
    Because we do not know when we will die, we get to think of life as an inexhaustible well, and yet everything happens only a certain number of times ... And a very small number really. How many more times will you remember a certain afternoon of your childhood ... an afternoon that is so deeply a part of your being that you can't even conceive of your life without it? Perhaps four or five times more. Perhaps not even that. How many more times will you watch the full moon rise? Perhaps 20. And yet it all seems limitless.

  3. #3
    Mitglied Avatar von chuuuuucky
    Registriert seit
    20.06.2010
    Beiträge
    382
    Blog-Einträge
    1
    Renommee-Modifikator
    10
    1A Tutorial super erklärt so müsste das jeder hinkriegen. Daumen hoch und grünes.

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
[email protected]