Die wichtigsten Konzepte fürSimSpace Weaver - AWS SimSpace Weaver

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Die wichtigsten Konzepte fürSimSpace Weaver

Eine Simulation oder ein Spiel wird durch den Computer begrenzt, auf dem sie ausgeführt wird. Wenn Sie die Größe und Komplexität Ihrer virtuellen Welt erhöhen, beginnt sich die Verarbeitungsleistung zu verschlechtern. Berechnungen dauern länger, den Systemen geht der Arbeitsspeicher aus und die Client-Frameraten sinken. Für Simulationen, die keine Echtzeitleistung benötigen, kann dies nur nervig sein. Oder es könnte sich um eine geschäftskritische Situation handeln, in der erhöhte Verarbeitungsverzögerungen zu erhöhten Kosten führen. Wenn Ihre Simulation oder Ihr Spiel Leistung in Echtzeit benötigt, ist eine Leistungsminderung definitiv ein Problem.

Eine gängige Lösung für eine Simulation, die eine Leistungsgrenze erreicht, besteht darin, die Simulation zu vereinfachen. Online-Spiele mit vielen Benutzern lösen oft Skalierungsprobleme, indem sie Kopien ihrer virtuellen Welt auf verschiedenen Servern erstellen und die Benutzer auf diese verteilen.

SimSpace Weaverlöst das Skalierungsproblem, indem Ihre virtuelle Welt räumlich aufgeteilt und die Teile auf einen Cluster von Recheninstanzen verteilt werden, die in der ausgeführtAWS Cloud werden. Die Recheninstanzen arbeiten zusammen, um die gesamte Simulationswelt parallel zu verarbeiten. Ihre Simulationswelt erscheint als ein einziger integrierter Raum für alles darin und für alle Clients, die sich mit ihr verbinden. Sie müssen eine Simulation nicht mehr aufgrund einer Hardwareleistungsgrenze vereinfachen. Sie können stattdessen mehr Rechenkapazität in der Cloud hinzufügen.

Funktionsweise von SimSpace Weaver

Ihre Simulation besteht aus einer Welt mit Objekten darin. Einige der Objekte (wie Personen und Fahrzeuge) bewegen sich und tun Dinge. Andere Objekte (wie Bäume und Gebäude) sind statisch. InSimSpace Weaver ist eine Entität ein Objekt in Ihrer Simulationswelt.

Sie definieren die Grenzen Ihrer Simulationswelt und unterteilen sie in ein Raster. Anstatt Simulationslogik zu erstellen, die auf dem gesamten Raster funktioniert, erstellen Sie Simulationslogik, die auf einer Zelle des Rasters arbeitet. InSimSpace Weaver ist eine räumliche App ein Programm, das Sie schreiben und das die Simulationslogik für eine Zelle Ihres Rasters implementiert. Dies beinhaltet die Logik für alle Entitäten in dieser Zelle. Der Besitzbereich einer räumlichen App ist die Rasterzelle, die von der räumlichen App gesteuert wird.

Anmerkung

InSimSpace Weaver kann sich der Begriff „App“ auf den Code einer App oder eine laufende Instanz dieses Codes beziehen.

Die Karte der Simulationswelt, aufgeteilt in ein 2-dimensionales Gitter
Deine Simulationswelt ist in ein Raster unterteilt

Sie unterteilen Ihre Simulationswelt in ein Raster. Jede räumliche App implementiert Simulationslogik für eine einzelne Zelle in diesem Raster.

SimSpace Weaverführt eine Instanz Ihres räumlichen App-Codes für jede Zelle Ihres Rasters aus. Alle Spatial-App-Instanzen werden parallel ausgeführt. SimSpace WeaverUnterteilt Ihre Gesamtsimulation im Wesentlichen in mehrere kleinere Simulationen. Jede der kleineren Simulationen behandelt einen Teil der gesamten Simulationswelt. SimSpace Weaverkann diese kleineren Simulationen auf mehrere Amazon Elastic Compute Cloud (Amazon EC2) -Instances (Amazon EC2) -Instances (Amazon EC2) -Instances (Amazon EC2) -Instances (Amazon EC2) -Instances (AWS Cloud Ein einzelner Mitarbeiter kann mehrere räumliche Apps ausführen.

Entitäten können sich durch die Simulationswelt bewegen. Wenn eine Entität den Besitzbereich einer anderen räumlichen App betritt (eine weitere Zelle im Raster), übernimmt der Besitzer der räumlichen App des neuen Bereichs die Kontrolle über die Entität. Wenn Ihre Simulation auf mehreren Workern ausgeführt wird, könnte eine Entität von der Steuerung einer räumlichen App auf einem Worker zu einer räumlichen App auf einem anderen Worker wechseln. Wenn eine Entität zu einem anderen Worker wechselt,SimSpace Weaver kümmert sie sich um die zugrunde liegende Netzwerkkommunikation.

Subscriptions (Abonnements)

Die Sicht einer räumlichen App auf die Welt ist ihr eigener Besitzbereich. Um herauszufinden, was in einem anderen Teil der Simulationswelt passiert, erstellt die räumliche App ein Abonnement. Der Abonnementbereich ist ein Teilbereich des gesamten Bereichs Simulation World. Ein Abonnementbereich kann Teile mehrerer Eigentumsbereiche umfassen, einschließlich des eigenen Besitzbereichs der räumlichen App. SimSpace Weaverbenachrichtigt die Spatial-App über alle Entitätsereignisse (z. B. Eingabe, Verlassen, Erstellen, Aktualisieren und Löschen), die innerhalb des Abonnementbereichs auftreten.

Das Weltnetz mit nur einer beobachtbaren Zelle
Die Sicht einer räumlichen App auf die Welt

Die Sicht einer räumlichen App auf die Welt ist ihr Besitzbereich, der eine Zelle im Weltraster darstellt.

Das Weltraster mit einer beobachtbaren Zelle und einem zusätzlichen beobachtbaren Bereich, der sich über eine andere Zelle und Teile der umliegenden Zellen erstreckt
Ansicht einer räumlichen App mit einem zusätzlichen Abonnementbereich

Eine räumliche App verwendet ein Abonnement, um herauszufinden, was in einem anderen Teil der Simulationswelt passiert. Der Abonnementbereich kann mehrere Rasterzellen und Zellenteile enthalten.

Beispielsweise benötigt eine App, die physisch interagierende Entitäten simuliert, möglicherweise Informationen über Entitäten, die sich knapp außerhalb der räumlichen Grenzen ihres Eigentumsbereichs befinden. Um dies zu erreichen, kann die App Bereiche abonnieren, die an ihr Eigentumsgebiet grenzen. Nach dem Erstellen des Abonnements erhält die App Benachrichtigungen über Entitätsereignisse in diesen Bereichen und kann die Entitäten lesen. Ein anderes Beispiel ist ein autonomes Fahrzeug, das alle Einheiten sehen muss, die sich 200 Meter vor ihm befinden, unabhängig davon, welcher App das Gebiet gehört. Die App für das Fahrzeug kann ein Abonnement mit einem Filter als achsenbündiger Begrenzungsrahmen erstellen(AABB), der den sichtbaren Bereich abdeckt.

Sie können Simulationslogik erstellen, die nicht für die Verwaltung der räumlichen Aspekte Ihrer Simulation verantwortlich ist. Eine benutzerdefinierte App ist ein ausführbares Programm, das auf einem einzelnen Worker ausgeführt wird. Sie kontrollieren den Lebenszyklus (Start und Stopp) einer benutzerdefinierten App. Simulationsclients können eine Verbindung zu einer benutzerdefinierten App herstellen, um die Simulation anzusehen oder mit ihr zu interagieren. Sie können auch eine Service-App erstellen, die auf jedem Worker ausgeführt wird. SimSpace Weaverstartet eine Instanz Ihrer Service-App auf jedem Worker, der Ihre Simulation ausführt.

Benutzerdefinierte Apps und Service-Apps erstellen Abonnements, um mehr über Entitätsereignisse zu erfahren und Entitäten zu lesen. Diese Apps haben keine Eigentumsbereiche, da sie nicht räumlich sind. Nur mit einem Abonnement können sie herausfinden, was in der Simulationswelt passiert.

Wie benutzt duSimSpace Weaver

Wenn Sie es verwendenSimSpace Weaver, sind dies die wichtigsten Schritte, die Sie befolgen:

  1. Schreiben und erstellen SieC++ Apps, die dasSimSpace Weaver App-SDK integrieren.

    1. Ihre Apps führen API-Aufrufe durch, um mit dem Simulationsstatus zu interagieren.

  2. Schreiben Sie Kunden, die Ihre Simulation über einige Apps ansehen und mit ihr interagieren.

  3. Konfigurieren Sie Ihre Simulation in einer Textdatei.

  4. Laden Sie Ihre App-Pakete und die Simulationskonfiguration in den Dienst hoch.

  5. Starte deine Simulation.

  6. Starten und beenden Sie Ihre benutzerdefinierten Apps nach Bedarf.

  7. Connect Sie Kunden mit Ihren benutzerdefinierten Apps oder Service-Apps, um die Simulation anzusehen oder mit ihr zu interagieren.

  8. Überprüfen Sie Ihre Simulationsprotokolle in AmazonCloudWatch Logs.

  9. Stoppen Sie Ihre Simulation.

  10. Bereinigen der Simulation.

Simulationsschema

Das Simulationsschema (oder Schema) ist eineYAML -formatierte Textdatei, die Konfigurationsinformationen für Ihre Simulation enthält. SimSpace Weaververwendet Ihr Schema, wenn es eine Simulation startet. Das verteilbareSimSpace Weaver App-SDK-Paket enthält ein Schema für ein Beispielprojekt. Sie können dies als Ausgangspunkt für Ihr eigenes Schema verwenden. Weitere Informationen über das Simulationsschema finden Sie unterSimSpace Weaver Referenz zum Simulationsschema.

Arbeiter und Ressourceneinheiten

Ein Worker ist eine Amazon EC2 EC2-Instance, die Ihre Simulation ausführt. Sie geben in Ihrem Simulationsschema einen Workertyp an. SimSpace Weaverordnet Ihren Worker-Typ einem bestimmten Amazon EC2 EC2-Instance-Typ zu, den der Service verwendet. SimSpace Weaverstartet und stoppt Ihre Worker für Sie und verwaltet die Netzwerkkommunikation zwischen den Workern. SimSpace Weaverstartet für jede Simulation eine Reihe von Workern. Verschiedene Simulationen verwenden unterschiedliche Arbeiter.

Die verfügbare Rechenkapazität (Prozessor und Speicher) eines Workers ist in logische Einheiten unterteilt, die als Rechenressourceneinheiten (oder Ressourceneinheiten) bezeichnet werden. Eine Ressourceneinheit steht für eine feste Menge an Prozessor- und Speicherkapazität.

Anmerkung

Wir haben eine Rechenressourceneinheit zuvor als Slot bezeichnet. Möglicherweise finden Sie diesen vorherigen Begriff immer noch in unserer Dokumentation.

Simulationsuhr

Jede Simulation hat ihre eigene Uhr. Sie starten und stoppen die Uhr mithilfe von API-Aufrufen oder derSimSpace Weaver Konsole. Die Simulation wird nur aktualisiert, wenn die Uhr läuft. Alle Operationen in der Simulation finden innerhalb von Zeitabschnitten statt, die als Zecken bezeichnet werden. Die Uhr kündigt allen Arbeitern die Startzeit jeder Zecke an.

Die Taktrate (oder Tickrate) ist die Anzahl der Ticks pro Sekunde (Hertz oder Hz), die die Uhr ankündigt. Die gewünschte Taktrate für eine Simulation ist Teil des Simulationsschemas. Alle Operationen für einen Tick müssen abgeschlossen sein, bevor der nächste Tick beginnt. Aus diesem Grund kann die effektive Taktrate niedriger als die gewünschte Taktrate sein. Die effektive Taktrate wird nicht höher als die gewünschte Taktrate sein.

Partitionen

Eine Partition ist ein Segment des gemeinsam genutzten Speichers auf einem Worker. Jede Partition enthält einen Teil der Simulationszustandsdaten.

Eine Partition für eine räumliche App (auch als räumliche App-Partition oder räumliche Partition bezeichnet) enthält alle Entitäten im Besitzbereich einer räumlichen App. SimSpace Weaverplatziert Entitäten auf der Grundlage der räumlichen Position jeder Entität in räumliche App-Partitionen. Das bedeutet, dassSimSpace Weaver versucht wird, Entitäten, die sich räumlich nahe beieinander befinden, auf demselben Worker zu platzieren. Dadurch wird die Menge an Wissen minimiert, die eine App von Entitäten benötigt, die sie nicht besitzt, um die Entitäten zu simulieren, die ihr gehören.

Bundesstaat Fabric

Die State Fabric ist das System des gemeinsamen Speichers (die Sammlung aller Partitionen) auf allen Workern. Es enthält alle Zustandsdaten für Ihre Simulation.

Die State Fabric verwendet ein benutzerdefiniertes Binärformat, das eine Entität als Satz von Anfangsdaten und ein Aktualisierungsprotokoll für jedes Datenfeld dieser Entität beschreibt. Mit diesem Format können Sie auf den Zustand einer Entität zu einem früheren Zeitpunkt in der Simulationszeit zugreifen und ihn einem Punkt in Echtzeit zuordnen. Der Puffer hat eine endliche Größe, und es ist nicht möglich, die Zeit über das hinaus zurückzudrehen, was im Puffer enthalten ist. SimSpace Weaververwendet für jedes Feld einen Zeiger auf den aktuellen Offset im Aktualisierungsprotokoll und aktualisiert einen Zeiger im Rahmen einer Feldaktualisierung. SimSpace Weaverordnet diese Aktualisierungsprotokolle mithilfe von Shared Memory dem Prozessbereich einer App zu.

Dieses Objektformat hat einen geringen Aufwand und keine Serialisierungskosten. SimSpace Weaververwendet dieses Objektformat auch, um Indexfelder zu analysieren und zu identifizieren (z. B. die Entitätsposition).

Entitäten

Eine Entitäten ist der kleinste Datenbaustein in Ihrer Simulation. Beispiele für Entitäten sind Akteure (wie Personen und Fahrzeuge) und statische Objekte (wie Gebäude und Hindernisse). Entitäten haben Eigenschaften (wie Position und Orientierung), in denen Sie als persistente Daten speichern könnenSimSpace Weaver. Entitäten existieren innerhalb von Partitionen.

Apps

EineSimSpace Weaver App ist eine von Ihnen geschriebene Software, die eine benutzerdefinierte Logik enthält, die jeden Simulationstrick ausführt. Der Zweck der meisten Apps besteht darin, Entitäten während der Simulation zu aktualisieren. Ihre Apps rufen APIs imSimSpace Weaver App-SDK auf, um Aktionen (wie Lesen und Aktualisieren) für Entitäten in Ihrer Simulation auszuführen.

Sie packen Ihre Apps und die benötigten Ressourcen (z. B. Bibliotheken) als ZIP-Dateien und laden sie inSimSpace Weaver. Eine App läuft in einem Docker-Container auf einem Worker. SimSpace Weaverweist jeder App eine feste Anzahl von Ressourceneinheiten auf dem Worker zu.

SimSpace Weaverweist jeder App das Eigentum an einer (und nur einer) Partition zu. Eine App und ihre Partition befinden sich auf demselben Worker. Jede Partition hat nur einen App-Besitzer. Eine App kann Entitäten in ihrer Partition erstellen, lesen, aktualisieren und löschen. Eine App besitzt alle Entitäten in ihrer Partition.

Es gibt drei Arten von Apps: räumliche Apps, benutzerdefinierte Apps und Service-Apps. Sie unterscheiden sich je nach Anwendungsfall und Lebenszyklus.

Anmerkung

InSimSpace Weaver kann sich der Begriff „App“ auf den Code für eine App oder eine laufende Instanz dieses Codes beziehen.

Spatial

Räumliche Apps aktualisieren den Status von Objekten, die räumlich in Ihrer Simulation existieren. Sie könnten beispielsweise einePhysics App definieren, die für die Bewegung und Kollision von Objekten bei jedem Tick verantwortlich ist, basierend auf ihrer Geschwindigkeit, Form und Größe. In diesem Fall werden mehrere Instanzen derPhysics App parallelSimSpace Weaver ausgeführt, um die Größe der Arbeitslast zu bewältigen.

SimSpace Weaververwaltet den Lebenszyklus von räumlichen Apps. Sie geben eine Anordnung von räumlichen App-Partitionen in Ihrem Simulationsschema an. Wenn Sie Ihre SimulationSimSpace Weaver starten, wird für jede räumliche App-Partition eine räumliche App gestartet. Wenn Sie die Simulation beenden, werden Ihre räumlichen AppsSimSpace Weaver heruntergefahren.

Andere Arten von Apps können Entitäten erstellen, aber nur räumliche Apps können Entitäten aktualisieren. Andere Arten von Apps müssen Entitäten, die sie erstellen, in eine räumliche Domäne übertragen. SimSpace Weaververwendet die räumliche Position einer Entität, um die Entität auf die Partition einer räumlichen App zu verschieben. Dadurch wird das Eigentum an der Entität auf die räumliche App übertragen.

Benutzerdefinierte Apps

Sie verwenden benutzerdefinierte Apps, um mit Ihrer Simulation zu interagieren. Eine benutzerdefinierte App liest Entitätsdaten mithilfe von Abonnements. Eine benutzerdefinierte App kann Entitäten erstellen. Die App muss jedoch eine Entität an eine räumliche App übertragen, um die Entität in die Simulation aufzunehmen und zu aktualisieren. Sie können einer benutzerdefinierten App einen NetzwerkendpunktSimSpace Weaver zuweisen. Simulationsclients können eine Verbindung zum Netzwerkendpunkt herstellen, um mit der Simulation zu interagieren. Sie definieren Ihre benutzerdefinierten Apps in Ihrem Simulationsschema, aber Sie sind dafür verantwortlich, sie zu starten und zu stoppen (mithilfe vonSimSpace Weaver API-Aufrufen). Nachdem Sie eine benutzerdefinierte App-Instanz auf einem Worker gestartet haben,SimSpace Weaver wird die Instanz nicht an einen anderen Worker übertragen.

Apps für den Dienst

Sie können eine Service-App verwenden, wenn Sie einen schreibgeschützten Prozess benötigen, der auf jedem Worker ausgeführt wird. Sie können beispielsweise eine Service-App verwenden, wenn Sie eine umfangreiche Simulation haben und einen Viewing Client benötigen, der sich durch die Simulation bewegt und dem Benutzer nur die sichtbaren Entitäten anzeigt. In diesem Fall kann eine einzelne benutzerdefinierte App-Instanz nicht alle Entitäten in der Simulation verarbeiten. Sie können eine Service-App so konfigurieren, dass sie auf jedem Worker gestartet wird. Jede dieser Service-Apps kann dann die Entitäten des zugewiesenen Workers filtern und nur die relevanten Entitäten an ihre verbundenen Clients senden. Ihr Viewing Client kann dann eine Verbindung zu verschiedenen Service-Apps herstellen, während er sich durch den Simulationsraum bewegt. Sie konfigurieren Service-Apps in Ihrem Simulationsschema. SimSpace Weaverstartet und stoppt Ihre Service-Apps für Sie.

App-Zusammenfassung

In der folgenden Tabelle sind die Eigenschaften der verschiedenenSimSpace Weaver App-Typen zusammengefasst.

  Spatial Benutzerdefinierte Apps Apps für den Dienst
Entitäten lesen

Ja

Ja

Ja

Entitäten aktualisieren

Ja

Nein

Nein

Entitäten erstellen

Ja

Ja*

Ja*

Lebenszyklus

Verwaltet (SimSpace Weaverkontrolliert es.)

Unverwaltet (Sie kontrollieren es.)

Verwaltet (SimSpace Weaverkontrolliert es.)

Methode starten

SimSpace Weaverstartet eine App-Instanz für jede räumliche Partition, wie in Ihrem Schema angegeben.

Sie starten jede App-Instanz.

SimSpace Weaverstartet eine oder mehrere App-Instanzen auf jedem Worker, wie in Ihrem Schema angegeben.

Kunden können sich verbinden

Nein

Ja

Ja

* Wenn eine benutzerdefinierte App oder Service-App eine Entität erstellt, muss die App das Eigentum an der Entität auf eine räumliche App übertragen, damit die räumliche App den Status der Entität aktualisieren kann.

Domains

EineSimSpace Weaver Domain ist eine Sammlung von App-Instanzen, die denselben ausführbaren App-Code ausführen und dieselben Startoptionen und Befehle haben. Wir bezeichnen Domänen nach den Arten von Apps, die sie enthalten: räumliche Domänen, benutzerdefinierte Domänen und Dienstdomänen. Sie konfigurieren Ihre Apps innerhalb von Domains.

Abonnements und Replikation

Eine App erstellt ein Abonnement für eine räumliche Region, um Entitätsereignisse (z. B. Eingabe, Verlassen, Erstellen, Aktualisieren und Löschen) in dieser Region zu lernen. Eine App verarbeitet Entitätsereignisse aus einem Abonnement, bevor sie Daten für Entitäten in Partitionen liest, die ihr nicht gehören.

Eine Partition kann auf demselben Worker wie die App existieren (dies wird als lokale Partition bezeichnet), aber eine andere App kann die Partition besitzen. Eine Partition kann auch auf einem anderen Worker existieren (dies wird als Remote-Partition bezeichnet). Wenn es sich bei dem Abonnement um eine Remote-Partition handelt, erstellt der Worker eine lokale Kopie der Remote-Partition durch einen Prozess, der als Replikation bezeichnet wird. Der Worker liest dann die lokale Kopie (replizierte Remote-Partition). Wenn eine andere App auf dem Worker von dieser Partition auf demselben Häkchen lesen muss, liest der Worker dieselbe lokale Kopie.