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à.
Definizioni
Il AWS Well-Architected Framework si basa su sei pilastri: eccellenza operativa, sicurezza, affidabilità, efficienza delle prestazioni, ottimizzazione dei costi e sostenibilità. AWS fornisce diversi componenti principali che consentono di progettare architetture all'avanguardia per i carichi di lavoro dei giochi. In questa sezione, presenteremo una panoramica delle definizioni chiave.
Ai fini di questo documento, un'architettura di gioco comprende l'infrastruttura tecnica di backend necessaria per creare e gestire un gioco. Alcuni giochi potrebbero non avere funzionalità social, multiplayer o altre funzionalità online e potrebbero non richiedere l'uso di alcuni aspetti dell'infrastruttura tecnica di backend descritti in questo documento. Per una discussione dettagliata dei diversi tipi di carichi di lavoro utilizzati frequentemente per supportare un'architettura di gioco, vedi Scenari.
L' Cloud AWS infrastruttura è costruita attorno alle regioni e alle zone di disponibilità.
-
Una regione è una località fisica nel mondo in cui sono presenti più zone di disponibilità.
-
Le zone di disponibilità sono costituite da uno o più data center discreti, ciascuno con alimentazione, rete e connettività ridondanti, ospitati in strutture separate.
A seconda delle caratteristiche del gioco, potresti voler distribuire determinati componenti della tua architettura di gioco in più regioni per motivi quali il miglioramento delle prestazioni dei giocatori o per offrire esperienze personalizzate ai giocatori in base alla loro posizione.
Esistono molti tipi diversi di giochi e l'infrastruttura tecnica di backend necessaria per supportare un gioco varia a seconda del tipo di gioco in fase di sviluppo. Ad esempio, i tipi più diffusi di giochi possono includere sparatutto in prima persona (FPS), giochi di ruolo (RPG), giochi online multigiocatore di massa (MMOG), battle royales (BR), giochi sportivi, giochi di puzzle e altro ancora. Esistono anche diverse modalità di interazione del gioco che influenzano l'architettura del gioco, come il gioco a turni e il gioco simultaneo, con caratteristiche prestazionali diverse.
I giochi sono sviluppati per essere giocati su uno o più sistemi di gioco, tra cui desktop, web, dispositivi mobili, console e modalità di interazione più recenti come la realtà aumentata (AR), la realtà virtuale (VR) e le soluzioni di streaming di giochi. I giochi in genere supportano la modalità di gioco multisistema, il che significa che i giocatori possono salvare i progressi di gioco e riprendere il gioco su altri sistemi, nonché avviare sessioni di gioco con giocatori su altri sistemi.
La monetizzazione dei videogiochi consente agli editori di videogiochi di generare entrate utilizzando diverse strategie come la pubblicità, gli acquisti di giochi digitali e al dettaglio, gli acquisti in-game di contenuti scaricabili (DLC) noti come microtransazioni e tramite abbonamenti a pagamento obbligatori per giocare. Alcuni degli indicatori chiave di prestazione (KPI) più comuni nel settore dei giochi includono:
-
Utenti attivi giornalieri (DAU)
-
Utenti attivi mensili (MAU)
-
Utenti simultanei (CCU)
-
Durata della sessione
-
Costo per installazione (CPI)
-
Valore della vita del giocatore (LTV)
-
Ricavi medi per utente (ARPU)
Sistema di gioco
I videogiochi sono sviluppati per essere giocati su un sistema di gioco che fornisce controlli di input dal client, grafica, software client (noto come client di gioco) e hardware e, in alcuni casi, funzionalità esclusive del sistema per supportare il gameplay.
I sistemi di gioco sono generalmente suddivisi nelle seguenti categorie:
-
Console: sistemi di Purpose-built intrattenimento progettati per giocare, inclusi esempi popolari come Sony PlayStation, Microsoft Xbox e Nintendo Switch. Le console consentono di giocare installando contenuti di gioco distribuiti fisicamente o digitalmente sull'hardware della console prodotto dal fornitore del sistema di gioco. In questa definizione, una console può essere portatile o fissa e destinata all'uso in uno scenario di home entertainment.
-
Personal computer (PC): giochi giocati utilizzando un software installato su un computer client che può essere personalizzato dal giocatore. Per questo motivo, i giochi per PC sono popolari tra i giocatori grazie alla flessibilità e al controllo che offrono.
-
Web: giochi progettati per essere giocati utilizzando un browser Web e che di solito offrono il vantaggio di consentire al giocatore di accedere al gioco indipendentemente dal proprio sistema operativo.
-
Mobile: giochi sviluppati per essere giocati su un telefono cellulare, in genere un sistema operativo per smartphone. I giochi per dispositivi mobili vengono generalmente scaricati da un app store digitale e installati sul telefono.
Oltre ai sistemi menzionati in precedenza, esistono anche sistemi nascenti che sono ancora relativamente nuovi e in crescita e hanno una quota di mercato molto inferiore rispetto ai sistemi più predominanti. Esempi di sistemi di gioco in questa categoria includono AR, VR e streaming di giochi, a volte indicati come cloud gaming.
Lo streaming di giochi implica il rendering del gameplay nel cloud e lo streaming su un thin client, in genere un browser. Lo streaming di giochi consente a un giocatore di giocare a un gioco interamente ospitato in remoto, in genere nel cloud da un fornitore di servizi di streaming di giochi. Nello streaming di giochi, il giocatore si connette a un gioco basato su cloud tramite un browser o un thin client fornito dal fornitore di servizi di cloud gaming (sistema di gioco).
Server di gioco
I server di gioco rappresentano uno degli aspetti più importanti dell'infrastruttura di calcolo del gioco. I server di gioco, a volte indicati come server di gioco dedicati, vengono utilizzati quando si sviluppa un gioco multiplayer o quando è richiesta l'elaborazione autorevole degli eventi di gioco da parte del server. Il server di gioco è al centro dell'architettura di gioco e funge da luogo in cui viene eseguita la logica di base, che include la gestione del giocatore e dello stato del gioco, nonché la gestione delle interazioni tra i client di gioco connessi e il server di gioco. Il server di gioco è in genere uno degli aspetti più sensibili alle prestazioni di un'architettura di gioco perché è responsabile dell'elaborazione degli input provenienti dal client di gioco di un giocatore e della loro corretta distribuzione agli altri giocatori connessi in tempo reale. Un server di gioco con prestazioni scadenti influisce sulle prestazioni complessive dell'esperienza di gioco. Pertanto, è necessario ottimizzare le prestazioni del server di gioco e fornire una capacità sufficiente, soprattutto all'avvio del gioco o nei periodi di picco del gioco.
Ai fini del presente documento, per server di gioco o istanza del server di gioco si intende il computer, ad esempio una macchina virtuale, che ospita uno o più processi del server di gioco. Un processo del server di gioco rappresenta una singola istanza della build del server di gioco che ospita una sessione di gioco, ovvero un'istanza della partita in esecuzione a cui i giocatori possono connettersi tramite una sessione di gioco. Per questo motivo, spesso ci riferiamo al processo del server di gioco o alla sessione di gioco in modo intercambiabile, a causa della relazione implicita uno a uno tra una sessione di gioco e il processo del server di gioco che la ospita. In AWS, sono disponibili diverse opzioni di elaborazione per ospitare i server di gioco, che forniscono l'accesso a capacità scalabile basata sul cloud attraverso una fornitura elastica delle risorse.
Amazon EC2 fornisce server virtuali basati su cloud, noti come istanze, con supporto per più versioni di Linux e Windows. Puoi creare istanze e gestirle direttamente come un altro server o macchina virtuale. In genere, su un'istanza vengono implementati più processi del server di gioco per migliorare l'efficienza e ridurre i costi. Amazon EC2 è una buona scelta per i server di gioco se desideri il massimo controllo sull'infrastruttura di elaborazione.
Amazon GameLift offre una soluzione completamente gestita per l'hosting di server di gioco dedicati nel cloud e funzionalità aggiuntive come il matchmaking con. GameLift FlexMatch GameLiftfornisce un livello di astrazione su Amazon EC2 per semplificare la gestione dei server di gioco ed è disponibile nella maggior parte dei casi, in Regioni AWS modo da poter ospitare server di gioco vicino ai giocatori per ridurre la latenza, ottenere un'elevata disponibilità e ridurre significativamente i costi utilizzando le istanze Spot. Sebbene GameLift possa essere integrato nei backend di gioco esistenti, è particolarmente utile per gli sviluppatori di giochi che non vogliono sviluppare le proprie soluzioni di gestione dei server di gioco e matchmaking e preferiscono una soluzione gestita AWS e scalabile man mano che il gioco cresce.
Amazon Elastic Container Service (Amazon ECS) è un servizio di orchestrazione di container completamente gestito che puoi utilizzare per eseguire container. Docker-based Puoi anche utilizzare Amazon Elastic Kubernetes Service (Amazon EKS) per eseguire Docker-based contenitori creati utilizzando Kubernetes. L'utilizzo di tecnologie container come quelle fornite da Amazon ECS e Amazon EKS può aiutarti a migliorare l'utilizzo del calcolo raggruppando in modo efficiente molti processi del server di gioco o altre istanze di applicazioni di gioco in un'istanza EC2.
L'uso dei contenitori può anche migliorare la produttività degli sviluppatori ospitando le applicazioni utilizzando lo stesso runtime operativo dell'immagine Docker utilizzato dagli sviluppatori sui propri computer locali durante lo sviluppo. Puoi ridurre ulteriormente il sovraccarico operativo utilizzando AWS Fargate, che è una soluzione di elaborazione serverless per l'esecuzione di contenitori ed è compatibile sia con Amazon EKS che con Amazon ECS. Fargate è più adatto per i casi d'uso in cui si desidera eseguire server di gioco in contenitori senza la responsabilità di gestire le istanze sottostanti su cui vengono eseguiti i contenitori.
Puoi utilizzarlo AWS Outposts per eseguire AWS infrastrutture e servizi in un data center o in una struttura locale, il che può consentire ai giochi di funzionare in ambienti locali e di AWS utilizzare la stessa infrastruttura per supportare una strategia di adozione del cloud ibrido. AWS Le zone locali fungono da estensioni Regioni AWS che consentono ai server di gioco e ad altri carichi di lavoro sensibili alla latenza di essere eseguiti più vicino ai giocatori o ai team di sviluppo. Inoltre, per ridurre la latenza di rete globale per i tuoi server di gioco, puoi utilizzare AWS Global Accelerator per migliorare le prestazioni del traffico dei giocatori verso i tuoi server di gioco.
AWS Lambda è un servizio di elaborazione serverless che esegue codice senza fornire o gestire server, il che lo rende utile per i casi di utilizzo di server di gioco asincroni, come i giochi a turni o quelli con requisiti di elaborazione ridotti, una base di codice ridotta e in cui le funzionalità di gioco possono essere progettate utilizzando un'architettura di microservizi stateless. È importante tenere presente che le funzioni Lambda vengono eseguite in base agli eventi e per richiesta, anziché eseguire un processo del server di gioco di lunga durata. Lambda fornisce l'astrazione più rapida tra le opzioni descritte in questo documento perché gli sviluppatori possono scegliere l'applicazione sottostante per ospitare il proprio codice.
Quando scegli il tuo approccio per l'hosting dei server di gioco, considera vari requisiti, tra cui overhead operativo, codebase legacy, requisiti prestazionali e scalabilità. Le istanze e i contenitori EC2 sono buone opzioni per le basi di codice legacy, poiché richiedono la minima modifica per passare al cloud e puoi utilizzare le istanze EC2 per dedicare le risorse di un'istanza di calcolo, mentre i contenitori possono semplificare la gestione e l'elevato utilizzo. Le funzioni serverless offrono il massimo livello di astrazione, che puoi utilizzare per definire codice che viene eseguito solo in risposta agli eventi, il che può ridurre i costi.
Client di gioco
Il client di gioco rappresenta il dispositivo software e hardware che il giocatore utilizza per giocare. Il client di gioco fornisce il software per tradurre gli input del giocatore in messaggi inviati a un server per l'elaborazione ed è responsabile della gestione delle risposte in arrivo dal server e del rendering degli output, ad esempio la grafica, per il giocatore. Nei giochi multigiocatore in rete in tempo reale, il client di gioco di solito mantiene una connessione di rete persistente a un server di gioco per tutta la durata di una sessione di gioco per ridurre la latenza di rete e minimizzare i tempi di elaborazione. Tuttavia, il client di gioco può anche interagire tramite REST con un server di gioco o servizi di backend.
Messaggistica
In genere ci sono tre categorie principali di messaggi nei giochi:
-
Messaggi di coinvolgimento dei giocatori mirati a un utente o a un gruppo di utenti specifico, come inviti a giochi o notifiche push
-
Messaggi di gruppo tra giocatori, ad esempio chat all'interno del gioco
-
Service-to-servicemessaggistica, ad esempio messaggi JSON utilizzati per integrare due o più applicazioni
Una strategia comune per l'invio e la ricezione di questi tipi di messaggi consiste nell'utilizzare modelli di architettura di elaborazione publisher-subscriber e asincrona. AWS fornisce diversi servizi che possono aiutarti a implementare la messaggistica nel gioco.
-
Amazon Simple Notification Service (SNS): servizio gestito per la distribuzione di messaggi tra editori e abbonati utilizzando un modello di architettura. pub/sub Gli editori inviano messaggi utilizzando un'API ad Amazon SNS, che invia i messaggi in modo asincrono alle applicazioni in abbonamento e può inviare notifiche push direttamente a client mobili o desktop con il supporto per alcuni dei servizi di notifica push più utilizzati. Amazon SNS può essere utilizzato per le notifiche push ai client e per i casi d'uso della messaggistica da servizio a servizio.
-
Amazon Simple Queue Service (SQS): un servizio di coda completamente gestito che semplifica l'integrazione dei server di gioco e del gioco indipendentemente dal linguaggio di programmazione utilizzato in ciascuno di essi. Molte attività di gioco possono essere disaccoppiate e gestite in background, ad esempio l'aggiornamento di una classifica o dei valori del tempo di gioco in un database. Questo approccio è un modo efficace per dissociare varie parti del gioco e scalare in modo indipendente le funzionalità rivolte ai giocatori dall'elaborazione backend.
-
Amazon Managed Streaming for Apache Kafka (MSK): un servizio completamente gestito che semplifica la creazione di applicazioni di streaming di dati e di produzione o di consumo utilizzando Apache Kafka, una popolare soluzione open source. Kafka viene in genere utilizzato per l'acquisizione e l'elaborazione di dati in streaming in tempo reale e può essere utilizzato per la messaggistica da servizio a servizio.
-
Amazon ElastiCache (Redis OSS): fornisce un archivio dati in memoria completamente gestito che include il supporto per la popolare pub/sub funzionalità di Redis, comunemente utilizzata per lo sviluppo di applicazioni di chat room e messaggistica service-to-service ad alte prestazioni. Redis supporta anche tipi di dati avanzati come elenchi e set in modo che gli sviluppatori possano utilizzare Redis per accodare ad alte prestazioni.
-
Amazon Pinpoint: fornisce messaggi di coinvolgimento degli utenti tramite e-mail, SMS, notifiche vocali e push. Ad esempio, Amazon Pinpoint può essere utilizzato per inviare messaggi di coinvolgimento degli utenti ai giocatori per invitarli a tornare a giocare e può essere utilizzato per casi d'uso transazionali come il supporto di token di autenticazione a più fattori, conferme d'ordine ed e-mail di reimpostazione della password.
Operazioni di gioco dal vivo (Live Ops)
Le operazioni di gioco dal vivo (Live Ops) sono uno stile di gestione e operazioni di gioco che considera un gioco come un servizio live e offre continuamente nuove funzionalità, aggiornamenti, promozioni, eventi di gioco e miglioramenti al gioco lanciato per migliorare l'esperienza per la comunità di giocatori.
Tradizionalmente, i giochi venivano distribuiti come prodotti anziché come servizi e nuovi contenuti e funzionalità venivano spesso incorporati nelle versioni successive o nei sequel anziché nel prodotto lanciato. Con un approccio Live Ops alla gestione del gioco, un team addetto alle operazioni di gioco può lanciare un gioco e mantenere una community di giocatori coinvolta attraverso sperimentazioni, promozioni, eventi di gioco e innovazioni per intrattenere i giocatori.
Sebbene questo approccio abbia il vantaggio di sbloccare nuove strategie di coinvolgimento dei giocatori e di generare flussi di entrate ricorrenti, richiede maggiori competenze operative. Ad esempio, per implementare una strategia Live Ops di successo, uno sviluppatore potrebbe dover integrarsi con i servizi cloud o gestire la propria infrastruttura tecnica di backend. Hanno anche bisogno di un modo efficace per identificare e rispondere ai problemi che si presentano nel gioco o all'interno della comunità dei giocatori, che possono avere un impatto negativo sull'esperienza dei giocatori.