Créer des vagues : le développement d'une mécanique de l'eau réaliste pour Still Wakes the Deep dans l'UE5

7 novembre 2024
Bonjour à tous ! Je m'appelle Joe Wheater, je suis programmeur chez The Chinese Room et mon équipe et moi avons récemment travaillé sur la mécanique de l'eau pour notre jeu d'horreur narratif Still Wakes the Deep. Le jeu est sorti au mois de juin sur PC, PlayStation 5 et Xbox Series X|S. Il embarque les joueurs à bord d'une plateforme pétrolière de la mer du Nord en 1975, sur laquelle une menace inconnue s'est infiltrée. Cameron "Caz" McLeary doit se frayer un chemin à travers la structure délabrée pour pouvoir rentrer chez lui.
Dans l'environnement principal du jeu, les joueurs se retrouvent encerclés par les eaux (presque) constamment, que ce soit dans les niveaux inondés de la plateforme ou par la mer du Nord glaciale sous leurs pieds. Nous avions pour objectif de rendre chaque goutte d'eau aussi menaçante et réaliste que possible. Je vais vous partager le processus de création d'une mécanique de l'eau réaliste dans l'Unreal Engine 5, les résultats que nous avons obtenus et les meilleurs conseils que je pourrais donner aux autres développeurs qui cherchent à plonger dans des aventures aquatiques.

Notre défi

Notre défi était de créer une eau qui soit omniprésente, qui pousse les joueurs dans leurs retranchements et qui soit réaliste et punitive, sans jamais être insurmontable. Le jeu met en scène deux types d'eaux : celle qui s'est infiltrée à l'intérieur de la plateforme et qui l'inonde et la colossale mer du Nord qui l'entoure. 

Les deux doivent contribuer à renforcer le climat de tension dans le jeu et à exploiter certaines des peurs primales des joueurs, notamment la claustrophobie (peur des petits espaces), la submécanophobie (peur des objets fabriqués par l'homme immergés dans l'eau), la thanatophobie (peur de la mort), l'autophobie (peur de l'isolement), la thalassophobie (peur des grandes étendues d'eau), la nyctophobie (peur de l'obscurité) et l'acrophobie (peur des hauteurs).
Les joueurs se retrouvent piégés sur une plateforme pétrolière délabrée dans l'un des environnements les plus dangereux au monde. Comment arriveront-ils à s'en sortir face aux vagues de la mer du Nord venant se fracasser sur la plateforme en contrebas ?
Bien que ces deux éléments contribuent à raconter une histoire et à créer un sentiment de peur dans le jeu, ils sont très différents dans leur apparence, leurs mécaniques et leurs fonctions. Nous allons vous révéler ici comment nous avons travaillé sur l'eau à l'intérieur de la plateforme, comment la montée du niveau de l'eau et son écoulement sont liés aux pics de tension dans le jeu et comment les joueurs se retrouvent trop souvent en contact direct avec elle.

Développement de l'aspect du sentiment d'angoisse

Au fur et à mesure que vous avancez dans Still Wakes the Deep, les secrets et l'histoire du jeu commencent à se dévoiler : les membres de l'équipage commencent à se transformer, la plateforme se désagrège et des morceaux de métal viennent s'écraser sur les vagues déferlantes en contrebas, alors que l'eau commence à s'infiltrer et à immerger les niveaux inférieurs de la plateforme. Malheureusement pour Caz (et pour le joueur), il va falloir se glisser dans le ventre de la bête et explorer les niveaux inondés de la plateforme pour progresser.
Tout au long de "Still Wakes the Deep", les joueurs devront parcourir à la nage les niveaux inférieurs inondés de la plateforme pour s'échapper, déclencher des mécanismes ou trouver des objets.
 
Le fait que plusieurs chapitres du jeu se déroulent dans l'eau est un choix de conception de niveau délibéré. Nous voulions donner au joueur l'occasion de découvrir et de maîtriser de nouvelles mécaniques, ce qui a représenté un défi intéressant et agréable pour notre équipe. Sachant que l'eau est l'une des principales menaces du jeu, nous voulions que son apparence reflète sa puissance en lui apportant des détails, de la profondeur et de la noirceur.

Pour créer cette apparence, nous avons développé une simulation d'eau peu profonde en deux dimensions à l'aide du système d'effets visuels Niagara d'Unreal. La simulation 2D ne fait que simuler la surface de l'eau et calculer les équations qui décrivent ses mouvements. Ainsi, lorsque l'eau s'écoule rapidement (en général, lors des séquences d'inondation), elle entraîne des changements de hauteur de surface, ce qui génère des vagues et des ondulations qui lui donnent un aspect sauvage et menaçant. 

Dans ces séquences, l'eau semble déchaînée et incontrôlable, mais en réalité, nous avons configuré les systèmes de volume d'eau pour tenir compte de ce paramètre. Nous avons balisé les maillages de mur et de sol afin qu'ils puissent être précalculés dans une texture de hauteur. Cette texture de hauteur représente l'espace où l'eau peut s'écouler. Ces maillages servent ainsi de limites au sein de la simulation afin que l'eau puisse rebondir et se refléter dessus lorsqu'elle les touche.
 
Le joueur doit souvent s'immerger dans l'eau pour explorer les pièces délabrées ou remonter un courant rugissant pour atteindre la prochaine section. L'environnement de Still Wakes the Deep est sombre et métallique. Nous voulions nous assurer que les niveaux seraient principalement axés sur l'utilisation de l'eau comme d'un obstacle, qui ajouterait un degré de difficulté supplémentaire sans toutefois devenir impossible ou frustrant pour le joueur.

Pour ce faire, nous nous sommes appuyés sur le post-traitement pour créer la sensation d'être sous l'eau. Pour ajouter des dimensions supplémentaires à l'eau et donner l'impression que les objets immergés sont flous, nous avons également utilisé des effets de volumes de brouillard, de particules, de caustiques, de profondeur de champ, de flou et de flou lumineux.
 
La vision du joueur est volontairement floue lorsqu'il plonge sous la surface de l'eau. Cet aspect ajoute non seulement une dynamique de gameplay intéressante et un degré de difficulté, mais aide également le joueur à savoir qu'il est sous l'eau et qu'il doit nager vers la surface s'il veut reprendre son souffle.
Nous avons également ajouté des volumes de brouillard et des systèmes de particules supplémentaires dans l'eau pour donner l'impression qu'elle regorge de polluants et lui donner une apparence trouble et épaisse. Nous avons ajouté des couches de poussière, de débris et de bulles pour obstruer davantage la vision. Ces systèmes de particules se sont avérés particulièrement utiles pour créer une impression de mouvement. En effet, lorsque le joueur se déplace dans l'eau, il fait apparaître des bulles qui remontent à la surface, de la poussière tourbillonne lentement et il crée du courant.

Fonctionnement du post-traitement et des systèmes de particules. De gauche à droite, aucun post-traitement/brouillard ni aucune particule/lumière, puis aucun post-traitement avec brouillard, lumière et particules activés, et enfin le produit fini avec tous les systèmes activés.

Développement de l'impression de plongée dans les profondeurs

Nous voulions nous assurer que les joueurs ressentent la montée des eaux de manière aussi menaçante que sur la terre ferme et que le gameplay reflète la tension et l'horreur de l'histoire. Pour ce faire, nous avons développé et mis en œuvre un système de pompe qui a ajouté de la vitesse et du courant dans l'eau, non seulement pour donner à l'eau une impression de vitesse et de remous, mais également pour accompagner les mouvements du joueur.

Le système de pompe est constitué d'objets en forme de capsules qui injectent de la vitesse dans la simulation d'eau et créent des vagues et des ondulations qui se déplacent à la surface de l'eau pour indiquer sa direction. Nous avons ensuite fixé plusieurs pompes aux bras, aux mains et aux pieds du personnage principal, ce qui a eu pour effet de faire se croiser les pompes et de créer un flux de mouvements réaliste et en temps réel du joueur dans l'eau.
 
Pour accentuer le sentiment d'immersion, nous voulions non seulement que l'eau ondule dynamiquement en fonction des actions du joueur, mais qu'elle ait également un impact sur les objets immergés dans l'eau. En simulation, nous nous sommes rendu compte que les objets physiques, tels que les barils de pétrole ou l'armature de la plateforme, ne réagissaient pas au mouvement de l'eau en surface. 

Pour résoudre ce problème, nous avons utilisé la fonctionnalité de lecture du GPU de Niagara, qui nous a permis d'interroger la simulation pour obtenir le sens d'écoulement, la force et la hauteur de surface à certains endroits. Grâce à ces données, nous avons pu appliquer les forces de flottabilité pour faire flotter l'objet, mais également utiliser les forces d'écoulement de l'eau pour faire en sorte que l'objet se déplace conformément à la simulation de surface, ce qui donnait l'impression que les objets se déplaçaient en corrélation directe avec le joueur.
 
Nous avons essayé d'appliquer d'autres mécanismes tout au long du développement qui auraient pu renforcer encore davantage l'immersion et l'authenticité, mais ils ont malheureusement eu une incidence négative sur l'expérience de jeu. 

Par exemple, nous avons réfléchi à simuler la sensation de porter une combinaison qui se serait gorgée d'eau en nageant. Ce mécanisme aurait ralenti la vitesse de nage et diminué la flottabilité de notre personnage principal, Caz, qui est ingénieur dans l'un des environnements les plus froids de la planète et qui porte une lourde combinaison.
 
L'Uniforme porté par l'équipage de la plateforme Beira D. Nous avons joué avec l'idée d'ajouter au personnage de Caz une mécanique réaliste d'engorgement pour que le joueur prenne l'eau en temps réel lorsqu'il nage. L'association de lourds matériaux à plusieurs couches le faisait couler très vite et corsait beaucoup trop la difficulté des niveaux dans l'eau.
Nous avons essayé de mettre en place ce système, mais nous avons constaté qu'il était frustrant pour le joueur et qu'il nous était difficile de lui expliquer ce qu'il se passait. En outre, la lenteur de la nage limitait la distance que le joueur pouvait parcourir sous l'eau en prenant une seule respiration et restreignait la taille de l'espace pour lequel l'équipe de conception avait développé la nage. Nous avons finalement supprimé cette mécanique pour rendre l'expérience plus fluide, mais c'était une idée intéressante ! 

Outils de création d'une eau réaliste

Nous avons découvert que l'Unreal Engine proposait une série d'outils et de technologies intégrés que nous pouvions utiliser et dont nous pouvions nous inspirer lors de la création de l'eau pour Still Wakes the Deep , notamment : 
 
  • Modèle d'ombrage Eau en couche unique : ce modèle nous a permis d'obtenir une apparence réaliste de l'eau dans l'Unreal Engine et nous avons beaucoup appris des ressources existantes d'Epic sur son implémentation et son efficacité.
 
  • Exemple de projet Exemples de contenu : cet exemple de projet contient des tonnes d'exemples utiles pour toutes les parties du moteur. Il a été essentiel pour nous dans l'apprentissage de Niagara et de la simulation des fluides. 
 
  • Éditeur de matériau : nous avons utilisé l'éditeur de matériau pour appliquer des effets de texture sur les données de simulation. Il nous a été très utile pour ajouter des effets aux visuels de l'eau et il nous a aidés à développer l'intrigue au fil du jeu.
 
  • Niagara : nous avons utilisé Niagara pour la simulation en elle-même, mais également pour de nombreux systèmes de particules, comme les ruptures de canalisations ou les débris dans l'eau. Les étapes de simulation de Niagara nous ont également beaucoup aidés lors de notre apprentissage. Elles ont joué un rôle essentiel pour nous aider à comprendre l'élaboration de la simulation des fluides dans l'Unreal Engine.
 
  • Système d'eau : notre système d'eau lit les données de simulation de Niagara en utilisant une interface de données Niagara. Les autres systèmes du jeu peuvent ainsi réagir dynamiquement à l'état actuel de la simulation.
 
  • Volumes de brouillard : nous avons utilisé un matériau volumétrique pour rendre le brouillard dans nos volumes d'eau, ce qui signifie que le matériau a pu obtenir des informations de la simulation d'eau en échantillonnant une cible de rendu de matrice 2D.

Choix de l'Unreal Engine 5

Je suis Nick Slaven, directeur technique sur le jeu Still Wakes the Deep de The Chinese Room. 

Pour Still Wakes the Deep, notre choix s'est naturellement porté sur l'Unreal Engine. Le réalisme et le contrôle sur le processus de création qu'offre l'Unreal Engine, sans oublier ses capacités en tant que moteur, étaient exactement ce dont nous avions besoin pour matérialiser le concept de jeu imaginé par Dan Pinchbeck, notre directeur créatif de l'époque.

Notre équipe ne maîtrisait pas encore l'Unreal Engine, mais grâce à notre partenariat avec Epic, nous avons pu organiser une formation pour leur permettre de se familiariser avec l'Unreal Engine 4.26 avant de passer à l'Unreal Engine 5. Le passage à une version plus récente du moteur nous a permis de tirer parti des nouvelles technologies d'Epic, telles que Nanite et Lumen, qui ont non seulement amélioré l'aspect et l'atmosphère du jeu, mais qui ont aussi renforcé l'efficacité de notre flux de travail. Certaines fonctionnalités, comme l'éclairage en temps réel de Lumen, nous permettent de visualiser instantanément les changements de paramètres d'éclairage sans avoir à attendre le précalcul des textures d'ombre.

De plus, la technologie de l'eau fournie par l'Unreal Engine nous a permis d'obtenir une simulation satisfaisante de la mer du Nord et ses outils de shader nous ont fourni les éléments constitutifs de notre simulation d'eau à l'intérieur de la plateforme. Nous nous sommes aussi beaucoup servis de MetaHuman pour créer tous les ouvriers de la plateforme, ce qui a permis d'atteindre un niveau de réalisme et de narration inédit.

Enfin, nous avons pu exploiter la technologie de Control Rig pour l'équipage altéré de la plateforme pétrolière Beira D, ce qui nous a permis de créer des créatures surnaturelles crédibles ayant pour objectif d'effrayer et d'intriguer le joueur.

Obtenez l'Unreal Engine dès maintenant !

Procurez-vous l'outil de création le plus ouvert et le plus avancé au monde.
L'Unreal Engine est prêt à l'emploi, avec toutes les fonctionnalités et un accès complet au code source.

Articles similaires


Jeux

L'Unreal Engine 5.5 est disponible

Cette version apporte des améliorations majeures aux trousses à outils de création d'animations, de rendu, de production virtuelle, de développement de jeux mobiles, d'itération de développement et bien plus encore.

Actualités

Fab, le nouveau marché du contenu unifié d'Epic, fait son lancement aujourd'hui !

Aujourd'hui, Epic lance Fab, une destination unique où vous pourrez découvrir, acheter, vendre et partager des ressources numériques. Ce nouveau marché soutient tous types de créateurs avec du contenu utilisable dans l'Unreal Engine, Unity 3D, l'UEFN et d'autres outils de création numérique.

Jeux

Découvrez les grandes annonces de l'Unreal Fest Seattle 2024

Revivez les annonces d'Epic Games à l'Unreal Fest Seattle 2024 pour découvrir la réduction du taux de redevance de l'Unreal Engine avec l'Epic Games Store, les nouvelles fonctionnalités de l'UE5.5, l'arrivée des Tortues Ninja dans l'UEFN et bien plus encore.