La technologie Northlight dans Alan Wake 2
(remedygames.com)- L’équipe Northlight de Remedy a créé ou profondément remanié des technologies clés, de l’architecture du moteur au rendu, pour Alan Wake 2, posant les bases nécessaires pour gérer des mondes plus vastes et plus complexes
- Le nouveau modèle d’objets de jeu basé sur ECS améliore l’efficacité mémoire et l’exécution parallèle sûre, permettant de créer des mondes plus dynamiques sur des machines dotées de nombres de cœurs CPU variés
- Le contrôleur de personnage basé sur des voxels et le déplacement des PNJ piloté par l’animation aident les personnages à se mouvoir naturellement même dans des espaces étroits et complexes, tandis que l’outil Scattering prend en charge la création d’une végétation dense
- Le rendu s’appuie sur un pipeline piloté par le GPU, les mesh shaders, le culling par meshlets, l’animation de végétation sur GPU, le HDR et le rendu transparent MBOIT pour traiter davantage de géométrie ainsi que les effets de brouillard et de transparence
- La version PC exploite DLSS Frame Generation, DLSS Ray Reconstruction et le Path Traced Indirect Lighting lorsque la configuration matérielle le permet, afin d’offrir un ray tracing plus précis et plus robuste que dans Control
Le moteur Northlight et les technologies fondamentales de gameplay
- Pendant le développement d’Alan Wake 2, Northlight a basculé vers un framework d’objets de jeu entièrement nouveau et orienté données
- Le nouveau modèle repose sur un système entité-composant (ECS)
- L’ECS permet un stockage efficace en mémoire ainsi qu’une exécution parallèle efficace et sûre
- Il prend efficacement en charge des matériels cibles aux nombres de cœurs variés, ce qui permet de créer des mondes plus vastes, plus dynamiques et plus riches
- L’outil Scattering pour le placement massif de végétation tire lui aussi parti des avantages de l’ECS
- Il permet de placer davantage d’entités dans le monde
- Il réduit le besoin de créer des solutions sur mesure distinctes pour la dispersion d’objets
- Dans l’implémentation du gameplay également, l’ECS accélère les itérations
- Il a été utilisé pour implémenter le Case Board, le storyboard visuel où Saga rassemble les preuves
- Il devient plus facile d’ajouter ou de modifier de nouveaux systèmes et objets de jeu
- Des gains de performances ont été constatés lors de la sauvegarde et du chargement du Case Board
Contrôle des personnages et déplacement des PNJ
- Alan Wake 2 a conduit à repenser le contrôle des personnages dans Northlight
- Le nouveau contrôleur de personnage basé sur des voxels permet une navigation fluide dans des environnements étroits, complexes et dynamiques
- Les mouvements des personnages deviennent plus naturels et plus fluides
- L’accent est mis sur la réduction des problèmes où les personnages heurtent des objets ou se retrouvent coincés dans des espaces étroits
- Le déplacement des PNJ a lui aussi été largement remanié
- Tous les PNJ utilisent à la fois un déplacement piloté par l’animation et un nouveau Motion Matching basé sur la distance
- Cela améliore la qualité des déplacements et permet de mieux contrôler quand et comment les animations sont utilisées
Vent, végétation et outils de scripting
- Dans Alan Wake 2, le vent réaliste influe sur la physique, les particules et les tissus
- Les game designers peuvent facilement définir des vitesses de vent différentes pour les zones intérieures et extérieures
- Les transitions entre ces deux zones se font de manière fluide et sans état persistant
- À l’intérieur de la voiture de Saga et Casey, une wind box mobile est appliquée afin de définir l’habitacle comme une zone intérieure sans vent
- Le système de vent est construit sur une approche Signed Distance Fields (SDF)
- La wind box sert de primitive pour définir un champ global lissé d’intensité du vent
- Elle agit comme un bloc de base déterminant la force du vent dans chaque zone, afin de créer des motifs de vent fluides entre intérieur et extérieur
- Le nouvel outil Scattering a été développé pour créer de la végétation à grande échelle et des accessoires d’environnement
- Il a été utilisé pour produire les environnements plus denses, plus riches et plus vivants d’Alan Wake 2
- Il est associé à une distance d’affichage (draw distance) plus longue qu’auparavant, permettant aux joueurs de voir des objets et des détails plus lointains
- Le langage de scripting est passé d’un langage maison à Luau, le langage de scripting embarqué dérivé de Lua par Roblox
- Luau expose un large éventail de fonctionnalités du moteur et prend en charge l’édition en direct
- Il est utilisé pour plusieurs systèmes de gameplay, comme le scripting de niveau et le système d’amélioration des armes
- L’équipe du jeu a pu prototyper et implémenter diverses fonctionnalités de gameplay et effets VFX sans l’aide des programmeurs moteur
- Remedy a créé sa propre extension de serveur de langage VS Code et l’a intégrée à son pipeline de développement
- L’adoption de Luau a permis de supprimer environ 80 000 lignes de code qu’il n’était plus nécessaire de maintenir
Rendu centré GPU et animation de la végétation
- Alan Wake 2 met en avant le nouveau pipeline de rendu piloté par le GPU de Northlight
- Il permet d’intégrer davantage de géométrie dans le monde sans sacrifier les performances
- Le rendu piloté par le GPU utilisant les mesh shaders permet un culling par occlusion à la précision d’un seul pixel
- Tous les éléments de la scène peuvent être utilisés comme occludeurs
- Grâce à cette capacité à ne rendre que ce qui est visible, le monde d’Alan Wake 2 présente davantage de détails géométriques que les sorties précédentes
- Le pipeline de rendu effectue le culling non seulement des meshes, mais aussi des meshlets
- Les meshlets sont des groupes de triangles plus petits et optimisés, extraits d’un mesh
- On peut observer la structure en meshlets dans l’exemple de l’épicerie de Cauldron Lake
- Le vaste environnement de forêt primitive a été réalisé grâce à un nouveau système de végétation basé sur des shaders
- Ce système repose sur un nouveau système de skinning exécuté entièrement sur le GPU
- Il prend en charge une animation par bone shader pilotée par les artistes
- Dans Alan Wake 2, il permet d’utiliser des rigs de type personnage pour toute la végétation visible dans l’environnement
- Le bone shader expose une API permettant aux artistes d’écrire eux-mêmes du code shader et de le raccorder au système de base
- La technique peut s’appliquer non seulement à la végétation, mais aussi à des objets oscillant sur l’eau ou à des câbles électriques balancés par le vent
- À Cauldron Lake, près de 300 000 bones sont traités à chaque frame
HDR, rendu transparent, VFX et ray tracing
- Alan Wake 2 prend totalement en charge le HDR
- Le réglage par défaut est calibré pour être satisfaisant à la fois sur des écrans SDR et HDR
- La prise en charge du HDR a nécessité une nouvelle approche du tone mapping
- L’étalonnage colorimétrique a été réalisé par un véritable coloriste selon des références HDR, afin de préserver le style artistique, l’ambiance et la narration aussi bien en HDR qu’en SDR
- Les scènes de brouillard dense reposent sur des améliorations du rendu transparent
- Northlight a entièrement refondu le rendu transparent pendant le développement d’Alan Wake 2
- Il utilise MBOIT (Moment-Based Order-Independent Transparency) pour mélanger en douceur des surfaces transparentes ayant différents niveaux de détail
- Les éléments transparents sont rendus avec MBOIT à trois résolutions
- Cela permet de fusionner sans rupture le brouillard, la géométrie transparente et les effets
- Le pipeline contrôlant le placement du brouillard dans le monde a également été amélioré pour offrir un contrôle plus fin
- En combinant un éclairage transparent au pixel près et des réflexions affectées par le brouillard, les éléments opaques et transparents s’intègrent mieux que dans les projets précédents
- Le brouillard approxime la diffusion multiple de la lumière afin de créer une atmosphère dense et réaliste
- Les outils VFX nodaux de Northlight ont fortement progressé en termes de fonctionnalités prises en charge et de performances à l’exécution
- Ils permettent aux artistes VFX de créer des effets complexes et dynamiques comme la pluie, l’humidité, la simulation de l’eau ou les blessures sur les personnages
- Les outils VFX profitent eux aussi du rendu piloté par le GPU, qui permet de traiter une grande quantité de géométrie via le GPU
- Par exemple, cela est utilisé lors du rendu d’objets rain blocker dans des masques dynamiques afin que la pluie ne soit pas visible à l’intérieur ou sous un abri
- Le ray tracing prend en charge un ray-traced direct lighting complet
- En collaboration avec Nvidia, Northlight combine un débruitage amélioré et des algorithmes d’éclairage indirect
- Le ray tracing d’Alan Wake 2 est plus précis et plus robuste que celui aperçu dans Control
- Comme toute l’animation de la géométrie végétale est produite et simulée via le skinning, le ray tracing améliore aussi le rendu de la végétation animée
- Les joueurs PC peuvent utiliser les dernières technologies Nvidia DLSS si leur configuration GPU et CPU le permet
-
DLSS Frame Generation
-
DLSS Ray Reconstruction
- Path Traced Indirect Lighting
-
1 commentaires
Avis sur Hacker News
Remedy est une société qui, côté graphismes, dépasse toujours largement sa catégorie si l’on considère que tout le studio ne compte que quelques centaines de personnes
Parmi les acteurs qui montent, seuls Remedy et CD Projekt Red semblent capables de rivaliser avec de gros moteurs comme Unreal, Unity ou EA Frostbite en matière de qualité d’image et de performances
Si vous vous intéressez à l’infographie ou au technical art, leurs présentations à la GDC/SIGGRAPH sont excellentes
Alan Wake 2 est techniquement l’un des plus beaux jeux jamais réalisés, et personnellement je pense que c’est aussi vrai artistiquement. Le fait qu’il reste beau même avec tous les réglages au minimum est une vraie réussite, car il est difficile de le faire bien fonctionner sur du matériel ancien tout en conservant un bon rendu
Cela dit, comme l’ont signalé des analystes comme Digital Foundry, les performances sont très mauvaises si le GPU ne prend pas en charge les mesh shaders. Cet article mentionne aussi l’utilisation des mesh shaders pour le culling, ce qui permet de rendre des objets comme des tasses à café ou des pneus parfaitement ronds tout en évitant le genre de problème qui plombe les performances de Cities Skylines 2, du type « chaque PNJ a des dents de 10 000 polygones dans la bouche ». C’est aussi l’un des grands avantages qu’apporte Nanite dans Unreal 5
On peut tracer une ligne assez nette entre l’incroyable démo Second Reality de 1993 et Alan Wake 2, trente ans plus tard
https://www.youtube.com/watch?v=iw17c70uJes
Le problème de performances est bien plus vaste que simplement « rendre des dents invisibles » : https://blog.paavo.me/cities-skylines-2-performance/
Comme exemple, c’est facile à comprendre, mais le problème plus important est l’absence de LOD et le manque de culling
CD Projekt Red n’est-il pas en train de passer ses prochains titres à UE5 ? Dommage. Cyberpunk était vraiment magnifique, et j’aurais aimé voir un jeu multijoueur réalisé avec ce moteur
CDPR en compte 1236, DICE, qui a créé Frostbite, 714, et Epic en comptait 2200 avant ses récents licenciements
Tous ces chiffres viennent de Wikipedia
Si ce ne sont pas les gens qui ont défini et popularisé l’infographie moderne qui poussent les GPU dans leurs retranchements, qui le fera ?
Même dans le premier exemple, le fait que les pieds glissent sur le sol, ou que le personnage soit bloqué par un objet et semble marcher sur place en glissant, est assez gênant
Je me demande quand ce genre de problème sera résolu
Bien sûr, le moteur lui-même est stupéfiant, et les effets visuels comme les systèmes sont parmi les meilleurs que j’aie vus jusqu’ici
Dans RDR2, les animations sont très réalistes, mais les contrôles donnent une sensation un peu « flottante »
Personnellement, je préfère un mouvement vif où, quand j’appuie à gauche, le personnage à l’écran se déplace immédiatement vers la gauche. Un système d’animation plus réaliste finit par introduire un délai jusqu’à ce que l’animation des pieds « rattrape » l’entrée du joueur
Mais le raycasting continu et les calculs d’IK ne sont pas gratuits, donc cela se paie aussi en performances, et cela entre également en conflit avec la réactivité
Beaucoup de jeux privilégient des déplacements plus rapides et des contrôles plus réactifs. Au final, c’est un problème techniquement résolu depuis des années, mais comme tout élément de game design, c’est une question de choix et de compromis
C’est une méthode utilisée par Naughty Dog et beaucoup d’autres. Mais comme le disent d’autres commentaires, la tension fondamentale entre réactivité et précision de l’animation reste bien présente
Dans Control, le précédent titre sous Northlight, c’était moins le cas [2]
[1] https://youtu.be/jQb07FHJ-bQ?t=628
[2] https://youtu.be/fcDK6tnx4vM?t=6700
En réalité, il s’agissait d’un algorithme qui mélange les animations pour rendre les transitions naturelles
C’est rafraîchissant de voir autre chose qu’un énième jeu basé sur Unreal Engine
Avoir son propre moteur interne doit être extrêmement difficile ; le moteur lui-même est un problème, mais les outils pour créer les niveaux, les animations, etc., sont peut-être encore plus difficiles
Cela dit, il doit aussi y avoir des avantages. Avec davantage de contrôle sur l’architecture bas niveau, les possibilités d’optimisation sont plus nombreuses. C’est plus difficile avec un moteur généraliste comme Unreal
J’ai hâte d’essayer ce jeu
Je ne comprends toujours pas pourquoi la compilation des shaders provoque des saccades, alors que la plupart des autres moteurs internes n’ont pas ce problème. Je ne comprends pas non plus pourquoi cela n’a pas encore été amélioré. Même si une mise à jour corrigeait ça demain, il faudrait des années avant que les jeux en tirent parti
Avec autant de moteurs prêts à l’emploi soutenus par de grandes communautés, il faut vraiment avoir besoin d’un contrôle total pour s’y lancer
J’aime le ton de l’article
Par exemple, j’ai apprécié le passage où l’équipe marketing dirait que « le personnage est plus réactif et vivant que jamais », alors que dans les notes de développement internes il serait écrit : « le personnage ne heurte pas les objets et ne se coince pas dans les espaces étroits »
Toute la phrase est du marketing, et même la comédie qu’elle contient est du marketing
Je me demande ce que Remedy pense aujourd’hui de l’usage du langage D dans son écosystème. S’ils l’utilisent encore, j’aimerais aussi savoir quelles difficultés ils ont rencontrées pendant le développement d’AW2
Références : Using an Emerging Language in Quantum Break (https://ubm-twvideo01.s3.amazonaws.com/o1/vault/gdceurope201...)
DConf 2016: Quantum Break: AAA Gaming With Some D Code -- Ethan Watson (https://www.youtube.com/watch?v=7YjLW7anNfc)
Ce qui est sûr, c’est qu’ils ne cherchent pas non plus de programmeurs D actuellement
Si vous voulez remonter aux sources, ce lien peut servir de point de départ : https://forum.dlang.org/post/lymybpygzfalbdgoaizr@forum.dlan...
La personne qui avait fait cette présentation ne travaille plus là-bas, et vu que de grands acteurs comme Facebook ont eux aussi cessé d’utiliser D, j’imagine qu’ils ne l’utilisent plus. Mais j’aimerais qu’on me prouve le contraire
Quand cette personne part, ou quitte un poste où elle peut contribuer et maintenir la technologie, celle-ci commence progressivement à être remplacée, sauf si le reste de l’équipe et du studio la soutient et l’adopte
D’après ce que j’ai entendu, il y avait une personne qui poussait pour écrire en D, mais je ne sais pas si elle est encore là
Il me semble qu’une partie de l’équipe qui créait du contenu de tout premier plan sur l’Unreal Marketplace a aussi participé à ce jeu
https://mawiunited.com/
C’est du très bon contenu. J’aimerais voir davantage de studios produire du contenu UE5 de cette manière
Je trouve intéressant qu’ils soient passés à Luau de Roblox comme environnement de scripting
Je me suis toujours demandé pourquoi autant de technologies de jeu utilisent Lua pour le scripting. Surtout quand elles sont conçues dès le départ
Tout ce qui peut utiliser le runtime C peut embarquer du scripting Lua
C’est pourquoi il a été utilisé comme choix par défaut, de Baldur’s Gate 1 à des titres modernes comme Warcraft III et Roblox
Les mouvements des personnages donnent encore pas mal une impression de vallée de l’étrange
Dans la vidéo « contrôleur de personnage basé sur les voxels », la marche semble glisser, et les premières secondes de « déplacement des PNJ » paraissent aussi maladroites
Je pense que c’est parce que chaque pas est strictement identique et utilise la même foulée. Les personnages se déplacent donc de façon bizarrement synchronisée
Plus tard dans la vidéo, quand les personnages passent individuellement de la marche à la course, on voit des mouvements plus variés et c’est beaucoup plus réaliste. Je me demande pourquoi il est si difficile d’ajouter globalement davantage de petites variations dans les mouvements
Cela dit, pour appuyer ce point, presque tous les PNJ alliés restent immobiles. Quand des ennemis affluent dans une zone hostile, on ne regarde pas leur façon de marcher, et de toute façon ils sont masqués par la brume
Personnellement, je considère Control comme une démo technique de tout cela. Cela explique aussi pourquoi il y a beaucoup moins d’ennemis et pourquoi le jeu est construit comme une histoire d’horreur
Donc ils ont un moteur de jeu ECS, un renderer de niveau AAA, une technologie similaire à Nanite, un moteur de scripting basé sur Lua et une animation faciale digne d’Hollywood ?
Ils devraient sortir leur moteur. Il pourrait devenir un sérieux concurrent d’Unreal. Grâce à l’ECS, il serait plus scalable, et il serait aussi plus facile d’écrire avec Luau
Je l’ai appris douloureusement en essayant d’acheter le jeu sous Linux. Concurrencer Unreal risquerait donc de détériorer cette relation
Mais transformer un logiciel interne en produit utilisable par d’autres personnes, c’est tout autre chose
Remedy a bien adopté un pipeline de meshlets, mais c’est désormais presque courant dans le rendu de pointe. Je n’ai pas vu de mention indiquant qu’ils utilisent des compute shaders pour réellement rendre de petits triangles comme Nanite, même si j’ai pu passer à côté
Maintenant, avec Alan Wake 2, même ray tracing désactivé, les réglages High tournent à peine
Visuellement, c’est un moteur impressionnant, mais à titre personnel je trouve que les exigences matérielles sont beaucoup trop élevées
L’architecture entité-composant-système (ECS) est aussi utilisée dans de jeunes moteurs de jeu open source comme Bevy[1]
Cela fait longtemps que je n’ai pas fait de développement de jeux, mais entendre parler d’une architecture qui élimine l’approche orientée objet lourde et complexe qu’on voyait souvent dans les jeux me donne envie de m’y remettre
[1]: https://bevyengine.org/
Il a commencé à prendre de l’élan au début des années 2000, et aujourd’hui, sans être universel, il est utilisé depuis longtemps comme une sorte de base, y compris dans certains moteurs open source
Voir par exemple https://github.com/Adelost/entity-component-systems-study#re...