The Witness est un jeu de puzzle à la première personne développé par Thekla, publié en janvier 2016 pour Windows et PS4, et en septembre 2016 pour XBox One. Le game design est majoritairement l'oeuvre de Jonathan Blow, connu pour Braid. L'action - ou plutôt la réflexion - prend place sur une île magnifique et colorée, quoi que légèrement effrayante. Le jeu a un "look" très spécifique et utilise diverses techniques avancées pour le réaliser: le moteur de jeu est multiplateforme et fait maison. J'ai rejoint l'équipe en tant que freelance pour créer un portage iOS, publié à l'automne 2017. Le jeu est également diponible sur Mac OS et NVidia Shield.
Ma tâche de départ fut de gérer la traduction des shaders. Les shaders étaient écrits dans un sous-ensemble de HLSL, comme c'est souvent le cas avec les jeux publiés pour Windows et consoles. Mac OS et iOS utilisent soit l'API propriétaire Metal, soit OpenGL, et il fallait un système de traduction. Le projet incluait déjà un parseur et la construction d'arbre syntaxique: la majorité de mon travail a donc porté sur la génération de code, la gestion des cas spéciaux et des spécificités de l'API, et la modification des shaders pour faciliter la tâche du traducteur. Le traducteur est open-source et disponible sur GitHub.
Vu que j'étais dans les shaders jusqu'au cou, j'ai également géré la chasse de deux bugs du compilateur de shaders sur iOS, qui ont demandé beaucoup de temps et d'effort. L'un deux rendait notamment la végétation noire à des emplacements aléatoires. Pas grave, après tout, ce n'est pas comme si le jeu avait des plantes partout...
J'ai également géré les problématiques spécifiques à la plateforme. La première décision importante était d'utiliser Metal plutôt qu'OpenGL: c'était indéniablement le bon choix sur iOS, sur Mac il est plus difficile de dire laquelle marche le mieux. J'ai réécrit le code de sauvegarde iCloud pour mieux respecter les recommendations d'Apple, et la gestion des notifications audio pour mieux s'intégrer au système d'exploitation. J'ai également documenté des astuces et points obscurs d'XCode et autres outils - ce qui a économisé un temps considérable au reste de l'équipe - et mis à jour les scripts d'export pour que créer de nouveaux dev builds soit trivial.
Travailler avec Thekla fut très plaisant, et je suis ravie d'avoir pu contribuer à un jeu qui est significatif pour moi, par son utilisation des couleurs et la structure de ses espaces.