Image reproduite avec l'aimable autorisation de Matthieu Fiorilli

Chasing the Unseen exploite les fractales pour générer ses environnements

Matthieu Fiorilli, développeur de jeux indépendants |
23 novembre 2022
Fondé en 2022 à Montréal, Strange Shift Studio est un studio de jeu indépendant constitué d'une seule personne, Matthieu Fiorilli, son fondateur.
Chasing the Unseen est un jeu dans lequel on escalade des créatures gigantesques et on explore des environnements surnaturels générés par le biais des fractales. En choisissant un projet aussi ambitieux en tant que développeur de jeu en solo, je savais que j'aurais besoin des bons outils. Dans ce billet de blog technologie, je vais vous brosser un aperçu de la façon dont j'ai relevé ces défis pour Chasing the Unseen.
 

Les outils destinés aux développeurs indépendants ont grandement progressé ces dernières années.  Ce type de projet n'aurait pas été possible jusqu'à assez récemment. Ce projet a pu voir le jour grâce au travail d'Epic, de SideFX et d'autres développeurs qui mettent ces outils à la disposition de tous.

En m'attelant à cet ambitieux projet, je savais que j'aurais besoin des outils adéquats et j'y suis parvenu en créant une symbiose entre l'Unreal Engine et Houdini.

Les créatures

Tout d'abord, observons les créatures et le système d'escalade.
Image reproduite avec l'aimable autorisation de Matthieu Fiorilli
Capture d'écran du jeu
J'ai créé mes créatures dans Houdini à l'aide de nombreux outils. Prenons la pieuvre par exemple : j'utilise les outils traditionnels d'Houdini pour la modéliser de façon procédurale, puis je la simule à l'aide du nouveau multi-solveur d'Houdini : Vellum. La simulation me donne des déformations très naturelles et fluides. Ensuite, la difficulté consiste à intégrer cela dans l'Unreal Engine pour en faire un objet qu'on puisse escalader. Pour cela, j'ai utilisé un outil puissant : Dem Bones. Ma simulation de pieuvre dans Houdini est lourde : chaque point de la géométrie dispose de sa propre animation, et ce n'est pas une chose que le moteur de jeu peut simplement utiliser à ce stade. Grâce à Dem Bones, je peux générer de façon procédurale un ensemble d'os et de skinning permettant de reconstruire la simulation à l'aide de données adaptées au moteur de jeu. Cela signifie qu'au lieu d'avoir une animation pour chacun de mes 128 000 sommets/points pour la pieuvre, je peux obtenir un résultat similaire en n'animant que 600 os environ.
Image reproduite avec l'aimable autorisation de Matthieu Fiorilli
Simulation Vellum générée à l'aide de Dem Bones
Je peux ensuite importer la créature dans l'Unreal Engine et produire une vidéo en temps réel. C'est là que j'utilise une machine d'état pour mixer les différentes animations. Selon les informations de skinning issues de Dem Bones, je peux générer de façon procédurale des enveloppes convexes pour les collisions, qui sont ensuite importées dans l'Unreal Engine grâce à des outils personnalisés.
Image reproduite avec l'aimable autorisation de Matthieu Fiorilli
Maillage de collision dans l'Unreal Engine
Pour l'escalade, un maillage d'une résolution plus basse est généré et importé dans l'Unreal Engine. En m'aidant d'un mélange de blueprints et de C++, mon système d'escalade peut alors utiliser ce maillage basse résolution pour fixer le personnage aux créatures.
Image reproduite avec l'aimable autorisation de Matthieu Fiorilli
Système d'escalade créé à l'aide de Blueprint et de C++

Les environnements

Pour les environnements, j'utilise la géométrie fractale et d'autres techniques procédurales. Les fractales sont ces courtes formules mathématiques qui génèrent des formes qui s'auto-répètent à l'infini. L'une des plus célèbres est l'ensemble de Mandelbrot.
Image reproduite avec l'aimable autorisation de Wikipédia
Image de l'ensemble de Mandelbrot tirée de Wikipédia
L'ensemble de Mandelbrot est une fractale en 2D baptisée ainsi en hommage à Benoît Mandelbrot. Des années après sa découverte, une version analogue en 3D a vu le jour : le Mandelbulb.

Cela amène à la question suivante : comment apporter des fractales dans le jeu vidéo ? J'ai pu résoudre ce problème grâce à la symbiose entre Houdini et l'Unreal Engine. Dans Houdini, j'utilise le VFX Fractal Toolkit, issu du projet de fin d'études de Juraj Tomori, pour générer les fractales. J'ai ensuite développé un pipeline autour de cela pour préparer la géométrie afin qu'elle puisse être utilisée par l'Unreal Engine. Ce pipeline sert aux fractales et aux autres méthodes de génération de maillage procédurales (selon le niveau).
Image reproduite avec l'aimable autorisation de Matthieu Fiorilli
Maillage fractal généré pour un niveau du jeu
Pour que les fractales soient adaptées à l'Unreal Engine, il fallait réaliser beaucoup de tâches différentes : supprimer les très petits détails, créer des pentes lisses et accessibles à pied, diviser le maillage en parties adaptées à une bonne occlusion dans l'UE, réduire le maillage, générer des LOD, UV et lightmaps, entre autres. Tous ces processus sont automatisés et adaptés aux besoins de l'Unreal Engine.
Image reproduite avec l'aimable autorisation de Matthieu Fiorilli
Capture d'écran de l'un des niveaux du jeu
Enfin, une fois que tous ces processus sont achevés, le niveau est créé dans l'Unreal Engine et je me sers du système d'éclairage pour générer les lightmaps. Vu que le niveau est divisé en plusieurs parties, le système d'occlusion de l'Unreal Engine excelle pour afficher uniquement le maillage que l'on voit à la caméra. Le système de LOD de l'Unreal Engine n'affiche que le maillage doté de la densité requise en fonction de la distance de la caméra. Pour les collisions, je génère un maillage distinct de moindre résolution.
Image reproduite avec l'aimable autorisation de Matthieu Fiorilli
Capture d'écran de l'un des niveaux du jeu

En conclusion

Je vous ai montré la façon dont j'ai géré les créatures, l'escalade et les niveaux dans mon jeu. C'est le flux de travail principal que j'utilise dans tout le jeu et, en cas de besoin, je peux introduire diverses variations selon les créatures et les niveaux.

Trouver des solutions pour résoudre les problématiques de ce projet a été un vrai défi. Mais en tant que développeur indépendant, je disposais de la liberté et de la flexibilité nécessaires pour recourir aux derniers outils en date et faire de tout cela une réalité. J'espère que cette publication vous a été utile et vous a permis de mieux comprendre le côté technique de ce projet, au moins dans ses grandes lignes, et que vous y trouverez l'inspiration en voyant ce qu'il est possible de réaliser avec les outils existants à l'heure actuelle.

Merci de m'avoir lu ! Chasing the Unseen va sortir sur PC, et vous pouvez en découvrir plus sur ce projet à l'adresse suivante : www.chasingtheunseen.com.

    Obtenez l'Unreal Engine dès maintenant !

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