Enseigner l'audio de jeu vidéo à distance n'est pas une chose facile. Enseigner l'audio de jeu vidéo à distance à des personnes non-voyantes est encore plus difficile. En tant qu'enseignants en audio de jeu vidéo pour les programmes de licence en Production Audio et en Art de l'Enregistrement à la Full Sail University, il s'agit du défi que nous avons rencontré. Nous avons récemment réussi à enseigner en ligne l'utilisation de Wwise sur un Mac à notre tout premier étudiant atteint de cécité complète. Cela a nécessité les efforts combinés de plusieurs enseignants et la création de quelques outils d'assistance personnalisés pour y parvenir. Voici comment nous y sommes arrivés.
Le défi
Les étudiants de la Full Sail University inscrits au cours en ligne pour le programme de licence en Production Audio doivent suivre un panel de cours diversifiés concernant l'audio. Quatre de ces cours concernent la conception sonore pour les jeux vidéo et l'implémentation de l'audio avec Wwise. Lorsque Brian Smithers, directeur du programme de Production Audio, nous a dit pour la première fois que nous allions inscrire Andre Woods, un étudiant atteint de cécité complète, ceux d'entre nous qui enseignent les cours d'audio pour les jeux ont eu quelques inquiétudes. Apprendre à Andre à mixer de la musique semblait simple. Lui apprendre la conception sonore pour les jeux vidéo et l'implémentation audio avec Wwise était une toute autre histoire.
Pour compliquer les choses, Andre devait apprendre sur un Mac, et l'outil d'accessibilité VoiceOver de Mac ne peut pas prononcer la plupart des éléments de l'interface de Wwise, ce qui la rend invisible pour un étudiant comme Andre. Nous avons passé plusieurs semaines à essayer de trouver une solution, à présenter diverses idées, dont des devoirs alternatifs, une implémentation directement faite dans le moteur, des simulations interactives avec des contrôleurs MIDI, et une implémentation audio à partir de scripts, entre autres choses. La situation semblait insurmontable, mais la meilleure solution se trouve parfois juste sous vos yeux.
La solution
Nous avons finalement découvert qu'Andre disposait d'un outil d'accessibilité appelé Flo Tools pour l'aider dans ses cours de Pro Tools. Flo Tools comprend un ensemble de commandes macros personnalisées pour l'accessibilité créées avec l'outil d'automatisation Keyboard Maestro Mac. Logiquement, si Keyboard Maestro pouvait ajouter des fonctions d'accessibilité à Pro Tools, pourquoi ne pourrait-il pas également le faire pour Wwise ? Nous avons donc entrepris de créer notre propre version Flo Tools, ou du moins quelque chose de similaire, pour Wwise, avec le nom de travail interne « Wweyes ».
Ce projet a nécessité environ 2 mois de développement et de tests en parallèle de nos tâches d'enseignement habituelles. Nous étions tous à domicile et n'avions pas la possibilité de tester les macros en dehors de nos ordinateurs personnels. Le plus grand défi a été pour les enseignants sans handicap d'imaginer des flux de travail accessibles aux personnes non-voyantes. Comment Andre naviguerait-il ? Comment obtiendrait-il un feedback audible pour savoir si tel ou tel processus était terminé avec succès ? Quelles étaient les fonctions clés nécessaires à la réalisation de chaque tâche ? Toutes ces questions devaient être résolues, et rapidement. Le plan a été élaboré à la fin du mois de janvier, et Andre devait suivre notre premier cours d'audio de jeu vidéo en avril.
Les macros
Navigation
La première chose que nous devions déterminer était la façon dont Andre allait naviguer dans Wwise. L'outil VoiceOver peut prononcer les titres des fenêtres principales de Wwise, mais c'est tout. Nous savions qu'il passerait la plupart de son temps dans l'onglet Audio ou dans l'onglet Events. Le directeur du département, Thomas Owen, qui enseigne le cours de portfolio en audio de jeu pour le diplôme du département en Art de l'Enregistrement, a suggéré de faire de ces deux zones les principaux points de référence – le quartier général - liés à des commandes simples comme CMD+1 pour l'onglet Audio et CMD+2 pour les Events.
Nous savions qu'Andre travaillerait principalement dans la Default Work Unit de l'Actor-Mixer Hierarchy. De fait, la première macro a été créée pour sélectionner automatiquement l'onglet Audio, suivi de l'Actor-Mixer Hierarchy, puis de la Default Work Unit. La macro devait également développer automatiquement tous les objets enfants afin de révéler les éléments cachés de la hiérarchie. Pour ce faire, elle balayait d'abord l'écran à la recherche d'une image cible dans l'onglet Audio et, en cas de succès, pouvait ensuite exécuter des fonctions supplémentaires et fournir un signal de confirmation à Andre. Le feedback audio utilisait des effets sonores du système ainsi que la synthèse vocale.
Image 1 - Macro concernant l'onglet Audio/l'Actor-mixer Hierarchy/la Default Work Unit.
Containers
Une fois dans l'Actor-Mixer Hierarchy, Andre devait créer des dossiers, des Containers et des objets. Bien qu'il existe des raccourcis clavier intégrés dans Wwise pour ces fonctions, ils ne fournissent pas de feedback sonore. Notre solution a été de créer des raccourcis personnalisés en cliquant sur l'icône appropriée de la barre d'outils, puis en fournissant feedback sonore à la fin de l'opération par l'utilisation de la synthèse vocale.
Image 2 - Macro de Random Container
Créer des Containers est une chose, mais nous avions également besoin d'un moyen pour que les frappes clavier ainsi que les noms et les types de Containers soient prononcés.
Pour pouvoir entendre chaque frappe au clavier, des macros de synthèse vocale individuelles ont dû être créées pour chaque touche de lettres et de chiffres. Andre recevait alors un feedback lors de la frappe pour s'assurer d'avoir la bonne nomenclature et la bonne orthographe des Containers.
Image 3 - Macros de chiffres et de lettres
Pour identifier le nom d'un Container sélectionné, Andre devait copier le nom dans le presse-papiers sous forme de texte. Le contenu du presse-papiers pouvait ensuite être lu par synthèse vocale dans Keyboard Meastro.
Image 4 - Lecture du presse-papiers du système
Pour identifier les types de Containers, une commande balayait l'écran à la recherche de l'extrémité gauche d'une sélection active, puis une série d'instructions conditionnelles était utilisée pour identifier l'icône spécifique du Container. Une fois l'icône identifiée, son nom pouvait être lu à Andre. Il pouvait alors identifier le type de Container sélectionné en utilisant le raccourci clavier OPTION+COMMAND+I.
Image 5 - Déclarations conditionnelles pour identifier le type de Container
Importation de fichiers audio
Nous avons conservé le raccourci intégré correspondant à l'importation de fichiers audio, SHIFT+I, et nous avons utilisé VoiceOver pour prononcer le titre de la fenêtre Audio File Importer. Andre a appris que le processus de travail consiste à d'abord créer le Container, puis à importer les fichiers audio en tant qu'objets enfants. Sélectionner un groupe d'objets Sound SFX dans la hiérarchie pour ensuite créer un Container parent s'est révélé peu pratique dans ce cas de figure.
Dans la fenêtre Audio File Importer, des commandes en chaînes de caractères ont été utilisées pour ajouter et importer des fichiers. Compte tenu du nombre de commandes nécessaires au total, il n'était pas envisageable de s'appuyer uniquement sur les touches de raccourci des modificateurs. En dehors de la hiérarchie, les commandes en chaînes de caractères commençant par le préfixe « W W » ont été utilisées. Dans ce cas, « W W A D D » pour ajouter des fichiers, et « W W I M P » pour en importer. Après avoir choisi d'importer des fichiers, Andre a utilisé VoiceOver pour naviguer dans le Finder et sélectionner les fichiers souhaités. Après l'importation, tous les objets enfants étaient automatiquement développés pour les afficher dans la hiérarchie.
Image 6 - Macro d'importation de fichiers
Configuration des Containers
Des macros supplémentaires ont été nécessaires pour configurer les paramètres des Containers. Les étudiants doivent ajuster les paramètres Play Mode et Transitions pour leurs projets. Une fois un Container sélectionné au hasard, Andre pouvait appuyer sur OPTION+COMMAND+C pour sélectionner le mode de lecture continue (« Continuous »), OPTION+COMMAND+L pour basculer en mode boucle (« Loop »), et SHIFT+COMMAND+D pour régler les transitions sur le mode Delay. Un feedback sonore indiquait alors de saisir la durée en secondes.
Image 7 - Macro du mode Delay des Transitions
Pour configurer un Sequence Container, Andre devait d'abord se rendre dans le Contents Editor en utilisant COMMAND+E. Cette macro sélectionnait automatiquement le premier élément du Contents Editor. Il devait ensuite prononcer le nom de la sélection actuelle en utilisant COMMAND+C. Cette commande permettait d'identifier l'élément sélectionné, mais aussi de le copier dans le presse-papiers pour le coller dans la section Playlist. OPTION+COMMAND+P effectuait automatiquement un clic dans la section Playlist et collait l'élément copié dans un ordre vertical descendant. Andre devait alors revenir au Contents Editor et répéter ce processus pour chaque élément devant être ajouté à la Playlist.
Image 8 - Macro d'ajout à une Playlist
Création d'Events et affectation de la zone Target
Pour créer un nouvel Event, Andre devait d'abord se rendre dans l'onglet Events en appuyant sur COMMAND+2. Cette commande sélectionnait automatiquement la Work Unit par défaut dans l'onglet Events. OPTION+COMMANDE+E effectuait un clic sur le bouton « Create new ‘Event' » de la barre d'outils, et prononçait un feedback sonore.
Une fois l'Event créé, il fallait y assigner un objet dans la zone Target. SHIFT+COMMAND+P effectuait un clic sur le bouton « Add > > » et sélectionnait l'action « Play ». La chaîne de caractères « W W B F T » sélectionnait la ligne d'action dans la fenêtre Event Property Editor, puis effectuait un clic sur le bouton « Browse ». Une fois la fenêtre Project Explorer ouverte, l'outil VoiceOver pouvait prononcer le titre de la fenêtre. Pour s'assurer que le contenu de la hiérarchie était affiché, la macro effectuait automatiquement un clic droit sur la flèche la plus haute et choisissait « Expand All ». Andre pouvait alors utiliser les touches haut et bas du clavier pour naviguer dans la hiérarchie, appuyer sur COMMAND+C pour prononcer le nom de la sélection actuelle, et taper « W W O K » une fois la bonne cible identifiée.
Image 9 - Macro de recherche et d'assignation de la zone Target
Le Soundcaster
Une fois qu'Andre avait créé et configuré les Containers, importé les fichiers audio, créé les Events et assigné leur zone Target, ces derniers devaient être ajoutés à une session Soundcaster. Bien qu'il existe déjà un raccourci intégré, SHIFT+S, pour ouvrir le Soundcaster, la chaîne de caractères « W W O S C » a été utilisée car cette macro pouvait faire plus de choses que simplement ouvrir le Soundcaster. Elle pouvait également repositionner et redimensionner la fenêtre dans la partie supérieure gauche de l'écran pour un ciblage plus précis.
Une fois la fenêtre ouverte, il était nécessaire de créer une nouvelle session Soundcaster. La chaîne de caractères « W W N S C » exécutait une macro pour cliquer et créer une nouvelle session Soundcaster. Andre devait ensuite entrer un nom pour la session. Il pouvait ensuite déplacer ses Events vers le Soundcaster en tapant « W W E S C ». Cette commande effectuait un clic dans l'Event Viewer, sélectionnait tous les Events, puis effectuait un clic et un glisser-déposer du groupe sélectionné vers la fenêtre Soundcaster ciblée.
Image 10 - Macro d'assignation des Events vers le Soundcaster
Pour lire un Event du Soundcaster, il était possible d'utiliser la chaîne « W W P S C ». Cette macro cliaquit sur le bouton de lecture de tout Event en surbrillance dans le Soundcaster. Pour arrêter la lecture, la chaîne « W W S S C » effectuait un clic sur le bouton d'arrêt global du Soundcaster.
SoundBanks
Pour travailler avec les SoundBanks, Andre devait d'abord modifier la disposition (menu « Layouts ») de Wwise. Pour ce faire, il devait taper la chaîne de caractères « W W 2 » (« W W 1 » sert à revenir à la disposition Designer). Cette chaîne exécutait l'action appropriée avant de donner un feedback sonore. Une fois dans la disposition SoundBank, il pouvait accéder à l'onglet SoundBanks en appuyant sur COMMAND+3 (COMMAND+2 étant l'onglet Events et COMMAND+1 l'onglet Audio). La Default Work Unit des SoundBanks était alors automatiquement sélectionnée. Il pouvait ensuite appuyer sur CONTROL+B pour créer une nouvelle SoundBank, commande qui effectuait automatiquement un clic sur l'élément « Create new ‘SoundBank' » de la barre d'outils.
Après avoir créé une SoundBank, il était nécessaire de l'activer. Pour ce faire, la chaîne de caractères « W W E S B » permettait de cocher automatiquement la SoundBank sélectionnée, ainsi que la plateforme Mac et la langue anglaise.
Image 11 - Macro d'activation de SoundBank
Les Events devaient ensuite être ajoutés à la SoundBank. Pour cela, la chaîne de caractères « W W E T S » permettait d'effectuer un clic dans la fenêtre Event Viewer, de les sélectionne tous, puis de faire un glisser-déposer des Events vers la zone SoundBank Editor de la SoundBank sélectionnée.
Image 12 - Macro d'affectation des Events à une SoundBank
Andre pouvait taper la chaîne de caractères « W W G E N » pour générer sa SoundBank, ce qui effectuait un clic sur le bouton Generate All, et lui permettait de compléter son projet.
Réflexion de l'élève
« Bien que cela s'est avéré difficile à mettre en place, je pense que c'était très gratifiant d'apprendre à utiliser Wwise, et que cela ouvrira aux professionnels de l'audio aveugles et malvoyants des portes encore fermées avant la création de ces macros. Je pense que les macros sont une chose formidable et que leur utilité parle d'elle-même. Je suis prêt à voir jusqu'où je peux aller en utilisant Wwise et les produits Audiokinetic à l'avenir. » - Andre Woods
Exemples de projets étudiants
Les captures d'écran suivantes montrent les projets Wwise qu'Andre a pu réaliser au cours de nos deux premiers cours d'audio de jeu.
Voici le deuxième projet de notre cours de Conception Sonore pour les Jeux Vidéo. Les étudiants devaient concevoir et implémenter une gamme d'assets audio en boucle et one-shot pour un projet prenant place dans un bunker de science-fiction réalisé dans Unreal Engine. Andre a démontré avec succès l'utilisation correcte des Actor-Mixers, ainsi que des Blend, Random et Sequence Containers.
Image 13 - Projet de bunker de science-fiction des élèves
Et voici le projet final du cours de Conception Sonore pour les Jeux Vidéo. Andre a réussi à créer des Virtual Folders, des objets Sound SFX en boucle, des Random Containers, et a créé des Events Play et Stop et leur a assigné des Targets avant de les ajouter à une session Soundcaster.
Image 14 - Projet de jeu de plateforme des étudiants
L'image suivante, tirée du cours Projet et Portfolio II : Production Audio, montre l'implémentation par Andre d'un projet Unity mettant en scène un cimetière hanté. Andre a dû créer et configurer des Events ainsi que des Random et Blend Containers.
Figure 15 - Projet étudiant de cimetière hanté
Et voici l'implémentation par Andre d'un projet Unity se déroulant dans un environnement intérieur de science-fiction, réalisé pour le cours Projet et Portfolio II : Production Audio. Il a créé et configuré des Sequence, Blend et Random Containers, et a créé des Events et leur a assigné des Targets.
Image 16 - Projet de science-fiction des étudiants
Conclusion
En fin de compte, nos tentatives concernant l'accessibilité ont fonctionné, et Andre a pu terminer avec succès nos deux premiers cours sur l'audio de jeux en utilisant les macros Wwise. Au total, quelque 200 macros ont été créées, mais seulement la moitié d'entre elles se sont avérées nécessaires pour qu'il puisse suivre le cours. Nous sommes impatients d'enseigner à de futurs étudiants aveugles ou malvoyants en utilisant ce système, tout en continuant de l'affiner et de l'améliorer.
Les macros ont été créées en tenant compte des exigences spécifiques de notre cours et n'ont pas été conçues pour être utiles de manière globale à tous les utilisateurs de Wwise. Cependant, nous souhaitons continuer nos recherches sur la manière dont ce type de système pourrait être appliqué en dehors de notre cursus. Bien que l'accessibilité des jeux ait suscité un grand intérêt au cours des dernières années, l'accessibilité pour les développeurs de jeux a été relativement peu discutée. Nous espérons que notre expérience contribuera à faire avancer le débat et à faire en sorte que tous ceux qui souhaitent créer des jeux aient les moyens de le faire.
Remerciements
Merci à Andre Woods d'avoir été bon joueur lors de la première utilisation des macros. Il a été patient lorsque les choses ne fonctionnaient pas exactement comme prévu, et nous a fourni des commentaires utiles tout au long du processus. Merci au spécialiste de laboratoire Carlos Marquez pour avoir enseigné à Andre comment utiliser les outils de macro. Merci aux directeurs de cours Dale Stump et Marc Pinsky pour avoir guidé et enseigné à Andre lors des cours magistraux. Merci également au président du département, Thomas Owen, pour sa contribution, ses conseils et ses commentaires. Enfin, merci au directeur du programme, Brian Smithers, sans qui ce projet n'aurait pas vu le jour.
Commentaires