SourceEngine Les soundscapes de A à Z

  • Initiateur de la discussion
  • Administration
Seb

Seb

El Dictator
Membre du Staff
Messages
1 875
Score réaction
454
Points
370
Ce tutorial réalisé entièrement par Neji et provient des archives de mapping-area et modding-area.
Les archives sont anciennes, certains tutoriels peuvent ne plus correspondre aux dernière versions.


-


Les soundscapes de A a Z.

Salut a tous,

Je vous propose aujourd'hui un tuto complet sur les soundscapes, celui déjà présent sur le site étant non complet, je suis donc allez chipoter du côté de valve et j'ai découvert plein de truc waaah!!! dont je vais vous faire part. Ça fait très longtemps que je n'ai pas fait de tuto j'espère être assez clair

_ _ _ _ _​
1 - Le soundscape c'est quoi?

C'est un outil qui permet de gérer son ambiance sonore sur sa map en allant chercher les infos nécessaires dans un fichier .txt dans le dossier script de votre jeu. C'est dans ce fichier .txt, que l'on appellera "soundscape.txt", que vous allez définir les sons que vous voulez jouer dans votre map et avec tel ou tel attribut. Tel un .vmt, le soundscape.txt obéit a une syntaxe précise.
En effet un soudscape.txt est en fait composé de plusieurs portions (ou soundscape) que l'on appellera "entrée" et c'est cette entrée que l'on va appeler in-game pour jouer des sons. On peut facilement créer une ambiance zone par zone (pièces par pièces) et c'est donc très utile en intérieur.

=> Voici un soundscape simpliste pour vous montrer comment ils sont fait :

Code:
//(premiere entrée)
"para_generator_room" => "nom de l'entrée 1"
{
"dsp" "1"
"playlooping"
{
"volume" "0.75"
"pitch" "100"
"wave" "cs_paranoia/JD01.wav"
}
}
"para_under" =>"nom de l'entrée 2"
{
"dsp" "1"
"playlooping"
{
"volume" "0.60"
"pitch" "100"
"wave" "cs_paranoia/JD02.wav"
}
}

Je vais vous expliquer ce qui compose une entrée par la suite mais en gros une entrée gère un son dans ce cas la.

Mais pourquoi le soundscape?

-ça évite une flopper d'ambiant_généric et autre entités qui vont avec (logic_timer, etc...)
-ça permet de bien gérer ses ambiances surtout en intérieur.
-on peut éditer son ambiance via le soundscape.txt sans avoir à passer par hammer et à recompiler!!! (super si on trouve l'un des sons trop fort)

Mais ça ne veux pas dire pour autant mettre l'ambiant_generic a la poubelle puisque celui ci restera tres utile pour les sons "trigger" intervenant que pour des événements...

_ _ _ _ _​
2 - Comment utiliser le soundscape?

Il suffit d'utiliser un "env_sounscape" (à choisir donc dans les entités points) et de le placer sur sa map. Ensuite il faut lui indiquer quel "entrée" utilisé parmi tout les soundscapes inscrit dans le "soundscape_manifest.txt" présent dans le dossier script.

Qu'est ce que ce manifest? Et bien c'est la liste des "soundscape.txt" que le jeu vas prendre en compte une fois lancé,
si vous décidez de créer votre propre "soundscape.txt", vous devez le rajouter dans la liste.

Remarque : Il ne faudra pas oublier d'inclure ce manifest dans votre .bsp sinon les autres personne n'auront pas vos soundscapes perso. Dans ce cas la il faudra inclure le manifest dans le .bsp afin qu'il soit chargé en priorité en jeu sur celui d'origine.

Remarque bis : cet ajout est inutile si vous appelez votre soundscape comme le nom de votre map si, bien sur, il ne vous sert que pour celle ci.
(pour mon cas pour cs_paranoia le soudnscape sera "soundscapes_cs_paranoia.txt")

_ _ _ _ _​
3 - L'env_soundscape
env_so10.jpg
Revenons a nos moutons, on a donc placé notre env_soundscape dans notre map (on remarque au passage qu'il en existe plusieurs sortes mais pour l'instant on reste sur celui de base)

Voici les propriétés de "l'env_soundscape" :

A - Name : Nom de l’entité.

B - Parent : Si vous voulez parenter le soundscape a une autre entité.

C - Start Disabled : Si vous voulez que le soundscape soit activé ou nom au début de la map.

D - radius : C'est la portée de l'env_soundscape (et non du soundscape lui meme!!) mais mais... et bien figurez vous que cette entité fonctionne comme un trigger et quand on entrera dans le radius de celui ci et bien il sera activé. A l'inverse, si on sors de cette portée, le sounscape utilisé ne s'arrêtera pas mais continuera jusqu'à ce qu'on croise la route d'un autre sounscape. En gros pour une maison, pour l'ambiance d'intérieur, il faudra un env_soundscape a l'entrée mais si on ressort, pour passer dans l'ambiance extérieure il faudra un autre env_soundscape.
il ne faut donc pas mettre ces env_soundscpae n'importe ou et bien gérer pour ne par ce retrouver avec une ambiance complètement fausse et faites bien attention que deux radius de deux soundscapes ne se touchent pas.

A tester : D'apres valve, une valeur -1 permettrait de faire jouer le soundscape du moment qui soit dans notre champs de vision.

E - soundscape : C'est le nom de l'entrée que l'on veut utiliser parmi toutes celle présentes dans tout les soundscape.txt listés dans le manifest.txt (un large choix donc)

(ex : "para_under")

F - position 0-7 : On va voir ça un peu plus tard mais c'est pour gérer les sons fixes.


C'est bien maintenant on sait appeler un soundscape, maintenant on va voir quoi mettre dedans

_ _ _ _ _​
4 - Le soundscape.txt et ses subtilités :

On sais que le .txt est composé de plusieurs soundscapes, maintenant va falloir décortiquer ceux-ci :
Code:
"para_under" (nom du soundscape)
{
"dsp" "1"
"playlooping"
{
"volume" "0.60"
"pitch" "100"
"wave" "cs_paranoia/JD02.wav"
}
"playrandom"
{
"time" "0.1,1.5"
"volume" "0.5,1"
"pitch" "100"
"rndwave"
{
"wave" "Cs_paranoia/rats.wav"
}
}
}
"dsp" - c'est l'effet que vous allez donner au son que l'entrée vas jouer.

voici la liste des effets :

Code:
0 : "Normal (off)"
1 : "Generic" (gère l'écho en fonction de l'environnement)
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"
(Bon si vous êtes habitué a ça tant mieux )


"playlooping" - C'est la manière de jouer un son, ici playlooping, le son ou les son présents dans la boucle suivante sont joués en boucle (il faut que votre son soit loop par contre)

=> Petiti tuto sur goldwave pour créer un son loop : ICI
=> Petiti tuto sur le magnéto de windows pour créer un son loop : LA
Code:
 "playlooping"
{
"volume" "0.60"
"pitch" "100"
"wave" "cs_paranoia/JD02.wav"
Dans cette boucle :

"volume" - Le volume du son joué
"pitch" - Le pitch sert a faire varier le son, la valeur 100 est la valeur normale, une valeur élevé et le son sera rapide et aigu, une valeur plus basse et il sera lent et grave.
"wave" - Le chemin d'acces au son (ne pas oublier le suffixe .wav)

Note : les soundscape gèrent aussi le format .mp3, dans ce cas la :
"mp3" "Cs_paranoia/slot_bullet.mp3" (clin d'oeuil clin d'oeil)

dans une entrée on peu mettre plusieurs configs (ex : 1 playlooping et 1 playrandom)

"playrandom" - "ici playrandom" permet de jouer des sons aléatoirement.

Code:
 "playrandom"
{
"time" "0.1,1.5"
"volume" "0.5,1"
"pitch" "100"
"rndwave"
{
"wave" "Cs_paranoia/rats.wav"
}
}
Dans cette boucle :

"time" - C'est le temps séparant deux sons joué aléatoirement, ici les sons seront joué toute les "entre 0.1 et 1.5 secondes."
"volume" - Le volume aléatoire des sons joués, il seront joués ici entre 0.1 et 1.5.
"rndwave" - Un boucle qui regroupe les différents sons à jouer aléatoirement.

note : pas encore testé avec des .mp3.


Une dernière config, le "playsoundscape"

Code:
"para_under" (nom du soundscape)
{
"dsp" "1"
"playlooping"
{
"volume" "0.60"
"pitch" "100"
"wave" "cs_paranoia/JD02.wav"
}
"playsoundscape"
{
"name" "para_floor1"
"volume" "0.5"
}
}
Cela permet de jouer un soundscape dans le soundscape pas si idiot que ça.


"name" - le nom de l'entrée appelé.
"volume" - permet de modifier "proportionnellement" le volume de tout les sons jouer a partir de ce soundscape, ici 0.5, en fait le volume des sons sera diminué de 50%

Ceci est très pratique quand oon a un extérieur et une ambiance intérieur où on voudrait quand meme bien entendre ce qui se passe dehors mais moins fort (normal y'a des murs)

_ _ _ _ _​
5 - Les positions :

Vous me direz c'est bien beau mais on a que des ambiance globale la dessus. Mais on va y remédier en utilisant les positions. On vas pour cela travailler avec l'env_soundscape, le soundscape.txt et des info_target.

Mission : placer dans la zone de votre soundscape un son de générateur, il sera entendu que lorsqu'on ce trouve dans ce soundscape mais sera fixe au générateur (bien pour insonoriser les murs), voila la marche a suivre :

1 - Placer un info_target sur votre générateur, lui donner un nom (ex : para_gene)

2 - Dans les propriété de l'env_soundscape de la zone, regardez les positions, il est possible de placer 8 positions pour 1 env_soudnscape; Entrez le nom de votre info_target dans une des positions (on va prendre 0 pour commencer), Voila ce que l'on doit obtenir (image prise sur le net, il y a ici trois positions)

env_so11.jpg


3 - Dans votre soundscape.txt on va modifier l'entrée en question et lui rajouter quelques lignes.

En playlooping

Code:
"para_generator_room"
"dsp" "1"
"playlooping"
{
"volume" "0.75"
"pitch" "100"
"wave" "cs_paranoia/JD01.wav"
"position" "0"
"attenuation" "0.7"
}
}
"position" va définir quel son se jouera a cette position et donc concorde avec celle mise dans l'env_soundscape
"atténuation" va jouer sur la porter de ce son a partir de son origine, elle ne fonctionnera que si une position est utilisée, a l'inverse, "position" peux s'en passer.

En playrandom

Code:
"para_generator_room"
"dsp" "1"
"playrandom"
{
"volume" "0.75"
"pitch" "100"
"position" "random"
"attenuation" "0.3,0.8"
"rndwave"
{
"wave" "cs_paranoia/monster01.wav"
"wave" "cs_paranoia/monster02.wav"
"wave" "cs_paranoia/monster03.wav"
}
}
}
On peux choisir "playrandom" si on veux mettre une position aléatoire ( "position" "random" ) et si on veux une aténuation aléatoire ( "attenuation" "0.3,0.8" )

En playsoundscape

et oui c'est possible aussi on peut jouer un soundscape localement.

Code:
"para_generator_room"
"dsp" "1"
"playsoundscape"
{
"volume" "0.75"
"name" "para_generator_room"
"positionoverride" "1"
"ambientpositionoverride" "1" //!\\ soit l'une, soit l'autre
}
}
"positionoverride" cette syntaxe fonctionne comme la position d'un "playlooping" ou "playrandom", c'est juste pour faire chier le nom, le soundscape va être entièrement joué sur cette position.

"ambientpositionoverride" La, la différence c'est que le soundscape va prendre en compte les positions de l'entrée appelée et les transmettre a cette position (dur dur a cette heure ci de trouver une autre formulation)

Voila vous pouvez bien configurer vos soundscapes maintenant.

_ _ _ _ _​
6 - Les autres env_soundscape

Il existe en fait deux variantes de l'env_soundscape, le proxi et le triggerable :

L'env_soundscape_proxi : Il fonctionne de la meme manière sauf qu'il ma copier un env_soundscape normal.

Dans ces propriétés on ne trouvera pas de position mais on trouvera la ligne "MainSoundscapeName" qui doit accueillir le nom d'un evn_soundscape déjà existent. A quoi ça sert? Ben tout simplement a simplifier le travail car si une zone possède 5 sorties avec pour chacune leurs env_soundscape avec chacun leurs 8 positions ben on s'en sort plus au lieu de ça, on aura un env_soundscape avec ses 8 positions et 4 proxis qui le copierons (optimisation, optimisation...)

L'env_soundscape_triggerable : Lui aussi fonctionne de la même manière que l'env_soudnscape normal mais il va fonctionner avec un "trigger_soundscape".

En gros si vous ne supportez pas le systeme de radius, placez un brush entité "trigger_soundscape" pour vous simplifier la vie (ou pas) et ici hors de question d'utiliser les inputs/outputs puisqu'il suffit de tapper le nom du soundscape dans le champ "soundscape" du trigger et hop! (merci valve).

_ _ _ _ _​
Voila tuto terminé mais pas forcément fini, je suis sur d'etre passé a coté de quelque chose (des fautes aussi..)
N'hésitez pas a dire si vous voyez des ambiguïtés ou des choses qui ne vont pas du tout.

Neji
 
Blackghost9

Blackghost9

Geek suprême
Messages
210
Score réaction
56
Points
100
Merci beaucoup sa va vraiment m'aider o_O
 
  • J'aime
Réactions: Seb
  • Initiateur de la discussion
  • Administration
Seb

Seb

El Dictator
Membre du Staff
Messages
1 875
Score réaction
454
Points
370
Blackghost9 à dit:
Merci beaucoup sa va vraiment m'aider o_O
Y a encore quelques dizaines de tutoriels dans le style qui seront récupérés même ca va arriver au compte goute :)
 
  • J'aime
Réactions: Blackghost9
Discord Hytale, Minecraft, Rust, ARK, FiveM

Découvrez mTxServ!

Discord d'entraide

Rejoignz-nous sur Discord