Présentation
Mass Entity est un framework conçu pour les calculs orientés données et disponible dans l'Unreal Engine. Il est divisé en plusieurs plug-ins qui prennent chacun en charge des fonctionnalités spécifiques du système.
Le plug-in Mass Gameplay dérive directement du plug-in Mass Entity et inclut des fonctionnalités pour la représentation dans le monde, la génération, les mécaniques de niveau de détail (LOD), la réplication et le StateTree.
Cette page décrit les sous-systèmes disponibles dans le plug-in MassGameplay. Pour en savoir plus sur MassEntity, consultez la rubrique Présentation de MassEntity.
Sous-systèmes
Mass Representation
Le sous-système Mass Representation permet de gérer les différents aspects visuels des entités de masse.
Pour chaque valeur de LOD représenté, le sous-système propose un choix entre quatre types de représentations :
Un acteur en haute résolution
Un acteur en basse résolution
Un maillage statique instancié (ISM)
Aucune représentation
Le maillage statique instancié (ISM) constitue la méthode la moins coûteuse pour représenter l'acteur. Il peut être déplacé et animé grâce à l'animation des vertex. Pour en savoir plus sur le processus d’animation des acteurs ISM, vous pouvez télécharger City Sample depuis Fab.
L'animation de maillage statique instancié est une fonctionnalité encore expérimentale dans le système MassGameplay et elle n'est pas encore entièrement compatible avec tous les cas d'utilisation.
Ce sous-système permet de gérer les transitions entre chaque type de représentation. Il fonctionne en relation directe avec le sous-système MassActorSpawner et les sous-systèmes MassLOD. Par ailleurs, ce sous-système permet de recycler et de regrouper automatiquement les acteurs générés.
Mass Spawner
Le sous-système Mass Spawner génère et gère les entités par le biais des objets MassSpawner et des appels procéduraux. Ce sous-système possède une instance de Registre de modèles Mass Entity qui stocke les informations sur les modèles d'entité disponibles.
Pour pouvoir utiliser ce sous-système, vous devez créer un acteur MassSpawner et le placer dans votre niveau. Vous pouvez spécifier le type d'acteur à faire apparaître en ajoutant une ressource de définition d’entité de masse, ainsi que l'endroit d'apparition de ces acteurs en ajoutant un générateur d'instance de distribution d’entité de masse.
Mass LOD
Le sous-système Mass LOD calcule le niveau de détail (LOD) nécessaire pour chaque entité de masse.
Le système peut produire quatre valeurs de LOD : haut, moyen, bas et désactivé. Pour chaque niveau de LOD, vous pouvez configurer les distances à partir desquelles le niveau s'applique ainsi que le nombre maximal d'entités par niveau.
Il y a trois systèmes clients de ce sous-système :
Mass (Representation/Visualization) LOD
MassSimulationLOD
MassReplicationLOD
MassLOD peut aussi calculer une valeur flottante d'ampleur de LOD allant de 0.0f (haut) à 3.0f (désactivé).
Mass (Representation/Visualization) LOD
Mass (Representation/Visualization) LOD est spécifiquement conçu pour gérer les LOD visuels. Il calcule non seulement les LOD en fonction des distances, mais aussi de leur visibilité. Vous pouvez également définir plusieurs distances de LOD en fonction de la présence ou de l'absence de l'entité dans le champ de vision de caméra.
Le système regroupe toutes les entités en différents tronçons : celles qui sont éliminées par la distance, celles qui sont éliminées par le champ de vision et celles qui sont visibles. Le graphique suivant représente les différents groupes :
Mass Simulation LOD
Mass Simulation LOD est une implémentation permettant d'équilibrer la charge de tous les calculs d'entités. Il regroupe toutes les entités en tronçons ayant le même niveau de LOD, ce qui est très utile lorsqu'on souhaite utiliser des filtres sur les requêtes. Il offre également une option pour créer une actualisation à fréquence variable pour tous les calculs.
Mass Replication LOD
Le sous-système Mass Replication LOD utilise le framework de LOD pour calculer la pertinence de chaque entité à des fins de réplication. Contrairement aux systèmes Mass (Representation/Visualization) LOD et Mass Simulation LOD, ce système calcule le LOD pour chaque entité et pour chaque client connecté (spectateur). Ce système permet d'optimiser la bande passante sur un réseau.
Mass Replication (expérimental)
Le sous-système Mass Replication réplique les entités sur le réseau selon un modèle client-serveur. Il exécute une réplication à sens unique depuis le serveur vers les clients.
Ce sous-système gère la pertinence et la fréquence d'actualisation des entités via le système Mass Replication LOD afin de limiter la consommation de bande passante.
Le sous-système Mass Replication est encore à l'état expérimental pour l'Unreal Engine 5.1. Ce système nécessite une implémentation en C++ pour répliquer les valeurs spéciales.
Mass StateTree
Le sous-système Mass StateTree permet d'intégrer le système StateTree à Mass Entity. Il permet de configurer des arbres d'états pour chaque entité et de les actualiser en fonction des signaux envoyés depuis les autres systèmes de MassEntity.
La logique de StateTree n'est utilisée que pour configurer ou régler les données pour les entités, afin d'exécuter le bon processeur pour les comportements spécifiques.
Mass Signal
Le sous-système Mass Signal permet d'envoyer un signal nommé afin d’indiquer à une entité qu'elle doit effectuer un traitement. À l'heure actuelle, ce sous-système est utilisé par le système Mass StateTree afin de l'activer lorsque des opérations de traitement sont nécessaires.
Le signal est similaire à un événement, sans qu'il soit nécessaire d'envoyer une charge utile à une entité. Comme le système MassEntity fonctionne principalement sur un modèle d'extraction d'information, ce sous-système est très utile quand vous avez besoin d'actualiser fréquemment un élément.
Mass Movement
Le sous-système Mass Movement permet de définir un modèle de mouvement simple pour les agents Mass. Les fragments et les processeurs sont configurés de façon à ce que les autres traits puissent directement modifier la vélocité ou la force. Ces valeurs sont combinées pour former une valeur finale de mouvement utilisée par les agents.
Par exemple, quand une direction est donnée à l'agent, le système peut définir la force de direction initiale, qui est ensuite modifiable par la méthode d'évitement afin d'éviter les collisions pendant le mouvement.
Mass SmartObject
Le sous-système Mass SmartObject permet d'intégrer le système SmartObject à Mass Entity. Il fournit les traits, fragments et processeurs requis pour exécuter des requêtes Smart Object et des comportements simples sur des agents représentés par des entités.