Comment dois-je atténuer le son dans un jeu 2D où vous pouvez zoomer et dézoomer?

8

Dans mon jeu 2D, j'ai des sons ambiants comme le bruit d'une cascade ou le bourdonnement d'un générateur. Cependant, il n'est pas pratique de jouer ces sons tout le temps à plein volume car à un niveau élevé, le chevauchement de beaucoup de ces bruits serait assez désagréable pour l'oreille.

Je pense actuellement à un système qui module le volume de certains sons en fonction de leur distance au lecteur. Cependant, ce n'est pas en partie une excellente solution car (par exemple) dans un état zoomé, le lecteur peut être assez éloigné de la source sonore (comme une chute d'eau) mais être toujours en mesure de le voir à l'écran sans l'entendre (en raison à la distance) ce qui est assez gênant.

Existe-t-il une solution à un tel problème?

ares_games
la source
3
Les "meilleures pratiques" sont trop larges, mais il semble que le nœud de votre question concerne le zoom, qui est plus responsable et intéressant. J'ai donc supprimé le bit "meilleures pratiques".

Réponses:

8

Je pense que vous êtes sur la bonne voie. Votre système d'atténuation basé sur la distance proposé devrait fonctionner si vous

  • utilisez toujours la distance dans le jeu à l'objet du joueur, qui reste fixe quel que soit le niveau de zoom (n'utilisez pas la distance "à l'écran", qui change lorsque vous zoomez) et

  • configurez votre système d'atténuation pour commencer à jouer les sons d'un objet dès que sa distance au joueur dans le monde est telle que l'objet serait presque visible pour le joueur au niveau de zoom maximum.

De cette façon, les joueurs peuvent entendre les choses avant de les voir, ce qui donne un sentiment de réalisme et de découverte. Il empêche également la plupart des scénarios de jouer trop de sons ambiants.

Bien sûr, vous avez toujours le potentiel de surcharger le canal sonore ambiant si vous avez beaucoup d'objets émettant du son au même endroit dans le monde. Cela peut être résolu par

  • concevoir vos niveaux pour ne pas le faire, ou, si ce n'est pas viable,

  • attribuer une priorité aux objets et ne prendre que les nobjets les plus prioritaires, ou

  • en modulant le volume de tous les sons ambiants en (plus ou moins) "divisé par le nombre de sons dans la scène", en vous assurant que vous atténuez toujours les sons en douceur lorsque leurs objets s'éloignent afin d'éviter de "sauter" lorsque vous passer discrètement de cinq objets à quatre, par exemple.

  • précalculer, pour un niveau donné ou l'ensemble du jeu, le nombre maximum d'objets pouvant être à portée et jouer des sons à la fois (faites-le dans le cadre du processus de génération des données de niveau ou de jeu). Sur cette base, vous pouvez déterminer la puissance de lecture d'un objet de telle sorte que le pire des cas ne dépasse jamais un certain volume.

Ces deux dernières options de résoudre le problème uniquement du point de vue du volume, cependant - ils ne tiennent pas compte du fait que , même si vous jouez 500 sons de fond assez tranquillement de ne pas submerger les tympans d'un joueur, vous jouez toujours 500 sons, qui peut être bruyant non pas dans le sens du volume mais dans le sens de la confusion.

Pour résoudre ce problème, je pense que vous feriez mieux d'essayer de réduire le nombre total d'émetteurs ambiants ou de ne prendre que les nsons les plus prioritaires (pour référence, prendre le haut nest plus ou moins ce que nous avons choisi pour Guild Wars 2).


la source