Cette page accompagne le modèle Talisman : Environnement, qui présente les meilleures pratiques en matière de création d'environnements réalistes et hautement détaillés. Les meilleures pratiques de construction et d'optimisation modulaire de l'Unreal Editor pour Fortnite (UEFN) ont permis de créer le Talisman.
Vous trouverez ce modèle dans la section Exemples de fonctionnalités du navigateur de projets.
Vous pouvez jouer l'expérience Talisman montrée à l'occasion de la Game Developers Conference 2024 en ouvrant Fortnite et en saisissant le code d'île 7100-3544-3074.
Emplacement du modèle Talisman : Environnement dans le navigateur de projets.
Cet aperçu vous présente les défis d'optimisation rencontrés lors de la création du projet Talisman et les solutions qui y ont été apportées :
Le modèle étant conçu pour fonctionner sur toutes les plateformes disponibles, les ressources et le style du Talisman doivent se conformer aux limites de mémoire et de taille de projet de l'UEFN. Cette donnée est à l'origine de plusieurs défis pour les projets conçus dans un style infographique plus détaillé :
Taille de projet : les ressources à haut niveau de détail peuvent s'avérer gourmandes, et la limite de taille de projet dans l'UEFN est de 400 Mo.
Limites de mémoire à l'exécution : une restriction de mémoire dynamique de 100 000 unités de mémoire s'applique à l'UEFN, ce qui limite la quantité de ressources, de paysages personnalisés et d'appareils qui peuvent se trouver simultanément à l'écran.
Qualité sur toutes les plateformes prises en charge : ces limites garantissent la disponibilité de votre expérience UEFN pour tous les joueurs sur toutes les plateformes prises en charge par Fortnite.
L'UEFN recourt à diverses techniques pour relever ces défis, notamment les niveaux de détail (LOD), les niveaux de détail hiérarchiques (HLOD), World Partition, l'instance de niveau et les couches de données.
Adopter les meilleures pratiques
Le modèle Talisman : Environnement a été conçu pour présenter les meilleures pratiques et processus permettant d'intégrer un réalisme AAA à l'Unreal Editor pour Fortnite. Ce modèle utilise les meilleures pratiques suivantes afin de gérer la mémoire dynamique et la mémoire de projet et d'optimiser les performances :
Créer du contenu personnalisé modulaire et léger
Améliorer l'aspect de la géométrie de surface dure à l'aide de normales pondérées par face.
Ajouter du détail aux maillages à l'aide de décalques de maillage.
Créer votre expérience pour la plateforme cible la plus bas de gamme et ajouter des fonctionnalités par la suite.
Minimiser les appels à générer sur les maillages non Nanite.
Créer du contenu personnalisé modulaire et léger
Le kitbashing, une technique de modélisation qui utilise les maillages provenant d'un environnement modulaire et les reconditionne pour créer de nouvelles ressources, a été utilisé pour créer l'environnement du Talisman. En réutilisant des ressources et en minimisant le nombre d'utilisations uniques des maillages, les infographistes ont pu diminuer la taille du projet.
Six maillages statiques différents constituent cette ressource.
D'habitude, les infographistes créent ce type d'environnement en mappant un maillage très détaillé et à nombre élevé de polygones sur un maillage à faible nombre de polygones à l'aide de textures de normales précalculées pour préserver le degré de détail entre les deux. Cette méthode nécessite des mappages de textures supplémentaires pouvant augmenter la taille de votre projet, s'avérer coûteux à l'exécution et poser des problèmes d'échelle pendant le processus de kitbashing.
Des maillages à nombre moyen de polygones à normales pondérées par face ont été utilisés pour économiser de la mémoire, ainsi que des décalques de maillage pour ajouter de petits détails.
Pour en savoir plus, consultez la section Concevoir et créer des maillages.
Créer votre expérience pour toutes les plateformes cibles
Fortnite est conçu pour fonctionner sur diverses plateformes. Pour proposer aux joueurs la meilleure expérience possible, quelle que soit leur plateforme d'utilisation, il est important de garder à l'esprit une certaine polyvalence, puis d'ajouter des fonctionnalités spécifiques à chacune d'elles pendant le développement.
Par exemple, la géométrie virtualisée Nanite permet un rendu très détaillé des maillages tout en améliorant les performances, mais n'est disponible que sur certaines plateformes haut de gamme, comme les PC utilisant DirectX 12. Il est donc important que vous continuiez à optimiser votre contenu de manière à obtenir des performances satisfaisantes sur toutes les plateformes.
LOD de maillage en qualité épique, élevée, intermédiaire et basse.
Pour en savoir plus sur la création de vos ressources personnalisées pour l'UEFN, consultez la section Concevoir et créer des maillages.
Minimiser les appels à générer en cas d'utilisation de maillages non Nanite
Les appels à générer désignent le processus indiquant à l'API des graphismes les éléments à générer et comment y procéder à chaque image. Nanite contourne les appels à générer standard en chargeant dynamiquement la géométrie dans la scène selon les besoins. Les éléments suivants amorcent un appel à générer dans une scène pour les maillages non Nanite :
Tout maillage individuel.
Tout matériau sur un maillage.
Tout éclairage.
Toute projection d'ombre.
Le modèle Talisman : Environnement utilise à la fois des maillages Nanite et non Nanite. Pour optimiser les performances lors de l'utilisation de maillages non Nanite, le nombre d'appels à générer de la scène a été minimisé en :
Supprimer des maillages non critiques.
Supprimer des décalques de maillage non critiques.
Supprimer certains éclairages projecteurs d'ombre et en compléter les autres à l'aide de fonctions d'éclairage.
Gérer les limites de projet et de mémoire à l'exécution
La gestion de la mémoire à l'exécution et celle de la taille du projet sont des éléments clés de l'UEFN. Le modèle Talisman : Environnement relève ces défis en :
Réduire l'étendue du projet.
Réutiliser les ressources personnalisées.
Gérer la mémoire à l'exécution.
Réduire l'étendue du projet
Pour répondre à la limite de taille de 400 Mo, le personnage MetaHuman a été déplacé vers le modèle Talisman : MetaHuman. Vous trouverez ce modèle dans la section Exemples de fonctionnalités du navigateur de projets. Pour découvrir les MetaHumans dans l'UEFN, consultez le
Niveaux de détail
Tout maillage utilisé pour créer le Talisman s'appuie sur trois niveaux de détail (LOD) pour tenir le projet dans le budget de 100 000 unités de mémoire en chargement dynamique.
Les paramètres de LOD automatique se situent dans le navigateur de maillages statiques.
Les maillages de LOD sont autogénérés à l'aide des outils de LOD automatique de l'UEFN et sont assignés à des niveaux de qualité précis. Pour en savoir plus sur l'utilisation des niveaux de détail dans l'UEFN, consultez la page Définir le niveau de détail.
Gérer la mémoire à l'exécution
Le modèle Talisman : Environnement utilise une solution de chargement dynamique personnalisée créée à l'aide de couches de données et de l'outil Sequencer pour tenir le niveau dans le budget de chargement dynamique de 100 000 unités de mémoire. La taille verticale de zones telles que la zone de cargaison et la longueur des couloirs faisaient sortir le vaisseau de la grille de chargement dynamique de World Partition.
Chaque couche de données correspond à une pièce différente du Talisman.
Pour surmonter cette restriction, des couches de données ont été associées à Sequencer pour charger et décharger certaines zones du vaisseau en fonction de l'endroit où se trouve le joueur.
Des zones d'altération déclenchent le chargement d'événements dans la séquence de niveau.
Chaque pièce possède sa propre couche de données correspondante et ses zones d'altération réparties dans le vaisseau, qui déclenchent des événements dans la séquence de niveau. Ces événements chargent et déchargent des sections du vaisseau à mesure que le joueur se déplace dans le niveau. Les zones d'altération sont placées stratégiquement dans certaines zones du vaisseau pour que le joueur ne s'en rende pas compte.
Cette solution n'est pas compatible avec les expériences multijoueur. Les couches de données et la séquence de niveau ont été intégrées, mais les zones d'altération ont été supprimées pour adapter le modèle aux expériences multijoueur.
Utiliser des éléments d'IU personnalisée
Ce modèle utilise Verse pour afficher un widget d'icône de quête personnalisée et lire de l'audio lorsque le joueur interagit avec la console dans la pièce de départ.
Un script Verse déclenche la bannière de quête personnalisée.
Quand le joueur utilise l'appareil Bouton Quartiers d'équipage VO, le fichier starting_sequence_device.verse :
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Fortnite.com/Characters }
using { /UnrealEngine.com/Temporary/UI }
using { /UnrealEngine.com/Temporary/Diagnostics }
Annuler l'audio de bienvenue si le message audio est en cours de lecture.
Activer une minicarte du vaisseau pour aider les joueurs à explorer le Talisman.
Afficher le blueprint de widget d'IU quest_icon_widget personnalisé.
Lire un clip sonore.
Pour en savoir plus sur l'utilisation de Verse pour personnaliser vos projets UEFN, consultez le guide d'initiation à la programmation Verse.
Éclairer les grands espaces
L'illumination Lumen globale participe à l'éclairage de l'environnement en fournissant au joueur des ombres et un éclairage indirect précis dans tout le vaisseau.
Ce couloir illustre toutes les techniques décrites ici.
Lumen fournit l'occlusion ambiante et l'illumination globale aux objets non concernés par l'éclairage direct. Lumen est certes un outil d'éclairage puissant, mais l'optimisation de votre environnement pour maximiser les performances demeure un critère essentiel. Lumen a été utilisé pour plusieurs optimisations du modèle Talisman : Environnement.
La projection d'ombres est désactivée pour tous les maillages statiques indirectement éclairés dans tout le niveau. Le système Lumen procure d'excellentes ombres à ces maillages. Désactiver la propriété Ombres projetées a donc permis d'améliorer les performances sans sacrifier la qualité visuelle.
L'option Ombres projetées est désactivée pour la plupart des lumières du modèle.
La projection d'ombres est également complétée par le recours à des fonctions d'éclairage et à une texture à rayures avec plafonniers.
L'association de chaque panneau lumineux émissif à un projecteur n'utilisant pas la projection d'ombres a permis de réduire le bruit Lumen et le vacillement lumineux provenant des panneaux émissifs.
Ce projecteur renforce l'éclairage provenant de ce panneau lumineux
La valeur émissive de chaque panneau est réduite et complétée par un projecteur dépourvu de projection d'ombres. Chaque projecteur reçoit un petit rayon d'effet et fournit un complément d'éclairage tout en donnant l'impression que la lumière provient toujours du panneau.
L'éclairage de l'environnement a encore été optimisé en attribuant la plus petite distance d'affichage possible à chaque lumière. Ce paramètre dissimule chaque lumière qui n'a pas besoin d'être rendue.
Le visualiseur de complexité d'éclairage a également été utilisé pour tout l'éclairage du Talisman.
Le raccourci Alt+7 permet d'activer le visualiseur de complexité d'éclairage
Ce mode d'affichage dans le hublot indique le nombre de lumières non statiques influant sur la géométrie de votre niveau en tant qu'ombrage des couleurs et assure le suivi du coût de l'éclairage sur les performances. Ce visualiseur permet de minimiser le chevauchement des lumières dans le niveau afin d'économiser les performances.
Concevoir et créer des maillages
Pour créer l'intérieur détaillé du Talisman, la technique du kitbashing et le recours à des maillages personnalisés à nombre intermédiaire de polygones ont été nécessaires. Le kitbashing est une technique puissante qui permet de minimiser le nombre de ressources de votre projet tout en vous donnant la possibilité de réutiliser et de combiner les maillages pour créer une nouvelle géométrie.
Chaque maillage du projet utilise diverses techniques pour améliorer l'aspect de la ressource sans ajouter de géométrie.
Les normales pondérées par face constituent une technique alignant les normales de vertex du modèle sur les faces plates, plus grandes afin d'améliorer l'ombrage sans pénaliser les performances.
Les normales de vertex (lignes vertes) s'alignent sur les faces plates, de taille supérieure, pour améliorer l'ombrage.
Les détails tels que les verrous, impacts et dégâts ont été ajoutés à l'aide de décalques de maillage. Ces décalques utilisent des UV personnalisés pour projeter une géométrie complexe sur les surfaces et peuvent s'enrouler autour des angles ou s'étirer le long des splines tout en conservant leur apparence.
Concevoir des matériaux à l'aide du contrôle de matériau dynamique
Les textures et les matériaux constituent souvent la part la plus importante d'un projet UEFN. Pour réduire encore la taille du projet, le modèle utilise une approche dynamique qui évite le recours aux textures uniques. Pour ce résultat final, un flux de travail procédural stockant occlusion ambiante, courbure et données de masque sur le maillage à l'aide de colorisations des vertex a été utilisé. Les données stockées ont ensuite été utilisées pour appliquer et fusionner les matériaux.
Données de colorisation des vertex
Il est préférable d'éviter l'utilisation de textures uniques pour chaque ressource en regroupant l'occlusion ambiante, la courbure et les données de masque de texture au sein de chaque maillage à l'aide de colorisations des vertex. Les maillages du Talisman ont été conçus avec une géométrie et une densité de maillage (polygones par pouces carrés) de soutien pour assurer une gradation fluide entre les colorisations des vertex. Cela permet des transitions propres entre les matériaux.
Les données sont stockées à l'aide de la méthode suivante :
| Mappage | Canal de couleur |
|---|---|
Occlusion ambiante | Rouge |
Courbure | Vert |
Masque d'identifiant de matériau | Bleu |
Pour en savoir plus sur la peinture de colorisation des vertex, consultez la section Matériaux de colorisation des vertex.
Les emplacements de matériau de chaque maillage sont ensuite utilisés pour définir la partie du maillage qui reçoit un matériau précis. Pour en savoir plus sur les emplacements de matériau, consultez la section Pipeline de matériaux FBX.
Ce fauteuil possède des emplacements de matériau pour le métal et le caoutchouc.
Contrôle de matériau dynamique
Les maillages du Talisman utilisent une combinaison de cinq types de matériaux principaux :
Métal
Métal peint
Plastiques
Caoutchoucs
Textiles
Chaque matériau dépend d'un matériau maître qui utilise des textures alignées sur le monde et des paramètres définis par l'utilisateur pour générer le résultat. La réutilisation conserve un faible coût de mémoire en permettant à nos infographistes d'utiliser les mêmes matériaux sur l'ensemble du vaisseau.
Une partie du matériau maître du modèle Talisman : Environnement
Le matériau maître comprend également de la poussière, des égratignures et d'autres marques d'usure à appliquer aux maillages à l'aide de masques axés sur des paramètres. Ces paramètres sont stockés sur le maillage à l'aide de données de primitives personnalisées.
Utiliser l'appareil Caméra tournante
L'appareil Caméra tournante fournit une vue qui suit le personnage de joueur, mais que le joueur peut faire tourner pour scruter les alentours. Le modèle utilise cet appareil pour permettre au joueur de passer de la vue à la troisième personne à une simulation de vue à la première personne.
L'appareil Caméra tournante permet aux joueurs de choisir l'une des trois vues disponibles
C'est le script Verse camera_switch_mode_device qui rend cela possible.
# This file handles swapping between different cameras when an input is pressed.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Fortnite.com/Characters }
using { /UnrealEngine.com/Temporary/Diagnostics }
Le code Verse écoute le joueur pour déclencher la commande d'action du mode Créatif cible mappée par défaut sur le clic droit de la souris ou sur le déclencheur gauche d'un contrôleur. Il procède ensuite aux actions suivantes :
Suppression de la caméra actuelle de la pile de caméras.
Obtention de la caméra suivante dans la matrice Caméras.
Ajout de la nouvelle caméra à l'agent.
Masquage du personnage de joueur si nécessaire.
Affichage du personnage de joueur si nécessaire.