World Partition
Publié : 15 oct. 2022, 10:15
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.
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.