Audio
Jeudi, 02 Juillet 2009 14:52

Généralités

Souvent considérée comme accessoire, la gestion du son est pourtant essentielle dans un jeu, participant grandement à l'immersion du joueur... Notre moteur exploite l'API audio 3D OpenAL. Elle permet notamment de « spatialiser » n'importe quel son dans l'espace de la scène.

Conception du module son

Le module a été conçu pour respecter au mieux la philosophie du moteur, et se calque logiquement sur l'utilisation des modules graphiques. Il inclus des objets son (SoundObject) qui permettent la lecture et la localisation dans l'espace des sons. En somme, l'objet son est une source émettant un son donné, et possédant des propriétés propres telles qu'une position, un volume, une fréquence, etc.

La particularité du module se situe dans l'existence d'une entité unique (SoundSystem) permettant :

  • Le contrôle global des sons (volume général, etc.)
  • La mise en place d'un fond sonore (musique, ambiance) qui n'est pas soumis à la localisation 3D
  • Le contrôle de l'écouteur (Listener)

L'écouteur est l'équivalent audio de la caméra, il est les oreilles du joueur. Tout son joué via un objet son est perçu par l'écouteur en respectant la propagation du son dans l'espace. Les sons éloignés sont, par exemple, perçus avec un volume moins important que les sons proches. De même, un son en mouvement sera perçu différemment par l'écouteur d'un son immobile (effet Doppler). Le déplacement de l'écouteur influe également sur la perception des sons.

Partage des ressources

Tout comme les ressources graphiques, les ressources sonores sont partagées via le Manager de ressources. Un fichier audio donné n'est toujours chargé qu'une seule fois, quelque soit le nombre de sources l'utilisant. Cf. section sur les ressources.

Limitations

OpenAL impose certaines limitations concernant les ressources sonores à utiliser. Un son n'est « spatialisable » que s'il ne comporte qu'un seul canal. En d'autres termes, seul un son mono peut être lus par un SoundObject.

Par ailleurs, notre moteur ne supporte que les fichiers au format OGG.