World Partition

Le level design, la création d'environnements, World Partition, les outils de landscape et de foliage, et le Procedural Content Generation (PCG)
Avatar de l’utilisateur
Saul
Messages : 213
Inscription : 17 sept. 2022, 15:53

Pour créer de grandes cartes, les développeurs devaient auparavant diviser manuellement les cartes en sous-niveaux, puis utiliser le système de streaming des niveaux pour les charger et les décharger au fur et à mesure que le joueur traversait le paysage. Cette méthode posait souvent des problèmes de partage de fichiers entre plusieurs utilisateurs, et la visualisation du monde entier dans son contexte devenait une tâche difficile.



World Partition est un système de gestion automatique des données et de streaming des niveaux basé sur la distance qui fournit une solution complète pour la gestion des grands mondes. Le système supprime la nécessité de diviser les grands niveaux en sous-niveaux en stockant votre monde dans un seul niveau persistant séparé en cellules sur une grille, et vous fournit un système de streaming automatique pour charger et décharger ces cellules en fonction de la distance par rapport à une source de streaming.



Activer World Partition

Il y a trois façons d'activer World Partition dans Unreal Engine :

• Créer un nouveau projet à partir d'un modèle de la catégorie Jeux.
• Création d'un nouveau niveau à l'aide du modèle Open World.
• En convertissant des niveaux existants pour utiliser World Partition.



Créer votre projet à l'aide d'un Template

World Partition est activé par défaut dans de nombreux template de projet de la catégorie Jeux.



Pour réduire la complexité et fournir une solution évolutive lors de la création de nouveaux projets, le streaming des cellules de grille peut être activé et désactivé à l'aide de l'option Enable streaming dans world settings.



Les templates suivants utilisent World Partition mais l'option Enable Streaming est désactivée par défaut :

• Blank
• First Person
• Third Person
• Top Down
• Vehicle Advanced



Utiliser Open World Default Map

Open World Default Map est conçu pour servir de point de départ à la création de grandes cartes en monde ouvert. Les fonctionnalités suivantes sont activées par défaut :

• World Partition
• One File Per Actor
• Data Layers
• Hierarchical Levels of Detail



La carte contient un exemple delandscape de 2 km x 2 km avec un landscape material et une configuration d'éclairage pour un environnement extérieur. Cela comprend une sky atmosphere, skylight, directional light, exponential height fog et volumetric clouds.



Pour utiliser le Open World Default Map dans votre projet :

• Ouvrez le menu Fichier et sélectionnez Nouveau niveau.
• Sélectionnez le type Open World Map.
• Cliquez sur le bouton Créer pour créer une nouvelle carte.



Convertir des niveaux existants pour utiliser la World Partition

Vous pouvez ajouter World Partition à n'importe quel niveau en le convertissant à l'aide de l'option de menu Outils > Convertir le niveau.



Utiliser World Partition

Le système World Partition fonctionne en stockant votre monde dans un seul fichier Level persistant et en subdivisant l'espace en cellules de grille diffusables à l'aide d'une grille d'exécution configurable. Ces cellules sont chargées et déchargées au moment de l'exécution par la présence de sources de streaming, comme le joueur. De cette façon, Unreal Engine ne charge que les parties du niveau que le joueur voit et avec lesquelles il interagit à un moment donné.



Acteurs dans le World Partition

Lors de l'édition du monde, les acteurs peuvent être ajoutés n'importe où et sont automatiquement affectés à une cellule de la grille en fonction de leur paramètre Is Spatially Loaded, qui se trouve dans la section World Partition du panneau Details.



Runtime Grid : Détermine dans quelle grille de partition cet Acteur est placé. Si None, la grille sera choisie par le système de partition.
Is Spatially Loaded : Détermine si l'Acteur est chargé spatialement :
• S'il est activé, cet Acteur est chargé lorsqu'il se trouve à portée de toute source de streaming lorsqu'il n'est pas affecté à une couche de données désactivée.
• S'il est désactivé, cet acteur est chargé lorsqu'il n'est pas affecté à une couche de données désactivée.

Étant donné que les acteurs sont enregistrés dans leurs propres fichiers individuels à l'aide de la fonction One file per actor, vous n'avez pas besoin d'extraire le fichier de niveau du contrôle de la source pour apporter des modifications aux acteurs dans le monde. Cela libère le fichier de niveau pour les autres membres de votre équipe.

Les acteurs qui font référence à d'autres acteurs dans le niveau seront regroupés et chargés en même temps.



Streaming Sources

Le streaming des cellules de la grille au moment de l'exécution est déterminée par deux facteurs :
• Streaming Sources
• Runtime Grid Settings

Le premier est la position des sources de streaming dans le niveau.



Les streaming sources sont des composants qui définissent une position dans le monde et déclenchent le chargement des cellules qui les entourent. Les Player Controllers sont une streaming source. D'autres streaming sources peuvent être ajoutées au monde à l'aide du composant World Partition Streaming Source. Par exemple, un Streaming Source Component peut être activé à l'endroit où un joueur se téléportera, afin qu'il puisse charger les cellules à cet endroit. Une fois les cellules de la grille chargées, le joueur se téléporte à cet endroit et streaming source component est désactivé. Comme il n'y a plus de Streaming source à l'emplacement précédent du joueur, les cellules de la grille sont déchargées.



Utiliser le Player comme streaming source

Chaque Player Controller est utilisé comme streaming source de la World partition en utilisant l'option Enable Streaming Source. Cette option est activée par défaut :





Utiliser le World Partition Streaming Source Component

World Partition streaming se fait également à l'aide du composant World Partition Streaming Source :



Les fonctions Blueprint Enable Streaming Source et Disable Streaming Source permettent d'activer et de désactiver le streaming avec ce composant.



La fonction Blueprint Is Streaming Completed renvoie la réponse true lorsque le composant a fini de diffuser les cellules de la grille qu'il croise.



Runtime Grid Settings

Le deuxième facteur qui détermine si une cellule de grille est chargée ou déchargée au moment de l'exécution est le paramétrage de la grille d'exécution elle-même. Les paramètres de la grille d'exécution se trouvent dans le panneau World Settings, dans la section World Partition Setup.

Une grille 2D Runtime Hash est fournie par défaut. L'utilisation de plus d'une grille peut avoir un impact négatif sur les performances.





Chargement et déchargement des cellules de la grille dans l'éditeur

Pour faciliter le développement de mondes de grande taille, toutes les cellules de la grille sont initialement déchargées. Lorsque le niveau s'ouvre, l'éditeur ne charge que les acteurs dont le paramètre de placement dans la grille est marqué comme étant toujours chargé, comme les fonds d'environnement et les managers. Cela permet de développer de grands mondes où il est impossible de charger la carte entière dans l'éditeur.

Dans la fenêtre World Partition, vous pouvez sélectionner manuellement les cellules de la grille dans lesquelles vous souhaitez travailler.
Ouvrez la fenêtre en sélectionnant Window > World Partition dans le menu principal.



Dans la fenêtre, cliquez et faites glisser les cellules de la grille pour les sélectionner. Ensuite, cliquez avec le bouton droit sur la sélection pour ouvrir le menu contextuel permettant de charger et de décharger les cellules.





Génération d'une Minimap pour la fenêtre World Partition

Vous pouvez générer une carte miniature pour faciliter la navigation dans la fenêtre de la partition du monde en utilisant l'option Build Minimap (construire une carte miniature) qui se trouve dans la section World Partition du menu Build, ou en utilisant la commandlet World Partition Minimap Builder.



L'exécution de cette commandlet crée une image Minimap de votre monde World Partition et la place dans la fenêtre World Partition.

Attention : Si vous construisez votre Minimap et qu'elle n'apparaît pas dans la fenêtre World Partition, vous devrez activer la prise en charge de Virtual Textures dans votre projet. Pour activer les textures virtuelles, dans le menu principal, allez à Edit > Project Settings. Activez ensuite la case à cocher Activer la prise en charge des textures virtuelles.



Génération de niveaux de détail hiérarchiques (HLOD)

Les HLODs sont générés à l'aide de l'option Build HLODs qui se trouve dans la section World Partition du menu Build, ou en utilisant la commandlet World Partition HLODs Builder.



L'exécution de cette commandlet crée les acteurs HLOD pour vos cellules World Partition selon les paramètres de génération que vous avez spécifiés dans vos calques HLOD. Pour plus d'informations sur l'utilisation des niveaux hiérarchiques de détail (HLOD) dans World Partition et sur l'utilisation de la commandlet World Partition HLODs Builder.
Avatar de l’utilisateur
Colonel
Messages : 159
Inscription : 20 oct. 2022, 12:22

C'est super de pouvoir convertir ses anciens projets ! Quelqu'un a déjà essayé ? On gagne vraiment en performance sur une grande map ?
Avatar de l’utilisateur
Bender
Site Admin
Messages : 385
Inscription : 15 sept. 2022, 13:14

Depuis le temps que je devais tester, voilà c'est fait et effectivement c'est facile à mettre en place :
viewtopic.php?t=305

Pour ce qui est des perfs, ça n'a pas l'air de changer grand chose, faudra voir avec plus de recul.

Sinon ça fou un peu le bordel dans l'outliner parce que ça découpe les instances foliages en petits bouts.
Avatar de l’utilisateur
Poppy
Messages : 203
Inscription : 17 sept. 2022, 16:17

Bender a écrit : 27 janv. 2023, 16:56 Sinon ça fou un peu le bordel dans l'outliner parce que ça découpe les instances foliages en petits bouts.
Et oui, et plus tes cellules sont petites plus ça fait des petits bouts :D
Avatar de l’utilisateur
Elon
Messages : 250
Inscription : 21 oct. 2022, 12:43

Quand on prit l'habitude d'utiliser WP, c'est difficile de revenir en arrière.

Plus de levels et sub levels qui étaient pratiques pour bosser à plusieurs sur perforce, mais là c'est remplacé par un système de cellules qui est encore mieux, on peut bosser à plusieurs chacun sur une cellule, et la sauvegarde se fait par cellule.. donc plus pratique, plus léger sans compter les avantages sur les temps de chargements et le volume d'assets chargés.

Vraiment incontournable :ugeek:
Répondre