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.
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 manquent 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 ne peut être que gênant. 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 comptant 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 Weaver ré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 exécutées dans le AWS Cloud. Les instances de calcul fonctionnent ensemble pour traiter l'ensemble du monde de simulation en parallèle. Votre monde de simulation apparaît comme un espace intégré unique à tout ce qu'il contient et à tous les clients qui s'y connectent. Il n'est plus nécessaire de simplifier une simulation en raison d'une limite de performance matérielle. Vous pouvez plutôt ajouter de la capacité de calcul dans le cloud.
Rubriques
Comment SimSpace Weaver fonctionne
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. Dans SimSpace Weaver, une entité est un objet dans 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. Dans SimSpace Weaver, une application spatiale est un programme que vous écrivez et 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 grille contrôlée par l'application spatiale.
Note
Dans SimSpace 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.
![]() Votre monde de simulation divisé en une grilleVous 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 Weaver exé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 parallèle. Il SimSpace Weaver divise essentiellement votre simulation globale en plusieurs simulations plus petites. Chacune des plus petites simulations gère une partie du monde global de la simulation. SimSpace Weaver peut distribuer et exécuter ces petites simulations sur plusieurs instances Amazon Elastic Compute Cloud (Amazon EC2) (appelées workers) dans le AWS Cloud. Un seul utilisateur 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é se déplace vers un autre travailleur, SimSpace Weaver gère la communication réseau sous-jacente.
Abonnements
La vision du monde d'une application spatiale est son propre domaine de 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 propre zone de propriété de l'application spatiale. SimSpace Weaver informe 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 vision du monde d'une application spatialeLa vision du monde d'une application spatiale correspond à sa zone de propriété, qui est une cellule de la grille mondiale. |
![]() Vue d'une application spatiale avec une zone d'abonnement ajoutéeUne 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 relatifs aux 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 servant de cadre de délimitation aligné sur l'axe (AABB) qui couvre la zone visible.
Vous pouvez créer une logique de simulation qui ne soit pas chargée de gérer les aspects spatiaux de votre simulation. Une application personnalisée est un programme exécutable qui s'exécute sur un seul outil de travail. 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 ou interagir avec la simulation. Vous pouvez également créer une application de service qui s'exécute sur tous les travailleurs. SimSpace Weaver démarre une instance de votre application de service sur chaque collaborateur 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-vous SimSpace Weaver
Lorsque vous l'utilisez SimSpace Weaver, voici les principales étapes que vous devez suivre :
Écrivez et construisez C++ applications qui intègrent le SDK de SimSpace Weaver l'application.
Vos applications effectuent des appels d'API pour interagir avec l'état de la simulation.
Écrivez des clients qui visualisent et interagissent avec votre simulation via certaines applications.
Configurez votre simulation dans un fichier texte.
Téléchargez vos packages d'applications et votre configuration de simulation sur le service.
Lancez votre simulation.
Démarrez et arrêtez vos applications personnalisées selon vos besoins.
Connectez les clients à vos applications personnalisées ou de service pour visualiser ou interagir avec la simulation.
Consultez vos journaux de simulation dans Amazon CloudWatch Logs.
Arrêtez votre simulation.
Nettoyez votre simulation.
Schéma de simulation
Le schéma (ou schéma) de simulation est YAML-fichier texte formaté contenant les informations de configuration pour votre simulation. SimSpace Weaver utilise votre schéma lorsqu'il lance une simulation. Le package distribuable du SDK de l' SimSpace Weaver application 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 EC2 instance Amazon qui exécute votre simulation. Vous spécifiez un type de travailleur dans votre schéma de simulation. SimSpace Weaver fait correspondre votre type de travailleur à un type d' EC2 instance Amazon spécifique utilisé par le service. SimSpace Weaver démarre et arrête vos travailleurs pour vous, et gère les communications réseau entre les travailleurs. SimSpace Weaver lance un ensemble de travailleurs pour chaque simulation. Les différentes simulations font appel à des travailleurs différents.
La capacité de calcul (processeur et mémoire) disponible sur un travailleur 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 désigné une unité de ressource de calcul par le terme « slot ». Vous pouvez toujours voir ce terme précédent dans notre documentation.
Horloge de simulation
Chaque simulation possède sa propre horloge. Vous démarrez et arrêtez l'horloge à l'aide d'appels d'API ou de la SimSpace 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 ticks par seconde (hertz ou Hz) annoncés par l'horloge. 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 le début de la prochaine coche. 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 simulation.
La partition d'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 Weaver place les entités dans des partitions spatiales d'applications en fonction de l'emplacement spatial de chaque entité. Cela signifie qu'il SimSpace Weaver essaie de placer des entités spatialement proches les unes des autres sur le même travailleur. Cela minimise la quantité de connaissances dont une application a besoin sur les entités qu'elle ne possède 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.
Le 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 la mapper à un point en temps 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 Weaver utilise un pointeur vers le décalage actuel dans le journal des mises à jour pour chaque champ, et met à jour un pointeur dans le cadre d'une mise à jour de champ. SimSpace Weaver mappe 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 permet de réduire les frais généraux et d'éviter les coûts de sérialisation. SimSpace Weaver utilise é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 plus petit bloc de données de votre simulation. Les exemples d'entités incluent les acteurs (tels que les personnes et les véhicules) et les objets statiques (tels que les bâtiments et les obstacles). Les entités possèdent des propriétés (telles que la position et l'orientation) dans lesquelles vous pouvez stocker des données persistantes SimSpace Weaver. Les entités existent au sein des partitions.
Applications
Une SimSpace 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 que la simulation s'exécute. Vos applications font appel APIs au SDK de l' SimSpace Weaver application pour effectuer des actions (telles que la lecture et la mise à jour) sur les entités de votre simulation.
Vous regroupez vos applications et les ressources dont elles ont besoin (telles que les bibliothèques) sous forme de fichiers .zip et vous les chargez dans SimSpace Weaver. Une application s'exécute dans un conteneur Docker sur un worker. SimSpace Weaver alloue à chaque application un nombre fixe d'unités de ressources au travailleur.
SimSpace Weaver attribue la propriété d'une (et une seule) partition à chaque application. Une application et sa partition se trouvent sur le même worker. 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
Dans SimSpace 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 dans l'espace dans votre simulation. Par exemple, vous pouvez définir une Physics
application chargée de déplacer et de faire entrer en collision des entités à chaque tic-tac en fonction de leur vélocité, de leur forme et de leur taille. Dans ce cas, SimSpace Weaver
exécute plusieurs instances de l'Physics
application en parallèle pour gérer la taille de la charge de travail.
SimSpace Weaver gère le cycle de vie des applications spatiales. Vous spécifiez une disposition des partitions spatiales des applications dans votre schéma de simulation. Lorsque vous lancez votre simulation, SimSpace Weaver démarre une application spatiale pour chaque partition d'application spatiale. Lorsque vous arrêtez la simulation, SimSpace Weaver vos applications spatiales sont arrêtées.
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 Weaver utilise l'emplacement spatial d'une entité pour déplacer l'entité vers la partition d'une application spatiale. Cela transfère la propriété de l'entité à 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 l'inclure dans la simulation et la mettre à jour. Vous pouvez avoir SimSpace Weaver attribué 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 il vous incombe de les démarrer et de les arrêter (à l'aide d'appels d' SimSpace Weaver API). Une fois que vous avez démarré une instance d'application personnalisée sur un worker, l'instance SimSpace Weaver n'est pas transférée à un autre worker.
Applications de service
Vous pouvez utiliser une application de service lorsque vous avez besoin d'un processus en lecture seule exécuté sur chaque travailleur. 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 n'affiche que les entités visibles à 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 travailleur. Chacune de ces applications de service peut ensuite filtrer les entités sur le travailleur qui lui est 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 Weaver dé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 Weaver applications.
Applications spatiales | Apps personnalisées | Applications de service | |
---|---|---|---|
Lire les entités |
Oui |
Oui |
Oui |
Mettre à jour les entités |
Oui |
Non |
Non |
Création d'entités |
Oui |
Oui* |
Oui* |
Cycle de vie |
Géré (le SimSpace Weaver contrôle) |
Non géré (c'est vous qui le contrôlez.) |
Géré (le SimSpace Weaver contrôle) |
Méthode de démarrage |
SimSpace Weaver démarre une instance d'application pour chaque partition spatiale, comme indiqué dans votre schéma. |
Vous démarrez chaque instance d'application. |
SimSpace Weaver dé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é.
Domaines
Un SimSpace Weaver domaine est un ensemble d'instances d'application qui exécutent le même code d'application exécutable et possèdent les mêmes options et commandes de lancement. Nous faisons référence aux 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 relatifs aux 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 situées dans des partitions qui ne lui appartiennent pas.
Une partition peut exister sur le même outil de travail 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 serveur de travail (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 programme de travail doit lire à partir de cette partition en même temps, le programme de travail lit la même copie locale.