Afin de garantir que vos îles fonctionnent sur toutes les plateformes prises en charge, Fortnite a mis en place certaines limitations de mémoire.
Dans l'Unreal Editor pour Fortnite (UEFN), vous pouvez utiliser des capacités de mémoire étendues pour créer des expériences plus vastes et plus variées. Pour en tirer pleinement parti, il est utile de comprendre la manière dont l'utilisation de la mémoire est calculée dans UEFN.
World Partition
World Partition est la magie qui se cache derrière une expérience de création d'une grande île. Cette fonction divise automatiquement le monde en une grille, et ne diffuse que les cellules nécessaires.
World Partition utilise le chargement dynamique, qui charge et décharge les cellules, et le Niveau de détail hiérarchique (Hierarchical Level of Detail ou HLOD), qui regroupe et diminue la quantité de détails sur les ressources au fur et à mesure que la caméra du joueur s'en éloigne.
Pour en savoir plus sur World Partition, le chargement dynamique et les HLOD, consultez la rubrique Chargement dynamique et HLOD.
Comment la mémoire est calculée
L'UEFN calcule l'utilisation de la mémoire à partir des données produites au moment de la préparation. En d'autres termes :
Des résultats rapides, même sur de grandes îles.
Des résultats constants chaque fois que vous effectuez le calcul sur la même version de l'île, le même build Fortnite et le même appareil.
Une prise en charge étendue de types de ressources supplémentaires, ainsi que de Scene Graph.
Le système de calcul de la mémoire dans l'UEFN s'exécute uniquement durant la phase de modification ; il est impossible de l'utiliser pour évaluer la consommation de mémoire pendant le jeu. Il permet de s'assurer que la consommation de mémoire de base d'une île ne dépasse pas un seuil raisonnable.
Cependant, une logique d'exécution personnalisée peut entraîner une consommation élevée de la mémoire, ce qui peut causer des problèmes aux joueurs et limiter leur capacité à jouer sur votre île. Nous vous recommandons d'utiliser le profileur spatial pour mieux comprendre comment votre île utilise la mémoire et fonctionne pendant le jeu, afin d'éviter tout problème de stabilité ou de performances pour vos joueurs.
Disposition de la session
Lorsque vous chargez votre session, vous verrez une barre Consommation de mémoire sur votre ATH.
La barre affiche un maximum de 100 000 unités de mémoire pour vous donner une idée de l'utilisation de la mémoire sur votre île.
Avec le chargement dynamique activé, la mémoire est calculée en fonction de la position du joueur sur l'île, plutôt que sur la mémoire totale utilisée par toutes les ressources de l'île. Effectuer un calcul de mémoire vous fournira les valeurs les plus précises possibles concernant la consommation de la mémoire pour chaque cellule de chargement dynamique.
Certaines ressources resteront en mémoire quelle que soit la position du joueur et utiliseront de la mémoire où qu'elles se trouvent. La plupart des ressources se chargeront et se déchargeront au fur et à mesure de leur chargement dynamique et la barre se mettra à jour pour refléter cela.
Toutes les ressources référencées par le niveau (notamment les appareils, les paysages, les maillages et textures personnalisés, etc.) sont prises en compte dans l'utilisation totale de la mémoire.
Notez que si une zone de votre niveau dépasse 100 000, vous ne pourrez pas publier votre île.
En tant qu'utilisateur de l'UEFN, vous pouvez dépasser la limite du thermomètre de 100 000 tant que vous ne publiez pas. N'oubliez pas que les personnes qui collaborent avec vous depuis une console pourraient atteindre la limite matérielle de mémoire disponible et seront alors exclus de la session. Ils pourront se reconnecter une fois le problème réglé.
Effectuer des modifications de contenu
Le système doit disposer de données préparées et à jour pour calculer avec précision la consommation de mémoire. Après avoir modifié le contenu avec la fonction Modification en direct ou l'outil Téléphone, l'invite Envoyer les modifications s'affiche même si le mode modification indique À jour, car la modification en direct n'actualise pas les données préparées utilisées pour les calculs de mémoire.
Tant que vous n'aurez pas envoyé les modifications, la barre d'utilisation continuera à se mettre à jour, mais affichera une valeur obsolète. Le coût des modifications de contenu ne sera pas pris en compte.
Lancer un calcul de la mémoire
Pour que votre expérience soit correctement publiée, elle doit fonctionner sur toutes les plateformes matérielles prises en charge.
Avant de publier, il est essentiel de s'assurer que votre projet ne dépasse pas les limites de mémoire. Dans le menu déroulant Projet, sélectionnez Lancer le calcul de la mémoire.
Ce processus calcule la mémoire utilisée dans chaque cellule.
Une boîte de dialogue vous invitera à télécharger la version privée. Cliquez sur le bouton et observez la barre de progression.
Vous pouvez éventuellement ajouter une description de la version de votre projet.
Une fenêtre contextuelle en bas de votre écran vous indique que le calcul de la mémoire est en cours.
Une fois le chargement terminé, la fenêtre contextuelle change pour indiquer que le calcul est lancé.
Le résultat du calcul de la mémoire s'affiche dans le client. Appuyer sur Continuer vous redonnera le contrôle de votre personnage.
Lorsque vous avez terminé, le personnage est téléporté vers l'emplacement d'origine avant le démarrage du calcul, et l'un des deux statuts suivants s'affiche :
Si l'option Chargement dynamique est activée sur votre projet, vous pouvez maintenant vous déplacer pour voir l'espace occupé par les différentes zones.
Si l'option Chargement dynamique est activée, la barre Mémoire utilisée change pendant le survol. Vous pouvez l'utiliser pour identifier les zones de votre carte qui pourraient dépasser le budget.
Si votre île dépasse le budget, vous devrez corriger les problèmes de mémoire locale avant de publier.
Mon île est au-dessus du budget. Quelles solutions s'offrent à moi ?
Plusieurs stratégies permettent de libérer de la mémoire une fois la limite atteinte. Essayez l'une des solutions suivantes :
Après le calcul de la mémoire, vous pouvez ouvrir une feuille contenant les 100 ressources les plus consommatrices de mémoire de votre île. Accédez à Fenêtre > Journal des messages > Résultats des tests de mémoire.
Le tableau ci-dessous fournit une définition de chaque terme :
Terme Explication Ressource
Ce terme désigne généralement le nom d'une ressource dans le navigateur de contenu. Certaines ressources peuvent porter le nom "Ressource Fortnite"; ce nom est attribué aux ressources qui n'ont pas été créées dans votre projet, mais qui sont prises en compte lors du calcul de la consommation de mémoire de votre île.
Type
Ce terme indique le type de ressource, par exemple la texture, le matériau, le niveau, etc.
Nombre de références d'acteurs
Ce terme indique le nombre d'acteurs référençant la ressource, directement ou indirectement.
Nombre de références de paquets
Ce terme indique le nombre de paquets préparés référençant la ressource. Ce nombre augmente généralement si une ressource est référencée par plusieurs cellules de World Partition.
Taille
Ce terme indique la taille de la ressource. Autrement dit, il détermine le niveau de contribution d'une ressource particulière à la barre Consommation de mémoire à l'emplacement échantillonné.
Chargez les textures dynamiquement lorsque cela est possible. Il convient pour cela de créer des textures adaptées au chargement dynamique (dimensions à la puissance 2) et de configurer les textures afin de générer des MIP maps. S'il s'avère impossible de charger dynamiquement les textures, celles-ci consomment systématiquement la quantité maximale de mémoire, quelle que soit la distance à laquelle elles sont utilisées. Plus en savoir plus, consultez la page Redimensionner les textures.
Activez le chargement dynamique dans le panneau World Partition. Bien qu'il s'agisse d'une nécessité pour les grandes îles, le chargement dynamique peut aussi bénéficier aux petites îles, surtout si leur contenu est dense.
Une fois le chargement dynamique activé, assurez-vous que l'option Est chargé spatialement est activée pour les acteurs, lorsque cela est possible. Dans le cas contraire, les acteurs seront préparés dans le paquet de niveau principal et seront toujours chargés. C'est tout particulièrement le cas des acteurs proxys de chargement dynamique Paysage, qui peuvent contenir de nombreuses données de collision qu'il est généralement préférable de charger dynamiquement à la demande.
Propagez uniformément le contenu de votre île. La concentration d'un trop grand nombre d'acteurs dans une zone restreinte ne permettra pas le chargement dynamique du contenu et augmentera considérablement votre budget mémoire.
Réduisez le nombre d'appareils utilisés par votre île. Les acteurs comptent parmi les appareils les plus coûteux que vous puissiez placer. Néanmoins, pour réduire le coût de mémoire, vous pouvez placer des instances d'un même appareil.
Jetez un œil à la fenêtre de taille du projet. Si vous remarquez des objets qui consomment beaucoup de mémoire sur le disque, il est probable qu'ils fassent de même à l'exécution. Pour consulter la taille de votre projet, cliquez sur le menu déroulant Projet et sélectionnez Taille du projet.
Réduire le niveau de qualité des LOD des ressources personnalisées, surtout pour les ressources qui ne sont visibles que de loin.
Réutilisez les ressources plusieurs fois. Dans une forêt de 100 arbres, utilisez 5 modèles et dupliquez-les au lieu d'utiliser 100 arbres uniques. Cela fera une énorme différence sur l'empreinte mémoire.
En cas d'utilisation de HLOD, générez-les tout au long du projet et veillez à ne les générer que pour des objets visibles de loin.
Faites appel aux couches de données s'il est possible de subdiviser vos îles en configurations qui ne sont pas toutes destinées à s'afficher en même temps. Par exemple, un cachot souterrain que le joueur ne peut atteindre qu'après être entré dans un sanctuaire.
Réduisez la complexité des maillages de votre contenu personnalisé. Les maillages à nombre élevé de polygones consomment plus de mémoire. Modifiez le maillage en double-cliquant dessus dans le navigateur de contenu et ajustez la valeur **Conserver le pourcentage de triangles** sous **Paramètres Nanite**. L'utilisation d'une valeur plus faible réduit la complexité du maillage et le coût de mémoire de l'acteur.
Résoudre d'autres problèmes
Pour effectuer une validation de manière appropriée, les créateurs doivent avoir activé le chargement dynamique et généré des mipmaps pour les textures. Auparavant, si l'option MipGenSettings de l'une de vos textures était définie sur Aucun mipmap, celle-ci n'était pas signalée lorsque votre île était soumise à la publication. Désormais, si l'option MipGenSettings d'une texture est défini sur Aucun mipmap, la validation échouera.
Tenez compte des exceptions suivantes à cette condition relative au chargement dynamique et aux mipmaps :
Cette règle s'applique uniquement aux textures comportant plus d'un million de texels. Ainsi, par exemple, si après multiplication, les dimensions d'une texture sont inférieures à 1 048 576, elle passera la validation même si l'option MipGenSettings est définie sur Aucun mipmap.
Il n'est pas nécessaire d'activer le chargement dynamique pour les textures du groupe IU.