View a markdown version of this page

Architettura di backend di gioco basata su server - Games Industry Lens

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à.

Architettura di backend di gioco basata su server

Molti sviluppatori di giochi non vogliono gestire l'infrastruttura e preferiscono invece creare i propri giochi utilizzando tecnologie che consentano loro di concentrarsi sul software. In questo scenario è consigliata un'architettura serverless perché consente di creare e rilasciare funzionalità più rapidamente e con meno costi operativi. Le architetture serverless sono progettate utilizzando servizi cloud in grado di scalare dinamicamente in base alla richiesta senza la necessità di configurare, gestire e scalare i server. La seguente architettura di riferimento illustra come creare un gioco utilizzando un'architettura serverless.

Architettura di riferimento per il backend di gioco basata su server

Architettura di riferimento per il backend di gioco basata su server

Questa architettura di riferimento illustra un gioco a quiz basato sul web che offre funzionalità per giocatore singolo e multiplayer.

  • Autenticazione del giocatore: i giocatori si autenticano utilizzando Amazon Cognito, che fornisce un'autenticazione sicura con una directory utente per la gestione delle identità dei giocatori.

  • Logica di gioco come funzioni serverless: le funzionalità di gioco e la logica aziendale di backend vengono eseguite come AWS Lambda funzioni avviate in risposta a eventi, il che consente di ridurre i costi perché si pagano solo quando la funzione è in esecuzione. Lambda ti offre la flessibilità di scrivere ogni funzionalità di gioco come microservizio separato utilizzando un linguaggio di programmazione a tua scelta. Ad esempio, potresti scegliere di sviluppare funzioni.NET Lambda se hai esperienza nell'uso di C# per creare giochi Unity, oppure potresti scegliere di sviluppare le funzioni Lambda Node.js se desideri programmare un frontend e un backend per un gioco basato sul Web entrambi. JavaScript

  • NoSQL Data Store per i dati di gioco e dei giocatori: utilizza DynamoDB per archiviare i dati dei giocatori e dei giochi, poiché è progettato appositamente per archiviare grandi quantità di dati dai microservizi. Come illustrato in questa architettura, è consigliabile utilizzare archivi dati separati per le esigenze di archiviazione dei dati di ciascuna funzionalità di gioco, il che semplifica il monitoraggio e la gestione delle funzionalità in modo indipendente. Ciò crea anche dei limiti di separazione se la proprietà delle funzionalità o dei servizi cambia all'interno del team. In questa architettura di riferimento, le tabelle DynamoDB vengono utilizzate per archiviare dati come lo stato della connessione, i dettagli del gioco, i progressi dei giocatori e le informazioni sulla classifica.

  • Gameplay per giocatore singolo: le funzionalità per giocatore singolo consentono ai giocatori di eseguire azioni come selezionare e giocare una partita e visualizzare la classifica. Queste funzionalità sono implementate come servizi di RESTful backend ospitati con un'API HTTP Amazon API Gateway che richiama la funzione Lambda appropriata per ottenere e impostare dati nelle tabelle DynamoDB. Al termine del gioco, il backend invia anche notifiche agli argomenti di Amazon SNS che avviano le funzioni Lambda in modo asincrono per memorizzare i progressi e le statistiche del giocatore.

  • Gameplay multigiocatore: le funzionalità di gioco multigiocatore richiedono che i giocatori siano in grado di interagire con il gioco per point-to-point comunicare, oltre a trasmettere e ricevere aggiornamenti da altri giocatori connessi. Un' WebSockets implementazione è adatta per la point-to-point comunicazione in un gioco leggero, come i quiz. I giocatori possono stabilire una WebSockets connessione ad Amazon API Gateway WebSockets, che gestisce la connessione e richiama le funzioni Lambda solo quando ci sono messaggi da inviare o ricevere per un giocatore. Nei casi d'uso in cui è necessaria la one-to-many comunicazione tra giocatori, AWS IoT Core fornisce supporto per la messaggistica WebSockets tramite MQTT, che consente ai clienti di iscriversi agli argomenti e agire in base ai messaggi ricevuti. In questa architettura, gli WebSockets over MQTT vengono utilizzati per supportare casi d'uso come la trasmissione di aggiornamenti di gioco in tempo reale e per porre domande ai giocatori connessi. In alternativa AWS IoT, puoi scegliere Redis Pub/Sub per la consegna dei messaggi o Redis Streams se hai bisogno della conservazione dei messaggi.

  • Usa le funzioni Lambda abilitate per VPC per accedere alle risorse nelle tue sottoreti private: configura le funzioni Lambda abilitate per VPC per accedere alle risorse nelle sottoreti private del tuo VPC, come ElastiCache Amazon, che viene utilizzato per ridurre i tempi di query per set di dati a bassa latenza come le classife live.

Per ulteriori informazioni, consulta la Guida per l'hosting di backend di gioco personalizzato su. AWS