Gestion des versions itératives dans les jeux live-service

Contenu sonore pour les jeux vidéo

Dead by Daylight est un jeu live-service (ou GAAS, « game as a service »), basé sur un calendrier de production restreint et des mises à jour régulières. Pour être en mesure d'anticiper les fonctionnalités à venir et garantir leur compatibilité sans risquer que des informations non annoncées ne sortent dans les mises à jour de SoundBanks de Wwise, nous avons développé le système suivant concernant l'évolution des sessions Wwise.

Dans notre processus de développement, chaque cycle de production d'une nouvelle version du jeu dispose de son propre stream connecté à UGS (UnrealGameService) et P4 (Perforce), et chaque nouveau stream dispose de sa propre version du projet Wwise actif.

Objectifs

  • Conserver tout le contenu R&D à venir dans une version du projet Wwise qui n'est jamais diffusée au public.
  • Être capable de déplacer facilement n'importe quel nouvel élément de la session temporaire de R&D vers la session principale de Wwise le moment venu.

Processus

  • Planifier la session principale de Wwise pour qu'elle fonctionne avec des Work Units dédiées par élément de DLC – comme des cartes, des niveaux, du contenu ou, dans notre cas, des personnages.
  • Lorsqu'il est temps de commencer à mettre en place un stream à venir nécessitant de l'audio et un nouveau travail d'intégration, créer un projet Wwise temporaire (« Temp ») à partir du projet Wwise principal.
  • Dans le nouveau projet Wwise temporaire, ne travailler que sur les Work Units dédiées aux nouvelles fonctionnalités – tout le reste est gelé. Tout travail effectué dans les parties partagées du projet Wwise ou héritées du projet précédent devra être ultérieurement et manuellement refait dans le projet Wwise principal.
  • Fusionner les nouvelles Work Units du projet de R&D temporaire de Wwise dans une nouvelle version du projet Wwise principal une fois les versions du stream actuel terminées.
  • Répéter l'opération pour le stream suivant.

Organiser une session Wwise pour le développement de jeu live-service

  • La clé pour concevoir une structure de session Wwise compatible avec cette méthode est que tout développement futur doit être aussi autonome que possible. Par exemple, dans Dead by Daylight, chaque carte, tueur, et survivant, possède son propre ensemble de Work Units dédiées :

image2

Cela signifie avoir des Work Units dédiées dans tous les dossiers Wwise pertinents : Game Parameters, States, Switches, Attenuations, Effects, et ainsi de suite. Autrement dit, partout où les Work Units sont prises en charge, à l'exception de l'Interactive Music Hierarchy et du Master-Mixer Hierarchy.

Vou devez également garder en tête d'avoir un dossier Originals organisé, dans lequel tous les effets sonores pour une fonctionnalité donnée se trouvent dans son propre sous-dossier :

image1

Création du projet Wwise temporaire pour un stream

1. Lorsque la production est prête à débuter le développement de nouvelles fonctionnalités dans un stream à venir, nous dupliquons le projet Wwise principal actuel. Pour ce faire, nous créons un nouveau dossier de projet portant le nom du nouveau stream suivi de « _Temp », puis nous y copions tout ce qui se trouve dans le projet Wwise actuel, à quelques exceptions près.

image5

 

image6_crop

 

NE PAS copier les fichiers .cache, .validationcache, .wsettings, ou tout fichier .prof.

Nous ne copions pas non plus le dossier GeneratedSoundbanks, bien que celui-ci n'existe souvent pas dans notre hiérarchie, car nous générons les SoundBanks uniquement par le stream Unreal. 

2. Donner un nom unique au nouveau fichier .wproj du projet temporaire de Wwise

Lorsque le projet Wwise a fini d'être copié, attendez avant de l'ouvrir – il est important de donner au .wproj un nom unique, à la fois directement dans le nom du fichier, mais aussi dans ses métadonnées.

Faites un clic droit sur le nouveau fichier de projet .wproj et décochez « lecture seule ». Ouvrez-le ensuite avec un éditeur de texte, idéalement Notepad++. Donnez au projet le nom du futur stream en ajoutant « _Temp » à la fin, et n'oubliez pas de changer le nom du fichier .wproj également.

image4

3. Ajouter tout le dossier Wwise à votre logiciel de contrôle de version AVANT d'ouvrir le projet Wwise

La raison pour laquelle vous voulez marquer votre projet Wwise pour ajout (« Mark for add ») avant de l'ouvrir, c'est que dans son état actuel, vous pouvez maintenant marquer l'intégralité du nouveau projet Wwise temporaire pour ajout. Une fois que vous ouvrez Wwise, de nombreux fichiers supplémentaires, comme votre fichier de paramètres personnels, seront générés, et il n'est généralement pas souhaitable de les ajouter au logiciel de contrôle de version.

image3

Notez que la première fois que vous générez des SoundBanks avec le nouveau projet Wwise, tous les fichiers cache devront être régénérés, ce qui prendra beaucoup plus de temps que d'habitude.

Fusion du projet Wwise temporaire dans le stream principal

Une fois que le stream actuel a terminé son cycle de publication, il est maintenant possible de réintégrer le travail des sessions R&D du projet Wwise temporaire dans le stream principal. Cela se fait manuellement, comme suit :

1. Créer un nouveau projet Wwise principal pour le nouveau stream.

Chaque version reçoit un nouveau nom de stream, incrémenté par ordre alphabétique, en passant par exemple de Gorilla à Horse. Lorsque nous avons créé le projet Wwise temporaire dans la section ci-dessus, nous lui avons donné le nom du stream à venir, additionné de « _Temp ».

Maintenant, nous allons dupliquer à nouveau la même session Wwise du stream principal, depuis sa dernière révision, en suivant la même procédure que celle décrite ci-dessus lors de la création du projet temporaire. Assurez-vous de suivre toutes les étapes à l'identique, comme renommer le nouveau fichier .wproj à l'intérieur de Notepad++, et le marquer pour ajout avant d'ouvrir le projet nouvellement créé.

Exemple :

Session Wwise du stream principal : DeadByDaylight_2019_2_5_Gorilla.wproj

Session temporaire de support du stream à venir : DeadByDaylight_2019_2_5_Horse_Temp.wproj

Nouvelle session Wwise du stream principal  : DeadByDaylight_2019_2_5_Horse.wproj

2. Déplacez manuellement les nouvelles Work Units du projet temporaire vers le nouveau projet principal

Si le routing de votre Master Mixer n'a pas radicalement changé entre la création du projet temporaire et la création du nouveau projet principal, tout sera intact et n'aura pas besoin d'être reconnecté.

L'intégration de la musique ne peut pas être déplacée et doit être refaite du projet temporaire au projet principal, de même que tout routing personnalisé à l'intérieur des structures fixes, comme par exemple l'envoi (send) d'un SFX de puissance d'un nouveau personnage vers un sous-bus auxiliaire du Master-Mixer Hierarchy dédié spécifiquement à ce tueur.

Déplacement des Work Units

1. Créez de nouvelles Work Units dans la nouvelle session Wwise principale correspondant aux noms et aux emplacements de toutes les nouvelles Work Units qui ont été créées dans la session temporaire pendant la période de R&D.

2. Fermez toutes les sessions Wwise ouvertes.

3. Ouvrez un nouveau dossier d'explorateur temporaire sur le côté, et copiez-y chacune des nouvelles Work Units de la session Wwise temporaire. Si le nom de la Work Unit n'indique pas de manière évidente sa position dans la structure des dossiers Wwise, placez-la dans un dossier bien nommé à l'intérieur du dossier d'exploration temporaire, ou effectuez les étapes suivantes, une Work Unit à la fois. Il ne faut pas les mélanger.

4. Remplacez maintenant les ID des Work Units de la session Wwise temporaire par les ID respectifs des nouvelles Work Units vides de la nouvelle session Wwise principale. Pour ce faire, faites un clic-droit sur la Work Unit dans l'explorateur pour désactiver l'option « Lecture seule », puis faites à nouveau un clic-droit pour l'ouvrir dans un éditeur de texte brut tel que Notepad++.

Ici, vous pouvez voir beaucoup d'informations en texte brut sur une Work Unit donnée. Assurez-vous que vous ne remplacez pas accidentellement l'ID du document Wwise en haut ! Vous voulez l'ID de la Work Unit qui se trouve un peu plus bas.

image7

5. Une fois que vous avez remplacé l'ID d'une Work Unit temporaire par celle de sa Work Unit principale vide correspondante, vous pouvez copier et coller cette Work Unit temporaire à son emplacement correct dans la structure de dossiers située dans l'explorateur du nouveau projet Wwise principal.

Il vous sera demandé si vous voulez écraser la Work Unit – dites oui !

Si on ne vous le demande pas, vous devez revenir à l'étape précédente et vous assurer que vous avez correctement créé toutes les Work Units spécifiques avec leurs nouveaux ID dans le nouveau projet Wwise.

6. Une fois que toutes les nouvelles Work Units ont été copiées, vous devrez également copier les dossiers Originals associés. Vous n'avez pas besoin de modifier les ID du dossier Originals, mais n'oubliez pas de les ajouter au projet Wwise principal !

7. Vous pouvez maintenant ouvrir le nouveau projet Wwise principal.

Si vous n'avez pas remplacé un ID correctement, vous pouvez obtenir une erreur indiquant que la Work Unit n'a pas de parent connu. Pas d'inquiétude, il vous suffira de la replacer manuellement à son emplacement correct depuis le niveau supérieur de sa structure, comme l'Actor-Mixer Hierarchy.

Limites

  • Tout travail effectué dans des Work Units communes / partagées, comme le routing, l'interface utilisateur, etc, doit être refait manuellement dans le stream principal de Wwise.
  • Ce processus ne fonctionne pas avec l'Interactive Music Hierarchy.
  • Tout travail effectué dans d'anciennes sessions Wwise pour supporter des streams antérieurs après la création d'un nouveau projet Wwise principal devra être refait manuellement dans la nouvelle session Wwise principale.

La version rapide et pratique

Parce que le déplacement d'une nouvelle Work Unit dans une session Wwise non reconnue ne fait que faire perdre à la Work Unit son emplacement correct dans la structure Wwise, vous pouvez opter pour une manière rapide et simple en copiant les Work Units, tant que vous voulez juste déplacer une partie aléatoire de la structure logique d'une session Wwise à une autre.

À l'intérieur du projet Wwise source, créez une nouvelle Work Unit temporaire, copiez et collez-y toute la logique Wwise dont vous avez besoin puis, dans l'explorateur, ajoutez une copie de cette Work Unit dans le bon sous-dossier du projet de destination. Ensuite, dans le nouveau projet, vous pouvez la sélectionner et déplacer la logique où vous voulez.

Beatrix Moersch

Beatrix Moersch

Beatrix Moersch est une conceptrice sonore et compositrice basée à Montréal (Canada). Au cours de la dernière année, elle a agi en tant que conceptrice sonore sur Dead by Daylight, créant et intégrant le son de personnages tels que Nemesis de Resident Evil, Lead Cenobite de Hellraiser et Sadako de Ringu. Ayant débuté très tôt dans l'art sonore expérimental, Beatrix crée des conceptions sonores pour accompagner des expériences visuelles depuis plus d'une décennie, et travaille professionnellement dans l'industrie du jeu depuis 2014.

Commentaires

Laisser une réponse

Votre adresse électronique ne sera pas publiée.

Plus d'articles

Aide-mémoire pour Wwise et Unity

Parlons un peu de l'intégration de Wwise dans Unity. Il existe un certain nombre de ressources...

5.5.2022 - Par Mads Maretty Sønderup

La Musique Interactive Hybride est-elle l'avenir ? PARTIE II - Démonstrations techniques

Dans la première partie de cet article, nous avons discuté de la Musique Interactive Hybride et des...

23.6.2022 - Par Olivier Derivière

Wwise gratuit pour les développeurs indépendants - Accès à la plateforme complète sans limite de sons. Le pourquoi et le comment.

Bonjour à tous ! C'est moi, votre sympathique voisin du département des Licences, je reviens avec un...

9.12.2022 - Par Mike Drummelsmith

Créer un effet de Doppler avec Wwise

On appelle effet Doppler la modification de la fréquence d'une onde relativement à un observateur se...

19.1.2023 - Par Xu Wei (徐巍)

Derrière le son de I Am Fish

I Am Fish est une charmante petite aventure dont le gameplay est basé sur la physique, et qui permet...

6.6.2024 - Par Ali Tocher

Derrière le son de Psychonauts 2

Psychonauts 2 est un jeu de plates-formes/aventure passionnant qui suit l'histoire de Raz à la suite...

30.8.2024 - Par Double Fine

Plus d'articles

Aide-mémoire pour Wwise et Unity

Parlons un peu de l'intégration de Wwise dans Unity. Il existe un certain nombre de ressources...

La Musique Interactive Hybride est-elle l'avenir ? PARTIE II - Démonstrations techniques

Dans la première partie de cet article, nous avons discuté de la Musique Interactive Hybride et des...

Wwise gratuit pour les développeurs indépendants - Accès à la plateforme complète sans limite de sons. Le pourquoi et le comment.

Bonjour à tous ! C'est moi, votre sympathique voisin du département des Licences, je reviens avec un...