Concepts clés pourSimSpace Weaver - AWS SimSpace Weaver

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Concepts clés pourSimSpace Weaver

Une simulation ou un jeu est limité par l'ordinateur qui l'exécute. À mesure que la taille et la complexité de votre monde virtuel augmentent, les performances de traitement commencent à se dégrader. Les calculs prennent plus de temps, les systèmes sont à court de mémoire et les fréquences d'images des clients chutent. Pour les simulations qui ne nécessitent pas de performances en temps réel, cela peut être ennuyeux. Il peut également s'agir d'une situation critique pour l'entreprise dans laquelle l'augmentation des délais de traitement entraîne une augmentation des coûts. Si votre simulation ou votre jeu nécessite des performances en temps réel, la dégradation des performances est certainement un problème.

Une solution courante pour une simulation qui atteint une limite de performance consiste à simplifier la simulation. Les jeux en ligne qui comptent de nombreux utilisateurs résolvent souvent les problèmes de mise à l'échelle en créant des copies de leur monde virtuel sur différents serveurs et en répartissant les utilisateurs entre eux.

SimSpace Weaverrésout le problème de mise à l'échelle en divisant votre monde virtuel dans l'espace et en répartissant les éléments entre un cluster d'instances de calcul qui s'exécutent dans leAWS Cloud. Les instances de calcul fonctionnent ensemble pour traiter l'ensemble du monde de simulation en parallel. Votre monde de simulation apparaît comme un espace intégré unique pour tout ce qui s'y trouve et pour tous les clients qui s'y connectent. Il n'est plus nécessaire de simplifier une simulation en raison d'une limite de performances matérielles. Vous pouvez plutôt augmenter la capacité de calcul dans le cloud.

Fonctionnement d'SimSpace Weaver

Votre simulation consiste en un monde contenant des objets. Certains objets (tels que les personnes et les véhicules) se déplacent et font des choses. Les autres objets (tels que les arbres et les bâtiments) sont statiques. DansSimSpace Weaver, une entité est un objet de votre monde de simulation.

Vous définissez les limites de votre monde de simulation et vous le divisez en une grille. Au lieu de créer une logique de simulation qui fonctionne sur l'ensemble de la grille, vous créez une logique de simulation qui fonctionne sur une cellule de la grille. DansSimSpace Weaver, une application spatiale est un programme que vous écrivez qui implémente la logique de simulation pour une cellule de votre grille. Cela inclut la logique de toutes les entités de cette cellule. La zone de propriété d'une application spatiale est la cellule de la grille contrôlée par l'application spatiale.

Note

DansSimSpace Weaver, le terme « application » peut faire référence au code d'une application ou à une instance en cours d'exécution de ce code.

La carte du monde de simulation divisée en une grille bidimensionnelle
Votre monde de simulation divisé en une grille

Vous divisez votre monde de simulation en une grille. Chaque application spatiale implémente une logique de simulation pour une seule cellule de cette grille.

SimSpace Weaverexécute une instance du code de votre application spatiale pour chaque cellule de votre grille. Toutes les instances d'applications spatiales s'exécutent en parallel. Essentiellement,SimSpace Weaver divise votre simulation globale en plusieurs simulations plus petites. Chacune des plus petites simulations gère une partie du monde global de la simulation. SimSpace Weaverpeut distribuer et exécuter ces simulations de moindre envergure sur plusieurs instances Amazon Elastic Compute Cloud (Amazon EC2) (appelées workers) dans leAWS Cloud. Un seul collaborateur peut exécuter plusieurs applications spatiales.

Les entités peuvent se déplacer dans le monde de la simulation. Si une entité entre dans la zone de propriété d'une autre application spatiale (une autre cellule de la grille), le propriétaire de l'application spatiale de la nouvelle zone prend le contrôle de l'entité. Si votre simulation s'exécute sur plusieurs travailleurs, une entité peut passer du contrôle d'une application spatiale sur un travailleur à une application spatiale sur un autre travailleur. Lorsqu'une entité passe à un autre opérateur,SimSpace Weaver gère la communication réseau sous-jacente.

Abonnements

La vision du monde d'une application spatiale est sa propre propriété. Pour découvrir ce qui se passe dans une autre partie du monde de la simulation, l'application spatiale crée un abonnement. La zone d'abonnement est un sous-ensemble de la zone globale du monde de simulation. Une zone d'abonnement peut inclure des parties de plusieurs zones de propriété, y compris la zone de propriété propre à l'application spatiale. SimSpace Weaverinforme l'application spatiale de tous les événements d'entité (par exemple, entrée, sortie, création, mise à jour et suppression) qui se produisent dans la zone d'abonnement.

La grille mondiale avec une seule cellule observable
La vision du monde d'une application spatiale

La vision du monde d'une application spatiale est sa zone de propriété, qui correspond à une cellule de la grille mondiale.

La grille mondiale avec une cellule observable et une zone observable supplémentaire qui couvre une autre cellule et des parties des cellules environnantes
Vue d'une application spatiale avec une zone d'abonnement ajoutée

Une application spatiale utilise un abonnement pour découvrir ce qui se passe dans une autre partie du monde de la simulation. La zone d'abonnement peut contenir plusieurs cellules de grille et des parties de cellules.

Par exemple, une application qui simule des entités interagissant physiquement peut avoir besoin de connaître les entités situées juste au-delà des limites spatiales de sa zone de propriété. Pour ce faire, l'application peut s'abonner à des zones situées en bordure de sa zone de propriété. Après avoir créé l'abonnement, l'application reçoit des notifications concernant les événements des entités dans ces zones et peut lire les entités. Un autre exemple est un véhicule autonome qui doit voir toutes les entités à 200 mètres devant lui, quelle que soit l'application propriétaire de la zone. L'application pour le véhicule peut créer un abonnement avec un filtre sous la forme d'un cadre de délimitation aligné sur l'axe(AABB) qui couvre la zone visible.

Vous pouvez créer une logique de simulation qui n'est pas responsable de la gestion des aspects spatiaux de votre simulation. Une application personnalisée est un programme exécutable qui s'exécute sur un seul travailleur. Vous contrôlez le cycle de vie (démarrage et arrêt) d'une application personnalisée. Les clients de simulation peuvent se connecter à une application personnalisée pour visualiser la simulation ou interagir avec elle. Vous pouvez également créer une application de service qui s'exécute sur chaque collaborateur. SimSpace Weaverdémarre une instance de votre application de service sur chaque travailleur qui exécute votre simulation.

Les applications personnalisées et les applications de service créent des abonnements pour en savoir plus sur les événements des entités et lire les entités. Ces applications ne disposent pas de zones de propriété car elles ne sont pas spatiales. L'utilisation d'un abonnement est le seul moyen pour eux de découvrir ce qui se passe dans le monde de la simulation.

Comment utilisez-vousSimSpace Weaver

Lorsque vous l'utilisezSimSpace Weaver, voici les principales étapes à suivre :

  1. Écrivez et créezC++ des applications qui intègrent le SDK deSimSpace Weaver l'application.

    1. Vos applications effectuent des appels d'API pour interagir avec l'état de la simulation.

  2. Créez des clients qui visualisent et interagissent avec votre simulation via certaines applications.

  3. Configurez votre simulation dans un fichier texte.

  4. Téléchargez vos packages d'applications et votre configuration de simulation sur le service.

  5. Commencez votre simulation.

  6. Démarrez et arrêtez vos applications personnalisées selon vos besoins.

  7. Connect les clients à vos applications personnalisées ou de service pour consulter la simulation ou interagir avec elle.

  8. Consultez vos journaux de simulation dans AmazonCloudWatch Logs.

  9. Arrêtez votre simulation.

  10. Nettoyez votre simulation.

Schéma de simulation

Le schéma de simulation (ou schéma) est unYAML fichier texte au format qui contient des informations de configuration pour votre simulation. SimSpace Weaverutilise votre schéma lorsqu'il lance une simulation. Le package distribuable du SDK de l'SimSpace Weaverapplication inclut un schéma pour un exemple de projet. Vous pouvez l'utiliser comme point de départ pour votre propre schéma. Pour plus d'informations sur le schéma de simulation, consultezSimSpace Weaver référence du schéma de simulation.

Travailleurs et unités de ressources

Un worker est une instance Amazon EC2 qui exécute votre simulation. Vous spécifiez un type de travailleur dans votre schéma de simulation. SimSpace Weavermappe votre type de travailleur à un type d'instance Amazon EC2 spécifique utilisé par le service. SimSpace Weaverdémarre et arrête vos collaborateurs à votre place et gère les communications réseau entre les travailleurs. SimSpace Weaverlance un ensemble de travailleurs pour chaque simulation. Des simulations différentes font appel à des travailleurs différents.

La capacité de calcul (processeur et mémoire) disponible sur un opérateur est divisée en unités logiques appelées unités de ressources de calcul (ou unités de ressources). Une unité de ressource représente une quantité fixe de capacité de processeur et de mémoire.

Note

Nous avons précédemment fait référence à une unité de ressources de calcul sous le nom de slot. Vous pouvez toujours voir ce terme précédent dans notre documentation.

Horloge de simulation

Chaque simulation possède sa propre horloge. Vous pouvez démarrer et arrêter l'horloge à l'aide d'appels d'API ou de laSimSpace Weaver console. La simulation est mise à jour uniquement lorsque l'horloge tourne. Toutes les opérations de la simulation se déroulent dans des segments temporels appelés ticks. L'horloge annonce l'heure de début de chaque coche à tous les travailleurs.

La fréquence d'horloge (ou fréquence de tic-tac) est le nombre de clics par seconde (hertz ou Hz) que l'horloge annonce. La fréquence d'horloge souhaitée pour une simulation fait partie du schéma de simulation. Toutes les opérations relatives à une coche doivent être terminées avant que la prochaine coche ne commence. Pour cette raison, la fréquence d'horloge effective peut être inférieure à la fréquence d'horloge souhaitée. La fréquence d'horloge effective ne sera pas supérieure à la fréquence d'horloge souhaitée.

Partitions

Une partition est un segment de la mémoire partagée d'un travailleur. Chaque partition contient une partie des données d'état de la simulation.

Une partition pour une application spatiale (également appelée partition d'application spatiale ou partition spatiale) contient toutes les entités de la zone de propriété d'une application spatiale. SimSpace Weaverplace les entités dans des partitions spatiales d'applications en fonction de l'emplacement spatial de chaque entité. Cela signifie qu'ilSimSpace Weaver essaie de placer des entités spatialement proches les unes des autres sur le même travailleur. Cela permet de minimiser la quantité de connaissances dont une application a besoin sur les entités qui ne lui appartiennent pas pour simuler les entités qu'elle possède.

State Fabric

Le State Fabric est le système de mémoire partagée (la collection de toutes les partitions) sur tous les travailleurs. Il contient toutes les données d'état pour votre simulation.

La State Fabric utilise un format binaire personnalisé qui décrit une entité sous la forme d'un ensemble de données initiales et d'un journal de mise à jour, pour chaque champ de données de cette entité. Avec ce format, vous pouvez accéder à l'état d'une entité à un moment antérieur de la simulation et le mapper à un point dans le monde réel. La taille de la mémoire tampon est limitée et il n'est pas possible de remonter dans le temps au-delà de ce qu'elle contient. SimSpace Weaverutilise un pointeur vers le décalage actuel dans le journal de mise à jour pour chaque champ, et met à jour un pointeur dans le cadre de la mise à jour du champ. SimSpace Weavermappe ces journaux de mise à jour dans l'espace de traitement d'une application à l'aide de la mémoire partagée.

Ce format d'objet entraîne de faibles frais généraux et aucun coût de sérialisation. SimSpace Weaverutilise également ce format d'objet pour analyser et identifier les champs d'index (tels que la position de l'entité).

Entités

Une entité est le bloc de données le plus petit de votre simulation. Les exemples d'entités incluent des acteurs (tels que des personnes et des véhicules) et des objets statiques (tels que des bâtiments et des obstacles). Les entités possèdent des propriétés (telles que la position et l'orientation) que vous pouvez stocker en tant que données persistantesSimSpace Weaver. Les entités existent au sein des partitions.

Applications

UneSimSpace Weaver application est un logiciel que vous écrivez et qui contient une logique personnalisée qui exécute chaque test de simulation. Le but de la plupart des applications est de mettre à jour les entités au fur et à mesure de l'exécution de la simulation. Vos applications appellent les API du SDK de l'SimSpace Weaverapplication pour effectuer des actions (telles que la lecture et la mise à jour) sur les entités de votre simulation.

Vous empaquetez vos applications et les ressources requises (telles que les bibliothèques) sous forme de fichiers .zip et vous les importez dansSimSpace Weaver. Une application s'exécute dans un conteneur Docker sur un travailleur. SimSpace Weaverattribue à chaque application un nombre fixe d'unités de ressources au travailleur.

SimSpace Weaverattribue la propriété d'une (et d'une seule) partition à chaque application. Une application et sa partition se trouvent sur le même serveur. Chaque partition n'a qu'un seul propriétaire d'application. Une application peut créer, lire, mettre à jour et supprimer des entités dans sa partition. Une application possède toutes les entités de sa partition.

Il existe trois types d'applications : les applications spatiales, les applications personnalisées et les applications de service. Ils diffèrent selon les cas d'utilisation et les cycles de vie.

Note

DansSimSpace Weaver, le terme « application » peut faire référence au code d'une application ou à une instance en cours d'exécution de ce code.

Applications spatiales

Les applications spatiales mettent à jour l'état des entités qui existent spatialement dans votre simulation. Par exemple, vous pouvez définir unePhysics application chargée de déplacer et de faire entrer en collision des entités pour chaque tic en fonction de leur vitesse, de leur forme et de leur taille. Dans ce cas,SimSpace Weaver exécute plusieurs instances de l'Physicsapplication en parallel pour gérer la taille de la charge de travail.

SimSpace Weavergère le cycle de vie des applications spatiales. Vous spécifiez une disposition des partitions spatiales de l'application dans votre schéma de simulation. Lorsque vous lancez votre simulation, une application spatialeSimSpace Weaver démarre pour chaque partition d'application spatiale. Lorsque vous arrêtez la simulationSimSpace Weaver, vos applications spatiales s'arrêtent.

D'autres types d'applications peuvent créer des entités, mais seules les applications spatiales peuvent mettre à jour des entités. Les autres types d'applications doivent transférer les entités qu'ils créent vers un domaine spatial. SimSpace Weaverutilise l'emplacement spatial d'une entité pour déplacer l'entité vers la partition d'une application spatiale. La propriété de l'entité est alors transférée à l'application spatiale.

Apps personnalisées

Vous utilisez des applications personnalisées pour interagir avec votre simulation. Une application personnalisée lit les données des entités à l'aide d'abonnements. Une application personnalisée peut créer des entités. Toutefois, l'application doit transférer une entité vers une application spatiale pour inclure l'entité dans la simulation et la mettre à jour. Vous pouvezSimSpace Weaver attribuer un point de terminaison réseau à une application personnalisée. Les clients de simulation peuvent se connecter au point de terminaison du réseau pour interagir avec la simulation. Vous définissez vos applications personnalisées dans votre schéma de simulation, mais vous êtes responsable de leur démarrage et de leur arrêt (à l'aide d'appels d'SimSpace WeaverAPI). Une fois que vous avez démarré une instance d'application personnalisée sur un travailleur, l'instanceSimSpace Weaver n'est pas transférée à un autre collaborateur.

Applications de service

Vous pouvez utiliser une application de service lorsque vous avez besoin d'un processus en lecture seule s'exécutant sur chaque collaborateur. Par exemple, vous pouvez utiliser une application de service si vous avez une simulation de grande envergure et que vous avez besoin d'un client de visualisation qui parcourt la simulation et affiche uniquement les entités visibles pour l'utilisateur. Dans ce cas, une seule instance d'application personnalisée ne peut pas traiter toutes les entités de la simulation. Vous pouvez configurer une application de service pour qu'elle soit lancée sur chaque collaborateur. Chacune de ces applications de service peut ensuite filtrer les entités de son collaborateur assigné et n'envoyer que les entités pertinentes à ses clients connectés. Votre client de visualisation peut ensuite se connecter à différentes applications de service lorsqu'il se déplace dans l'espace de simulation. Vous configurez les applications de service dans votre schéma de simulation. SimSpace Weaverdémarre et arrête vos applications de service pour vous.

Résumé de l'application

Le tableau suivant récapitule les caractéristiques des différents types d'SimSpace Weaverapplications.

  Applications spatiales Apps personnalisées Applications de service
Lire les entités

Oui

Oui

Oui

Mettre à jour les entités

Oui

Non

Non

Créer des entités

Oui

Oui*

Oui*

Cycle de vie

Géré (leSimSpace Weaver contrôle.)

Non géré (vous le contrôlez.)

Géré (leSimSpace Weaver contrôle.)

Méthode de démarrage

SimSpace Weaverdémarre une instance d'application pour chaque partition spatiale, comme indiqué dans votre schéma.

Vous démarrez chaque instance d'application.

SimSpace Weaverdémarre une ou plusieurs instances d'application sur chaque worker, comme indiqué dans votre schéma.

Les clients peuvent se connecter

Non

Oui

Oui

* Lorsqu'une application ou une application de service personnalisée crée une entité, l'application doit transférer la propriété de l'entité à une application spatiale afin que celle-ci puisse mettre à jour l'état de l'entité.

Domains

UnSimSpace Weaver domaine est un ensemble d'instances d'application qui exécutent le même code d'application exécutable et disposent des mêmes options et commandes de lancement. Nous désignons les domaines en fonction des types d'applications qu'ils contiennent : domaines spatiaux, domaines personnalisés et domaines de service. Vous configurez vos applications au sein de domaines.

Abonnements et réplication

Une application crée un abonnement à une région spatiale pour connaître les événements des entités (par exemple, entrée, sortie, création, mise à jour et suppression) dans cette région. Une application traite les événements d'entité liés à un abonnement avant de lire les données des entités se trouvant dans des partitions qui ne lui appartiennent pas.

Une partition peut exister sur le même worker que l'application (c'est ce qu'on appelle une partition locale), mais une autre application peut être propriétaire de la partition. Une partition peut également exister sur un autre worker (c'est ce qu'on appelle une partition distante). Si l'abonnement concerne une partition distante, le travailleur crée une copie locale de la partition distante par le biais d'un processus appelé réplication. Le travailleur lit ensuite la copie locale (partition distante répliquée). Si une autre application du travailleur doit lire à partir de cette partition en cochant la même case, le travailleur lit la même copie locale.