François Hautier

Programmeur Gameplay

Phobia

Phobia est mon projet de fin d’études, développé pendant 1 an. C’est un jeu d’horreur narratif utilisant l’HTC Vive.

Le joueur y incarne Abbigail, accompagnée de son fidèle chien Echo. Pour retrouver son ami Elijah disparu dans une piscine abandonnée, Abbigail doit échapper à la matérialisation de sa « Phobie » : la peur de la noyade.

Nous étions 5 à travailler sur ce projet d’octobre 2016 à septembre 2017. J’ai officié en tant que développeur principal. J’ai notamment travaillé sur l’intelligence artificielle (IA) d’Echo, l’intégration de l’HTC Vive et de l’histoire dans le gameplay.

Phobia est brièvement présenté dans ce reportage de France 3 Hauts-de-France.

Synopsis

Dans l’univers de Phobia, les phobies naissent de la peur des gens et se manifestent de plusieurs façons. Le joueur incarne Abbigail, une jeune étudiante. Depuis toute petite, elle est ablutophobe : elle a peur de mourir noyée ou étouffée. De sa peur est née Ablutophobie, une créateur visqueuse. Pour survivre, cet être doit se nourrir de la peur de son hôte.

Un jour, Abbigail se fait attaquer par sa phobie. Elle est sauvée de justesse par Elijah, un inspecteur de police de 56 ans. Devenue hypersensible à la lumière suite à son agression, Elijah décide alors d’entraîner pour elle un chien du commissariat nommé Echo pour l’aider dans sa vie de tous les jours. Ils continuent à se côtoyer pendant plusieurs années, enrichissant leur amitié et continuant l’apprentissage du malinois.

Durant ses recherches sur l’agresseur d’Abbigail, Elijah trouve une piste viable qui le conduit à quelques bâtiments désaffectés du sud de la ville. Un jour, il disparaît sans laisser de traces. Après quelques jours d’incertitude, Abbigail décide de retrouver son ami elle-même et de se rendre dans les derniers lieux d’investigation du détective. Elle arrive rapidement à une piscine abandonnée où Echo semble flairer une piste. L’histoire du jeu commence à cet instant.

Le joueur incarne donc Abbigail et est accompagné tout au long du jeu par Echo. À certains moments précis de l’histoire, le joueur prend également le contrôle du chien, par exemple pour chercher des clés dans un endroit que Abbigail ne peut pas atteindre.

L’utilisation de la réalité virtuelle nous a permis de rendre l’expérience de jeu très immersive. Grâce aux manettes de l’HTC Vive, le joueur peut réellement interagir avec l’environnement. Il peut aussi interagir avec Echo, comme en lui jetant une balle ou en le caressant !

Phobia a demandé beaucoup de travail et il serait bien trop long d’évoquer tous les aspects de son développement. Pour découvrir le jeu de la meilleure des manières, je vous invite à visionner son walkthrough. Dans la suite de cet article, vous pourrez découvrir les principaux points sur lesquels j’ai travaillé.

Echo, fidèle malinois

Echo adore jouer à la balle !

Même si Echo n’est pas le personnage principal de l’histoire, il reste le plus important du jeu. Il est toujours présent dans le champ de vision du joueur et apporte de la vie à l’environnement. Son IA devait être crédible pour ne pas gâcher l’expérience de jeu.

L’utilisation de la réalité virtuelle a permis de créer des mécaniques de jeu très intéressantes avec Echo. Fidèle malinois, il est toujours à proximité de sa maîtresse. Grâce aux manettes, il est donc possible de le caresser, de lui dire de s’asseoir, de l’appeler pour qu’il nous rejoigne ou encore de jouer à la balle avec lui !

Echo, comme de nombreuses IA, est basé sur un système d’états. L’un de ses états (appelé « walk around ») lui permet d’explorer la pièce où se trouve le joueur, de renifler ou de gratter certains endroits du décor, de fixer du regard une porte, etc. Il suffit de l’appeler pour qu’il revienne « au pied ».

Le joueur incarne Echo durant certaines séquences.

Notre but était de guider le joueur grâce au comportement d’Echo. À des moments spécifiques de l’histoire, l’IA d’Echo peut être désactivée pour que notre compagnon canin soit dirigé uniquement par la narration. Par exemple au début du jeu, Abbigail trouve le portefeuille d’Elijah. Elle doit donc faire sentir l’objet à son chien pour qu’il retrouve la trace du détective.

Pour que Echo ait l’air crédible, j’ai dû résoudre quelques problèmes techniques. Par exemple, nous avions besoin que Echo puisse regarder où nous voulions (vers le joueur ou un élément du décor). Il a donc fallu que je développe un système d’inverse kinematics pour orienter sa tête, car il était impossible à l’époque de le faire dans Unity pour un chien.

Également, pour que Echo se déplace de manière réaliste, j’ai créé un système qui gère de nombreuses situations. En fonction du chemin déterminé par l’algorithme de pathfinding et des obstacles à proximité, Echo est capable d’avancer et d’adapter son allure entre la marche, le trot et la course, son animation étant déterminée par la vitesse de son mouvement.

Intégration de l’HTC Vive

Les vestiaires de cette piscine ne sont pas très bien fréquentés.

L’HTC Vive nous a permis de créer de nombreuses interactions entre le joueur et l’environnement, rendant le jeu très immersif. En plus de l’intégration basique dans le projet (initialisation des manettes, gestion de leur connexion et déconnexion), j’ai créé un système qui permet d’utiliser facilement les fonctionnalités de la réalité virtuelle.

La plus grosse partie de ce système concerne la gestion des objets. L’idée était de développer tous les comportements redondants et génériques comme lorsque le joueur touche un objet, lorsqu’il le prend dans sa main puis le relâche (en le jetant ou non). Mais également de créer des outils pour, par exemple, définir la position des objets lorsque le joueur les prend dans sa main. Il était ainsi facile pour les membres de l’équipe d’ajouter de nouveaux objets dans l’environnement, avec lesquels le joueur peut interagir.

Heureusement, les casiers permettent de se cacher !

Un gros travail a aussi été effectué pour pouvoir ouvrir les portes de façon amusante et pratique. Pour échapper à la Phobie, le joueur peut se cacher dans des casiers. Après avoir refermé la porte sur lui, il peut ainsi regarder par les fentes de la porte du casier pour observer les alentours. Mais s’il s’avance trop, il poussera la porte avec sa tête sans le vouloir et il faut donc faire attention à ne pas se faire remarquer par la créature !

De plus, il a fallu déterminer comment le joueur pouvait se déplacer dans l’environnement, en évitant le problème du motion sickness tout en gardant un gameplay cohérent. D’autre part, l’HTC Vive permet au joueur de se déplacer dans le monde réel pour se déplacer dans le jeu. Nous avons donc pris en compte un autre problème : l’empêcher de traverser les murs à l’intérieur du jeu.

Au-delà du gameplay, nous avons intégré l’HTC Vive dans le processus de création de l’environnement. Il fallait que les proportions des objets et des salles de la piscine soient correctes, car avec la réalité virtuelle, on remarque vite qu’une porte est trop large ou qu’une canette est trop petite.

Intégration de l’histoire

À gauche : le diagramme, à droite : la liste de blocs.

Phobia étant un jeu narratif, nous devions trouver un moyen d’intégrer facilement l’histoire dans le jeu. Après avoir été écrite, elle a été représentée sous la forme d’un diagramme. Celui-ci décrit chaque étape de l’histoire et contient toutes les informations utiles, comme les dialogues d’Abbigail ou encore les actions que le joueur doit réaliser pour faire progresser la narration.

Basé sur ce diagramme, mon travail a été de trouver un moyen de représenter l’histoire dans Unity, et de créer un outil qui permet de la compléter et de l’éditer rapidement. La solution fut très simple : l’histoire est représentée par une liste de blocs qui s’exécutent les uns après les autres. Ces blocs peuvent être des actions :

AbbigailDialog Joue un dialogue.
ChangeCharacter Change le personnage jouable entre Abbigail et Echo.
EchoAIStoryBarks Echo va aboyer.
TutorialShowAction Affiche un tutoriel.
MoveVRLock Bloque (ou débloque) le déplacement du joueur.
TeleportShowZone Fait apparaître une nouvelle zone de téléportation.

Mais ils peuvent aussi être des événements à attendre :

Timer Attend le nombre de secondes demandé.
PlayerReachesTrigger Le joueur doit entrer dans un trigger.
PlayerInteractsObject Le joueur doit interagir avec un objet.
EchoAISmellObject Le joueur doit faire sentir un objet à Echo.
DoorUnlock Une porte doit être déverrouillée par le joueur.
AblutophobiaFindsAbbigail La Phobie doit trouver Abbigail.

Cette vidéo illustre la simplicité avec laquelle il est possible de créer et d’éditer l’histoire du jeu dans Unity :

C’était une expérience très intéressante de créer petit à petit cet outil. Je lisais dans l’ordre le diagramme de l’histoire puis j’ajoutais les blocs correspondant dans la liste dans Unity. Si un bloc n’existait pas encore, je le créais. Au total, un peu plus de 70 blocs différents ont été créés pour le déroulement de l’histoire. Progressivement, l’histoire était jouable à l’intérieur du jeu et chaque nouveau passage narratif était excitant à découvrir !

Crédits

Il faudrait écrire un article bien plus long pour détailler le travail accompli sur Phobia. Bien que je n’ai pas pu les évoquer ici, j’ai travaillé sur de nombreux autres aspects de ce projet comme l’IA d’Ablutophobie ou les tutoriels. Il aurait d’ailleurs fallu une année de développement supplémentaire pour réaliser le jeu dans son intégralité. Nous avons dû couper le jeu à la moitié de l’histoire pour garantir la meilleure qualité possible.

Développer Phobia était très enrichissant, aussi bien techniquement qu’humainement : l’entente au sein de l’équipe était très conviviale. Chaque membre de l’équipe faisait en sorte de faciliter le travail de chacun, notamment en créant des outils pour améliorer la productivité de tous. Pouvoir travailler avec l’HTC Vive était également une bonne opportunité pour nous de découvrir de nouvelles manières de créer un jeu vidéo.

J’étais accompagné sur ce projet de 4 personnes. Simon Hembert a écrit le document de game design ainsi que l’histoire du jeu. Il a aussi participé à la production des éléments 3D du décor, s’est chargé de la partie sonore et m’a assisté à la programmation et au prototypage du jeu.

C’est à Marianne Bal que nous devons l’univers de Phobia, le concept initial et la direction artistique du jeu. Armée de Substance Painter et de Photoshop, elle a donnée des couleurs aux éléments graphiques du jeu.

Guilherme Fernandes s’est chargé du level design du jeu. Tel Numérobis, il a dessiné les plans de la piscine avant de la construire dans Unity en plaçant chaque élément. Il a également participé au texturing des éléments sous Substance Painter et Substance Designer.

Jeremy Lesage s’est occupé de la création des différents shaders et effets visuels, du rigging des personnages ainsi que de nombreux outils. Il a notamment conçu un système de vertex painting qui nous a été fortement utile pour donner plus de vie au décor. Il a aussi eu l’occasion d’expérimenter un périphérique de motion capture, même si nous n’avons malheureusement pas pu intégrer les animations obtenues, l’appareil étant tombé en panne.

Il ne faut pas non plus oublier de remercier les différents intervenants qui nous ont grandement aidés :

  • Marie Wastiaux qui a prêté sa voix à Abbigail.
  • Alexandre Parent qui a composé des musiques originales pour le jeu.
  • Estelle Boittiaux qui a réalisé quelques animations pour Echo.
  • Margaux Lestavel et Mélissande Rose qui ont accepté de se vêtir de la combinaison de motion capture pour jouer les rôles respectifs de Ablutophobie et Abbigail.
  • L’équipe de Pole IIID qui nous a offert de bons conseils de production et sans qui nous n’aurions pas eu d’HTC Vive !