Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Concetti chiave perSimSpace Weaver
Una simulazione o un gioco è limitato dal computer che lo esegue. Man mano che cresci le dimensioni e la complessità del tuo mondo virtuale, le prestazioni di elaborazione iniziano a peggiorare. I calcoli richiedono più tempo, i sistemi esauriscono la memoria e i frame rate dei client diminuiscono. Per le simulazioni che non richiedono prestazioni in tempo reale, questo potrebbe essere solo fastidioso. Oppure, potrebbe trattarsi di una situazione aziendale critica in cui l'aumento dei ritardi di elaborazione comporta un aumento dei costi. Se la tua simulazione o il tuo gioco richiedono prestazioni in tempo reale, il degrado delle prestazioni è sicuramente un problema.
Una soluzione comune per una simulazione che raggiunge un limite di prestazioni consiste nel semplificare la simulazione. I giochi online con molti utenti spesso risolvono i problemi di scalabilità creando copie del loro mondo virtuale su server diversi e distribuendo gli utenti su di essi.
SimSpace Weaverrisolve il problema della scalabilità dividendo il mondo virtuale spazialmente e distribuendo i pezzi su un cluster di istanze di calcolo eseguite nelCloud AWS. Le istanze di calcolo lavorano insieme per elaborare l'intero mondo della simulazione in parallel. Il tuo mondo di simulazione appare come un unico spazio integrato per tutto ciò che contiene e per tutti i client che vi si connettono. Non è più necessario semplificare una simulazione a causa di un limite di prestazioni hardware. Puoi invece aggiungere più capacità di calcolo nel cloud.
Argomenti
Funzionamento di SimSpace Weaver
La tua simulazione consiste in un mondo con oggetti al suo interno. Alcuni oggetti (come persone e veicoli) si muovono e fanno cose. Altri oggetti (come alberi ed edifici) sono statici. InSimSpace Weaver, un'entità è un oggetto nel tuo mondo di simulazione.
Definisci i confini del tuo mondo di simulazione e lo dividi in una griglia. Invece di creare una logica di simulazione che funzioni sull'intera griglia, si crea una logica di simulazione che opera su una cella della griglia. InSimSpace Weaver, un'app spaziale è un programma che scrivi che implementa la logica di simulazione per una cella della tua griglia. Ciò include la logica per tutte le entità in quella cella. L'area di proprietà di un'app spaziale è la cella della griglia controllata dall'app spaziale.
Nota
NelSimSpace Weaver, il termine «app» può riferirsi al codice di un'app o a un'istanza in esecuzione di quel codice.
|
SimSpace Weaveresegue un'istanza del codice spaziale dell'app per ogni cella della griglia. Tutte le istanze spaziali dell'app vengono eseguite in parallel. In sostanza,SimSpace Weaver divide la simulazione complessiva in più simulazioni più piccole. Ciascuna delle simulazioni più piccole gestisce una parte del mondo complessivo della simulazione. SimSpace Weaverè in grado di distribuire ed eseguire queste simulazioni di dimensioni ridotte su più istanze Amazon Elastic Compute Cloud (Amazon EC2) (denominati worker) nelCloud AWS. Un singolo lavoratore può eseguire più app spaziali.
Le entità possono muoversi nel mondo della simulazione. Se un'entità entra nell'area di proprietà di un'altra app spaziale (un'altra cella nella griglia), il proprietario dell'app spaziale della nuova area assume il controllo dell'entità. Se la simulazione viene eseguita su più lavoratori, un'entità potrebbe passare dal controllo di un'app spaziale su un lavoratore a un'app spaziale su un lavoratore diverso. Quando un'entità passa a un altro lavoratore,SimSpace Weaver gestisce la comunicazione di rete sottostante.
Sottoscrizioni
La visione del mondo di un'app spaziale è un'area di proprietà a sé stante. Per scoprire cosa succede in un'altra parte del mondo della simulazione, l'app spaziale crea un abbonamento. L'area abbonamenti è un sottoinsieme dell'area globale della simulazione. Un'area di abbonamento può includere parti di più aree di proprietà, inclusa l'area di proprietà dell'app spaziale. SimSpace Weavernotifica all'app spaziale tutti gli eventi dell'entità (ad esempio, ingresso, uscita, creazione, aggiornamento ed eliminazione) che si verificano all'interno dell'area di sottoscrizione.
|
|
Ad esempio, un'app che simula le entità che interagiscono fisicamente potrebbe aver bisogno di conoscere le entità che si trovano appena oltre i confini spaziali della sua area di proprietà. A tale scopo, l'app può iscriversi alle aree che confinano con l'area di proprietà. Dopo aver creato l'abbonamento, l'app riceve notifiche sugli eventi delle entità in quelle aree e può leggere le entità. Un altro esempio è un veicolo autonomo che deve vedere tutte le entità a 200 metri di distanza indipendentemente dall'app che possiede l'area. L'app per il veicolo può creare un abbonamento con un filtro che funge da riquadro di delimitazione allineato agli assi(AABB) che copre l'area visibile.
È possibile creare una logica di simulazione che non sia responsabile della gestione degli aspetti spaziali della simulazione. Un'app personalizzata è un programma eseguibile che viene eseguito su un singolo operatore. Sei tu a controllare il ciclo di vita (avvio e arresto) di un'app personalizzata. I client di simulazione possono connettersi a un'app personalizzata per visualizzare o interagire con la simulazione. Puoi anche creare un'app di servizio che venga eseguita su ogni lavoratore. SimSpace Weaveravvia un'istanza dell'app di servizio su ogni operatore che esegue la simulazione.
Le app personalizzate e le app di servizio creano abbonamenti per conoscere gli eventi delle entità e leggere le entità. Queste app non hanno aree di proprietà perché non sono spaziali. L'utilizzo di un abbonamento è l'unico modo per scoprire cosa sta succedendo nel mondo della simulazione.
Come si usaSimSpace Weaver
Durante l'usoSimSpace Weaver, questi sono i passaggi principali da seguire:
Scrivi e creaC++ app che integrano l'SDKSimSpace Weaver dell'app.
Le tue app effettuano chiamate API per interagire con lo stato della simulazione.
Scrivi ai clienti che visualizzano e interagiscono con la tua simulazione tramite alcune app.
Configura la tua simulazione in un file di testo.
Carica i pacchetti di app e la configurazione della simulazione sul servizio.
Inizia la tua simulazione.
Avvia e interrompi le app personalizzate in base alle necessità.
Collega i clienti alle tue app personalizzate o di servizio per visualizzare o interagire con la simulazione.
Controlla i log di simulazione in AmazonCloudWatch Logs.
Arrestare la simulazione.
Pulizia della simulazione.
Schema di simulazione
Lo schema (o schema) di simulazione è un fileYAML di testo in formato che contiene informazioni di configurazione per la simulazione. SimSpace Weaverusa il tuo schema quando avvia una simulazione. Il pacchetto distribuibileSimSpace Weaver dell'app SDK include uno schema per un progetto di esempio. Questo può essere utilizzato come punto di partenza per il proprio schema. Per ulteriori informazioni sullo schema di simulazione, consultaSimSpace Weaver riferimento allo schema di simulazione.
Lavoratori e unità di risorse
Un worker è un'istanza Amazon EC2 che esegue la tua simulazione. Si specifica un tipo di lavoratore nello schema di simulazione. SimSpace Weaverassocia il tipo di lavoratore a un tipo di istanza Amazon EC2 specifico utilizzato dal servizio. SimSpace Weaveravvia e arresta i tuoi dipendenti per te e gestisce la comunicazione di rete tra i lavoratori. SimSpace Weaveravvia un set di lavoratori per ogni simulazione. Diverse simulazioni utilizzano lavoratori diversi.
La capacità di elaborazione disponibile (processore e memoria) di un lavoratore è suddivisa in unità logiche chiamate unità di risorse di calcolo (o unità di risorsa). Un'unità di risorsa rappresenta una quantità fissa di capacità del processore e della memoria.
Nota
In precedenza ci riferivamo a un'unità di risorsa di calcolo come a uno slot. Potresti ancora vedere questo termine precedente nella nostra documentazione.
Orologio di simulazione
Ogni simulazione ha il suo orologio. Si avvia e si arresta l'orologio utilizzando le chiamate API o laSimSpace Weaver console. La simulazione si aggiorna solo quando l'orologio è in funzione. Tutte le operazioni della simulazione avvengono all'interno di segmenti temporali chiamati zecche. L'orologio annuncia l'ora di inizio di ogni segno di spunta a tutti i lavoratori.
La frequenza di clock (o ticchettio) è il numero di ticchettii al secondo (hertz o Hz) che l'orologio annuncia. La frequenza di clock desiderata per una simulazione fa parte dello schema di simulazione. Tutte le operazioni relative a un segno di spunta devono essere completate prima dell'inizio del segno di spunta successivo. Per questo motivo, la frequenza di clock effettiva può essere inferiore alla frequenza di clock desiderata. La frequenza di clock effettiva non sarà superiore alla frequenza di clock desiderata.
Partizioni
Una partizione è un segmento della memoria condivisa di un lavoratore. Ogni partizione contiene parte dei dati sullo stato della simulazione.
Una partizione per un'app spaziale (chiamata anche partizione dell'app spaziale o partizione spaziale) contiene tutte le entità nell'area di proprietà di un'app spaziale. SimSpace Weaverinserisce le entità in partizioni spaziali dell'app in base alla posizione spaziale di ciascuna entità. Ciò significa cheSimSpace Weaver tenta di posizionare sullo stesso lavoratore entità spazialmente vicine l'una all'altra. Ciò riduce al minimo la quantità di conoscenza che un'app richiede alle entità che non possiede per simulare le entità che possiede.
Tessuto di stato
Lo State Fabric è il sistema di memoria condivisa (la raccolta di tutte le partizioni) su tutti i lavoratori. Contiene tutti i dati di stato per la tua simulazione.
Lo State Fabric utilizza un formato binario personalizzato che descrive un'entità come un insieme di dati iniziali e un registro di aggiornamento, per ogni campo di dati di quell'entità. Con questo formato, puoi accedere allo stato di un'entità in un momento precedente del tempo di simulazione e mapparla a un punto nel tempo reale. Il buffer ha una dimensione finita e non è possibile tornare indietro nel tempo oltre a ciò che è nel buffer. SimSpace Weaverutilizza un puntatore all'offset corrente nel registro degli aggiornamenti per ogni campo e aggiorna un puntatore come parte di un aggiornamento del campo. SimSpace Weavermappa questi log di aggiornamento nello spazio dei processi di un'app utilizzando la memoria condivisa.
Questo formato di oggetto comporta costi generali ridotti e nessun costo di serializzazione. SimSpace Weaverutilizza anche questo formato di oggetto per analizzare e identificare i campi dell'indice (come la posizione dell'entità).
Entità
Un'entità è il più piccolo elemento di dati nella simulazione. Esempi di entità includono attori (come persone e veicoli) e oggetti statici (come edifici e ostacoli). Le entità hanno proprietà (come posizione e orientamento) in cui è possibile memorizzare come dati persistentiSimSpace Weaver. Le entità esistono all'interno delle partizioni.
App
Un'SimSpace Weaverapp è un software scritto da te che contiene una logica personalizzata che esegue ogni segno di simulazione. Lo scopo della maggior parte delle app è aggiornare le entità durante l'esecuzione della simulazione. Le tue app richiamano le API nell'SDKSimSpace Weaver dell'app per eseguire azioni (come lettura e aggiornamento) sulle entità della simulazione.
Puoi impacchettare le tue app e le relative risorse necessarie (come le librerie) come file.zip e caricarle suSimSpace Weaver. Un'app viene eseguita in un contenitore Docker su un lavoratore. SimSpace Weaverassegna a ciascuna app un numero fisso di unità di risorse sul lavoratore.
SimSpace Weaverassegna la proprietà di una (e solo una) partizione a ciascuna app. Un'app e la relativa partizione si trovano sullo stesso worker. Ogni partizione ha un solo proprietario dell'app. Un'app è in grado di creare, leggere, aggiornare ed eliminare le entità nella sua partizione. Un'app possiede tutte le entità nella sua partizione.
Esistono tre tipi di app: app spaziali, app personalizzate e app di servizio. Differiscono in base ai casi d'uso e ai cicli di vita.
Nota
NelSimSpace Weaver, il termine «app» può riferirsi al codice di un'app o di un'istanza in esecuzione di quel codice.
App spaziali
Le app spaziali aggiornano lo stato delle entità che esistono spazialmente nella simulazione. Ad esempio, potresti definire un'Physics
app responsabile dello spostamento e della collisione delle entità per ogni segno di spunta in base alla loro velocità, forma e dimensione. In questo caso,SimSpace Weaver esegue più istanze dell'Physics
app in parallel per gestire le dimensioni del carico di lavoro.
SimSpace Weavergestisce il ciclo di vita delle app spaziali. Si specifica una disposizione delle partizioni spaziali delle app nello schema di simulazione. Quando avvii la simulazione,SimSpace Weaver avvia un'app spaziale per ogni partizione dell'app spaziale. Quando interrompi la simulazione,SimSpace Weaver disattiva le app spaziali.
Altri tipi di app possono creare entità, ma solo le app spaziali possono aggiornare le entità. Altri tipi di app devono trasferire le entità che creano in un dominio spaziale. SimSpace Weaverutilizza la posizione spaziale di un'entità per spostare l'entità nella partizione di un'app spaziale. Questo trasferisce la proprietà dell'entità all'app spaziale.
App personalizzate
Utilizzi app personalizzate per interagire con la tua simulazione. Un'app personalizzata legge i dati delle entità utilizzando gli abbonamenti. Un'app personalizzata può creare entità. Tuttavia, l'app deve trasferire un'entità in un'app spaziale per includerla nella simulazione e aggiornarla. È possibileSimSpace Weaver assegnare un endpoint di rete a un'app personalizzata. I client di simulazione possono connettersi all'endpoint di rete per interagire con la simulazione. Definisci le tue app personalizzate nel tuo schema di simulazione, ma sei responsabile di avviarle e interromperle (utilizzando le chiamateSimSpace Weaver API). Dopo aver avviato un'istanza di app personalizzata su un lavoratore,SimSpace Weaver non trasferisce l'istanza a un altro lavoratore.
App di servizio
Puoi utilizzare un'app di servizio quando hai bisogno di un processo di sola lettura in esecuzione su ogni lavoratore. Ad esempio, puoi utilizzare un'app di servizio se hai una simulazione di grandi dimensioni e hai bisogno di un client di visualizzazione che si muova attraverso la simulazione e mostri all'utente solo le entità visibili. In questo caso, una singola istanza dell'app personalizzata non può elaborare tutte le entità della simulazione. Puoi configurare un'app di servizio da avviare su ogni lavoratore. Ciascuna di queste app di servizio può quindi filtrare le entità sul lavoratore assegnato e inviare solo le entità pertinenti ai client connessi. Il client di visualizzazione può quindi connettersi a diverse app di servizio mentre si muove nello spazio di simulazione. Le app di servizio vengono configurate nello schema di simulazione. SimSpace Weaveravvia e arresta le app di servizio per te.
Riepilogo dell'app
La tabella seguente offre un riepilogo delle caratteristiche dei diversi tipi diSimSpace Weaver app.
App spaziali | App personalizzate | App di servizio | |
---|---|---|---|
Entità di lettura |
Sì |
Sì |
Sì |
Aggiorna le entità |
Sì |
No |
No |
Creazione di entità |
Sì |
Sì* |
Sì* |
Ciclo di vita |
Gestito (loSimSpace Weaver controlla). |
Non gestito (sei tu a controllarlo). |
Gestito (loSimSpace Weaver controlla). |
Metodo di avvio |
SimSpace Weaveravvia un'istanza dell'app per ogni partizione spaziale, come specificato nello schema. |
Si avvia ogni istanza dell'app. |
SimSpace Weaveravvia una o più istanze di app su ciascun lavoratore, come specificato nello schema. |
I clienti possono connettersi |
No |
Sì |
Sì |
* Quando un'app o un'app di servizio personalizzata crea un'entità, l'app deve trasferire la proprietà dell'entità a un'app spaziale in modo che l'app spaziale possa aggiornare lo stato dell'entità.
Domini
UnSimSpace Weaver dominio è una raccolta di istanze di app che eseguono lo stesso codice dell'app eseguibile e hanno le stesse opzioni e comandi di avvio. Ci riferiamo ai domini in base ai tipi di app che contengono: domini spaziali, domini personalizzati e domini di servizio. Puoi configurare le tue app all'interno dei domini.
Abbonamenti e replica
Un'app crea una sottoscrizione a un'area spaziale per apprendere gli eventi delle entità (ad esempio, ingresso, uscita, creazione, aggiornamento ed eliminazione) in quella regione. Un'app elabora gli eventi di entità di un abbonamento prima di leggere i dati relativi alle entità in partizioni di cui non è proprietaria.
Una partizione può esistere sullo stesso worker dell'app (chiamata partizione locale), ma un'altra app può possedere la partizione. Una partizione può esistere anche su un altro lavoratore (si chiama partizione remota). Se la sottoscrizione riguarda una partizione remota, il lavoratore crea una copia locale della partizione remota tramite un processo chiamato replica. Il lavoratore legge quindi la copia locale (partizione remota replicata). Se un'altra app sul worker deve leggere da quella partizione con lo stesso segno di spunta, il lavoratore legge la stessa copia locale.