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à.
Session-based hosting di server di gioco con backend serverless
Quando sviluppate un'architettura per il vostro gioco, considerate le caratteristiche e le capacità di cui avete bisogno e il livello di sovraccarico di gestione operativa che siete disposti ad affrontare. Per fornire il miglior equilibrio tra facilità operativa e flessibilità, puoi creare il tuo gioco utilizzando i servizi gestiti di provider cloud. I servizi gestiti ti danno il controllo necessario per sviluppare e personalizzare le tue funzionalità di gioco personalizzate, riducendo al contempo il carico di implementazione e gestione dell'infrastruttura.
L'hosting di una partita multigiocatore basata su sessioni richiede un'infrastruttura server per ospitare i processi del server di gioco e un backend scalabile per il matchmaking e la gestione delle sessioni. La seguente architettura di riferimento mostra come l'hosting GameLift gestito da Amazon e un backend serverless possono essere utilizzati per gestire i giochi basati sulle sessioni.
Amazon ha GameLift gestito l'hosting per giochi basati su sessioni
Il diagramma descrive il processo per coinvolgere i giocatori nei giochi eseguiti su un hosting di giochi GameLift gestito. Include i seguenti passaggi:
-
Il client di gioco richiede un'identità Amazon Cognito da un pool di identità Amazon Cognito. Questo può essere collegato opzionalmente a provider di identità esterni.
-
Il client di gioco riceve credenziali di accesso temporanee e richiede una sessione di gioco tramite Amazon API Gateway firmando la richiesta con le credenziali Amazon Cognito.
-
API Gateway richiama una funzione. AWS Lambda
-
La funzione Lambda richiede i dati dei giocatori da una tabella Amazon DynamoDB. L'identità Amazon Cognito viene utilizzata per richiedere in modo sicuro i dati corretti del giocatore poiché l'identità autenticata viene fornita nei dati di contesto della richiesta.
-
Utilizzando i dati corretti del giocatore per informazioni aggiuntive (come il livello di abilità del giocatore), la funzione Lambda richiede una partita tramite matchmaking. GameLift FlexMatch Puoi definire una configurazione di FlexMatch matchmaking con JSON-based i documenti di configurazione. Il client di gioco può generare metriche di latenza eseguendo il ping degli endpoint del server in varie regioni, e i dati sulla latenza possono essere utilizzati per supportare il matchmaking basato sulla latenza.
-
Dopo aver FlexMatch abbinato un gruppo adeguato di giocatori con una latenza adeguata a una regione, richiede il posizionamento della sessione di gioco in una coda. GameLift La coda contiene flotte con una o più sedi regionali registrate.
-
Quando la sessione viene effettuata in una delle sedi della flotta, viene inviata una notifica di evento a un argomento di Amazon SNS.
-
Una funzione Lambda riceverà l'evento Amazon SNS e lo elaborerà.
-
Se il messaggio Amazon SNS è un MatchmakingSucceeded evento, la funzione Lambda scrive il risultato su DynamoDB con la porta del server e l'indirizzo IP. Un valore time-to-live (TTL) viene utilizzato per assicurarsi che i ticket di matchmaking vengano eliminati da DynamoDB quando non sono più necessari.
-
Il client di gioco invia una richiesta firmata a API Gateway per verificare lo stato del ticket di matchmaking in un intervallo specifico.
-
API Gateway richiama una funzione Lambda che controlla lo stato del ticket di matchmaking.
-
La funzione Lambda controlla DynamoDB per determinare se il ticket è andato a buon fine. Se ha avuto successo, la funzione Lambda invia l'indirizzo IP, la porta e l'ID della sessione del giocatore al client. Se il ticket fallisce, la funzione Lambda invia una risposta dichiarando che la partita non è pronta.
-
Il client di gioco si connette al server di gioco tramite TCP o UDP utilizzando la porta e l'indirizzo IP forniti dal backend. Invia l'ID della sessione del giocatore al server di gioco e il server di gioco lo convalida utilizzando l'Amazon Server SDK. GameLift
In alternativa, puoi modificare l'architettura precedente per utilizzare API Gateway WebSockets con Amazon. GameLift In questo approccio, la comunicazione tra il client di gioco e il servizio di backend di gioco avviene tramite un'WebSocket-basedimplementazione. Questa implementazione può essere utilizzata in modo che la funzione Lambda del backend del gioco invii un messaggio lato server al client di gioco tramite un modello di polling WebSocket anziché implementarlo.