I Am Fish est une charmante petite aventure dont le gameplay est basé sur la physique, et qui permet de prendre en main le destin de quatre amis poissons intrépides tentant de s'échapper vers la mer. Il a été développé par Bossa Studios (basé à Londres) et peut être considéré comme la suite spirituelle du précédent succès I Am Bread. Le jeu offre une variété de véhicules bizarres dont l'audio est basé sur la physique, ainsi qu'une musique dynamique, un tas de systèmes permettant de gérer l'eau (croyez-le ou non), et relève le défi de vous faire sentir comme quatre poissons très différents les uns des autres. Audiokinetic a demandé au concepteur audio du projet, Ali Tocher de LookListen Audio, de partager avec nous quelques trucs et astuces, et de nous parler de l'utilisation de Wwise dans ce jeu.
Alors, plongeons dans l'aventure ! (Désolé, j'essaierai de limiter au maximum les jeux de mots sur les piscines, mais comme il y en avait beaucoup sur le slack de l'équipe, il est possible que je doive en ajouter quelques-uns [soupir]).
Audio dynamique de véhicule
I Am Fish permet au-à la joueur-euse/au poisson de contrôler des véhicules inhabituels et bizarres pour lesquels il a été très difficile de créer des sons. Des seaux à serpillères, des bennes à ordures, des réservoirs d'aquarium, des verres à bière, des chariots de mine, de grands bocaux, un bocal à poisson sphérique, des bagages, un cube de glace, un homme en état d'ébriété, et plus encore ! Je voulais partager quelques détails sur la conception et l'utilisation de Wwise pour deux d'entre eux.
Bocal à poisson en verre
Il était important de pouvoir distinguer l'audio du bocal à poisson lors de déplacements à des vitesses basses, mais aussi à des vitesses élevées, ce qui peut arriver pendant un certain temps. Les premiers tests de traitement audio et de timbres d'un roulement d'objet en verre ont démontré qu'une approche traditionnelle de son de véhicule consistant à augmenter la hauteur du son et à utiliser plusieurs couches sonores ne fonctionnerait pas. En enregistrant et en analysant des mouvements d'objets en verre, j'ai réalisé que le principal « son de roulement » était défini par un sweep sinusoïdal définissant une rotation complète, et qui devait ralentir et accélérer en fonction de la vitesse de roulement. Ma première tentative de décomposer et de recombiner des rotations individuelles a été infructueuse, je me suis alors fixé l'approche d'utiliser un LFO dans Wwise pour créer dynamiquement ce mouvement dans un son préalablement conçu.
Comme vous pouvez le voir dans la vidéo, j'ai mis en place un EQ paramétrique sur les bus de mixage pour les sons de roulement (capture d'écran côté gauche), puis j'ai utilisé un paramètre de vitesse de roulement pour contrôler les paramètres d'Attack, de Depth et de Frequency d'un LFO (capture d'écran côté droit) pour appliquer le « son de roulement » aux couches sonores de bruit.
Quelques notes concernant des choses que l'on ne voit pas ici :
• J'ai isolé seulement le son roulement dans la vidéo, il y a également des couches d'eau et des couches de mouvement de poisson présentes dans le jeu. Cependant, j'ai gardé les impacts de bol car leur rôle est crucial pour couvrir certaines images saccadées lorsque la balle passe d'un mouvement très rapide à l'arrêt, et pour également prendre en compte le contact avec sol.
• Nous faisons des vérifications pour voir si le véhicule est au sol car il y a beaucoup de moments dans les airs, et il s'agit ici d'une couche sonore illustrant un contact avec une surface.
• Vous ne pouvez l'entendre que faiblement dans cet exemple vidéo, mais à des vitesses élevées, une texture de verre est ajoutée comme une alarme pour avertir le-la joueur-euse qu'il-elle a atteint une vitesse qui provoquera l'éclatement du bol s'il-elle ne ralentit pas un peu.
Véhicule en forme de glaçon
Je voulais également partager rapidement une chose à propos du véhicule en glaçon, montré dans la vidéo. En général, il a été assez simple d'utiliser la vitesse de ce véhicule pour piloter les RTPC, mais j'ai eu du mal à gérer les impacts ; et ceux-ci constituent une couche sonore importante pour la sensation de jeu. J'ai résolu ce problème en utilisant pour la première fois l'angle d'impact ; j'ai donc conçu deux types d'impacts - les éraflures (« Scrape », lorsque l'angle d'impact est compris entre 10 et 60 degrés), et les coups (« Hit », lorsque l'angle est compris entre 60 et 90 degrés), qui sont sélectionnés à l'aide de Switch Groups. La solution semble tellement évidente une fois qu'on l'a trouvée, mais il m'a fallu un certain temps pour le reconnaître.
Eau
Je pourrais vous expliquer longuement comment nous avons fait pour que le son de l'eau éclabousse l'écran... Mais je vais me contenter d'évoquer juste quelques points.
Surfaces et bords
Si vous avez déjà travaillé avec cette texture, vous savez que l'eau est une chose un peu délicate lorsqu'on utilise de l'audio object-based, et l'utilisation d'un système de spline pour déplacer la source sonore par rapport au joueur est nécessaire. Je me suis concentré sur deux utilisations de ce système pour essayer de couvrir le plus de situations. Tout d'abord, j'ai demandé à notre programmeur graphique de définir une « limite de surface » pour chaque étendue d'eau, représentée par la ligne rouge. Ensuite, j'ai également défini des régions de « bordures franchissables » (indiquées en jaune), pour les zones de bordures importantes pour le gameplay, généralement parce qu'elles étaient la destination du joueur.
Comme vous pouvez l'entendre dans la vidéo suivante, la surface de la spline est située directement sous la caméra pour permettre au son de s'atténuer en fonction de la hauteur de la caméra. Mais surtout, elle s'arrête lorsqu'elle atteint la limite marquée en rouge, et attend là jusqu'à ce que le-la joueur-euse revienne, car notre ami poisson a une fâcheuse tendance à se balader au-delà des limites !
Eau, musique, et comment ne pas rendre tout cela ennuyeux
Dès le premier jour de travail sur ce projet, je me suis retrouvé avec une question importante en tête. Comment faire pour que ce jeu ne soit pas terne et plat lorsque je suis sous l'eau, alors que je sais que la représentation de se retrouver sous l'eau consiste à atténuer un grand nombre de hautes fréquences ? La réponse m'est venue de la musique. La bande sonore de I Am Fish est censée refléter l'état émotionnel du poisson, d'autant plus que le jeu joue beaucoup avec des choses qui ne semblent pas dangereuses à première vue, mais qui sont assez différentes lorsque vous êtes un poisson rouge de 10 cm. Comme les poissons aiment être dans l'eau, j'ai alors eu l'idée de renverser le concept d'amortissement sonore. Et si la musique était atténuée lorsque la caméra est hors de l'eau (dans le domaine humain), et sans modification du spectre lorsque la caméra retourne sous l'eau, dans le lieu de prédilection des poissons ! Cela me également donnait l'avantage supplémentaire de libérer de l'espace dans le mixage destiné à l'ambiance au-dessus de l'eau, tout en lui appliquant l'effet LPF une fois sous l'eau. Comme on dit : on sait qu'une solution de conception est bonne lorsqu'elle commence à résoudre d'autres problèmes ! Nous avons également étendu ce concept pour maintenir la musique à pleine fréquence si le joueur est au-dessus de l'eau et utilise également sa capacité spéciale (par ex. voler/rouler/mordre).
Mouvements de poissons et capacités spéciales
Les sons de foley sont toujours un plaisir à concevoir, et c'est tout aussi vrai lorsqu'il s'agit de poissons ! Mais préparez-vous à oublier beaucoup de concepts auxquels vous étiez habitué-e concernant les footsteps ! Je vais partager quelques informations sur la façon dont les sons des poissons ont été créés.
Des footsteps de poisson ?
C'est un autre exemple de renversement des attentes. La vision par défaut selon laquelle « plus le personnage du jeu vidéo se déplace rapidement, plus on entend les bruitages » s'est avérée fausse pour notre poisson. Le feedback principal et la sensation qui nous semblait la plus juste étaient que les mouvements de la queue du poisson devaient être principalement audibles pendant les manœuvres, c'est-à-dire lors des changements de direction ou de vitesse ; cependant, lorsque le poisson se dirigeait dans une direction constante, les couches sonores d'eau (ou de vent s'il était dans l'air) étaient plus efficaces pour donner une sensation de vitesse. Franchement, je n'avais pas la moindre idée de la façon dont j'allais faire les sons de mouvement pour ces poissons, c'était donc très gratifiant de trouver une solution qui me semblait correcte. En fin de compte, une simple boucle de son de bouillonnement aigu, traitée à l'aide de pitch-shift et de filtres, a fait le plus gros du travail, comme le montre la vidéo.
Donner de la personnalité aux poissons
Les poissons sont les vedettes de notre jeu. Voici quelques-unes de leurs signatures sonores.
Poisson-globe (Pufferfish)
La capacité spéciale du poisson-globe est de se gonfler, ce qui lui donne les propriétés d'un ballon - il peut rouler, rebondir, etc. Cela m'a fait penser à un ballon de football semi-gonflé.
Le voici en action :
Piranha
Le piranha était, comme on pouvait s'y attendre, assez mordant. Il me faisait penser à un petit chien, j'ai donc parcouru ma bibliothèque de SFX pour trouver des reniflements, des gémissements et des rongements, et j'ai créé un instrument dynamique amusant. Le fait d'avoir une boucle dynamique m'a également aidé à relever un défi de conception du jeu. Lorsque le piranha réussit à mordre un accessoire du jeu, le-la joueur-euse doit utiliser la touche d'action principale pour libérer l'accessoire. En l'absence de son, c'était déroutant, car le-la joueur-euse ne pouvait plus bouger, mais le fait d'agiter le joystick gauche provoquant plus de sons d'effort et de grognements semblait bien faire passer le message.
Merci à Audiokinetic et Bossa de m'avoir demandé de réaliser ce projet. J'espère que vous avez pu en tirer quelque chose d'utile. J'espère que vous profiterez tous-toutes d'un repos bien mérité pendant les fêtes de fin d'année à venir !
Commentaires