Riempi i giochi esistenti con FlexMatch - Amazon GameLift

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

Riempi i giochi esistenti con FlexMatch

Il backfill degli abbinamenti utilizza il meccanismo FlexMatch per trovare nuovi giocatori per le sessioni di gioco abbinate esistenti. Anche se puoi sempre aggiungere giocatori a qualsiasi gioco (vedi Partecipare a una sessione di gioco), il riempimento delle partite garantisce che i nuovi giocatori soddisfino gli stessi criteri di abbinamento dei giocatori attuali. Inoltre, il backfill degli abbinamenti assegna i nuovi giocatori ai team, gestisce l'accettazione da parte dei giocatori e invia informazioni aggiornate sull'abbinamento al processo del server di gioco. Ulteriori informazioni sul backfill degli abbinamenti sono disponibili in FlexMatchprocesso di matchmaking.

Nota

FlexMatchil backfill non è attualmente disponibile per i giochi che utilizzano server in tempo reale.

Esistono due tipi di meccanismi di backfill:

  • Per riempire le sessioni di gioco che iniziano con un numero di giocatori inferiore al numero massimo consentito, abilita il backfill automatico.

  • Per sostituire i giocatori che abbandonano una sessione di gioco in corso, aggiungi funzionalità al server di gioco per inviare richieste di backfill.

Attiva il riempimento automatico

Con il backfill automatico delle partite, Amazon attiva GameLift automaticamente una richiesta di riempimento ogni volta che una sessione di gioco inizia con uno o più slot per giocatori vuoti. Questa caratteristica consente di iniziare i giochi non appena individuato il numero minimo di giocatori abbinati, mentre gli slot rimanenti vengono riempiti in un secondo momento con l'abbinamento di altri giocatori. Puoi interrompere il backfill automatico in qualsiasi momento.

Ad esempio, considera un gioco che può contenere da sei a dieci giocatori. FlexMatchindividua inizialmente sei giocatori, forma la partita e avvia una nuova sessione di gioco. Con il backfill automatico, la nuova sessione di gioco può richiedere immediatamente altri quattro giocatori. A seconda dello stile di gioco, potremmo voler consentire ai nuovi giocatori di unirsi in qualsiasi momento durante la sessione di gioco. In alternativa, puoi interrompere il backfill automatico dopo la fase iniziale di configurazione e prima dell'inizio del gioco.

Per aggiungere il backfill automatico al tuo gioco, effettua i seguenti aggiornamenti per il gioco.

  1. Abilita il backfill automatico. Il backfill automatico è gestito in una configurazione di abbinamento. Se abilitato, viene utilizzato con tutte le sessioni di gioco abbinate create con quel matchmaker. Amazon GameLift inizia a generare richieste di backfill per una sessione di gioco non completa non appena la sessione di gioco viene avviata su un server di gioco.

    Per attivare il backfill automatico, apri una configurazione di abbinamento e imposta la modalità di backfill su "AUTOMATICO". Per ulteriori dettagli, consulta Crea una configurazione di matchmaking.

  2. Attiva la prioritizzazione del backfill. Personalizza il tuo processo di matchmaking per dare priorità alla compilazione delle richieste di riempimento prima di creare nuove partite. Nel tuo set di regole di matchmaking, aggiungi un componente dell'algoritmo e imposta la priorità di backfill su «alta». Per ulteriori dettagli, consulta Personalizza l'algoritmo di abbinamento.

  3. Aggiorna la sessione di gioco con nuovi dati del matchmaker. Amazon GameLift aggiorna il tuo server di gioco con le informazioni sulle partite utilizzando la funzione di callback del Server SDK onUpdateGameSession (vedi Inizializzare il processo del server). Aggiungi il codice al server di gioco per gestire gli oggetti delle sessioni di gioco aggiornate come risultato dell'attività di backfill. Ulteriori informazioni in Aggiorna i dati delle partite sul server di gioco.

  4. Disattiva il backfill automatico per una sessione di gioco. È possibile decidere di arrestare il backfill automatico in qualsiasi momento durante una singola sessione di gioco. Per interrompere il backfill automatico, aggiungi del codice al tuo client di gioco o al server di gioco per effettuare la chiamata StopMatchmakingall'GameLiftAPI Amazon. Questa chiamata richiede un ID ticket. Utilizza l'ID ticket di backfill nell'ultima richiesta di backfill. Puoi ottenere queste informazioni dai dati di abbinamento della sessione di gioco, che vengono aggiornati come descritto nel passaggio precedente.

Invia richieste di backfill (da un server di gioco)

Puoi avviare le richieste di backfill degli abbinamenti direttamente dal processo del server di gioco che ospita la sessione di gioco. Il processo del server contiene la maggior parte delle up-to-date informazioni sui giocatori attualmente connessi al gioco e sullo stato delle slot vuote.

Questo argomento presuppone che tu abbia già compilato i componenti di FlexMatch necessari e aggiunto correttamente i processi di abbinamento al server di gioco e a un servizio di gioco lato client. Per ulteriori dettagli sulla configurazione di FlexMatch, consulta la sezione FlexMatchintegrazione con Amazon GameLift hosting.

Per abilitare il backfill degli abbinamenti per il gioco, aggiungi la funzionalità seguente:

  • Invio delle richieste di backfill di abbinamento a un matchmaker e monitoraggio dello stato delle richieste.

  • Aggiornamento delle informazioni di abbinamento per la sessione di gioco. Consultare Aggiorna i dati delle partite sul server di gioco.

Come per altre funzionalità del server, un server di gioco utilizza Amazon GameLift Server SDK. Questo SDK è disponibile in C++ e C#.

Per effettuare le richieste di backfill degli abbinamenti dal server di gioco, completa le attività seguenti.

  1. Attivare una richiesta di backfill degli abbinamenti. Solitamente, è consigliabile avviare una richiesta di backfill ogni volta che per un gioco abbinato sono presenti uno o più slot giocatori vuoti. È consigliabile collegare le richieste di backfill a circostanze specifiche, ad esempio ricoprire i ruoli di personaggi importanti o bilanciare i team. È inoltre opportuno limitare l'attività di backfilling in base alla durata della sessione di gioco.

  2. Creare una richiesta di backfill. Aggiungere del codice per creare e inviare le richieste di backfill degli abbinamenti a un matchmaker FlexMatch. Le richieste di backfill vengono gestite tramite queste API server:

    Per creare una richiesta di backfill, richiamare StartMatchBackfill con le informazioni seguenti. Per annullare una richiesta di backfill, richiamare StopMatchBackfill con l'ID del ticket della richiesta di backfill.

    • Ticket ID: fornisci un ID del ticket per il matchmaking (o scegli di farli generare automaticamente). È possibile utilizzare lo stesso meccanismo per assegnare gli ID dei ticket alle richieste di backfill e di abbinamento. Tali ticket vengono elaborati nello stesso modo.

    • Matchmaker: identifica quale matchmaker utilizzare per la richiesta di backfill. In genere, è consigliabile utilizzare lo stesso matchmaker utilizzato per creare l'abbinamento originale. Per questa richiesta è necessario un ARN di configurazione dell'abbinamento. Queste informazioni sono memorizzate nell'oggetto della sessione di gioco (GameSession), che è stato fornito al processo del server da Amazon al GameLift momento dell'attivazione della sessione di gioco. L'ARN di configurazione dell'abbinamento è incluso nella proprietà MatchmakerData.

    • ARN della sessione di gioco: identifica la sessione di gioco da riempire. Puoi ottenere l'ARN della sessione di gioco chiamando l'API del server GetGameSessionId(). Durante il processo di abbinamento, i ticket delle nuove richieste non dispongono di un ID della sessione di gioco, a differenza dei ticket delle richieste di backfill. La presenza dell'ID della sessione di gioco consente di distinguere i ticket dei nuovi abbinamenti dai ticket di backfill.

    • Dati del giocatore: includi le informazioni sul giocatore (giocatore) relative a tutti i giocatori in corso nella sessione di gioco che stai compilando. Queste informazioni consentono al matchmaker di individuare gli abbinamenti di giocatori migliori possibili per i giocatori attualmente nella sessione di gioco. Devi includere l'appartenenza alla squadra per ogni giocatore. Non specificare una squadra se non utilizzi il backfill. Se il server di gioco segnala con precisione lo stato di connessione del giocatore, dovrebbe essere possibile acquisire questi dati come segue:

      1. Il processo del server che ospita la sessione di gioco dovrebbe contenere la maggior parte delle up-to-date informazioni su quali giocatori sono attualmente connessi alla sessione di gioco.

      2. Per ottenere gli ID dei giocatori, gli attributi e le assegnazioni delle squadre, estrai i dati dei giocatori dall'oggetto della sessione di gioco (GameSession), dalla MatchmakerData proprietà (vediLavora con i dati del matchmaker). I dati del matchmaker includono tutti i giocatori abbinati alla sessione di gioco, pertanto sarà necessario estrarre soltanto i dati relativi ai giocatori attualmente connessi.

      3. Per la latenza dei giocatori, se il matchmaker richiede i dati di latenza, raccogliere nuovi valori di latenza da tutti i giocatori attualmente connessi e includerli in ciascun oggetto Player. Se i dati di latenza vengono omessi e sul matchmaker è impostata una regola di latenza, la richiesta non verrà abbinata correttamente. I dati di latenza sono necessari per le richieste di backfill soltanto per la regione in cui si trova attualmente la sessione di gioco. È possibile risalire alla regione della sessione di gioco dalla proprietà GameSessionId dell'oggetto GameSession; questo valore è un ARN in cui è inclusa la regione.

  3. Tieni traccia dello stato di una richiesta di backfill. Amazon GameLift aggiorna il tuo server di gioco sullo stato delle richieste di backfill utilizzando la funzione di callback Server SDK onUpdateGameSession (vedi Inizializzare il processo del server). Aggiungi codice per gestire i messaggi di stato, nonché gli oggetti della sessione di gioco aggiornati a seguito di richieste di riempimento riuscite, all'indirizzo. Aggiorna i dati delle partite sul server di gioco

    Il matchmaker è in grado di elaborare soltanto una richiesta di backfill degli abbinamenti da una sessione di gioco alla volta. Se devi annullare una richiesta, chiama StopMatchBackfill(). Se è necessario modificare una richiesta, richiamare StopMatchBackfill e inviare una richiesta aggiornata.

Inviare richieste di riempimento (da un servizio clienti)

È consigliabile inviare le richieste di backfill da un servizio di gioco lato client in alternativa al server di gioco. Per utilizzare questa opzione, il servizio lato client deve disporre dell'accesso ai dati correnti sull'attività della sessione di gioco e sulle connessioni del giocatore; se il gioco utilizza un servizio di directory di sessione, questa potrebbe rappresentare una scelta adeguata.

Questo argomento presuppone che tu abbia già compilato i componenti di FlexMatch necessari e aggiunto correttamente i processi di abbinamento al server di gioco e a un servizio di gioco lato client. Per ulteriori dettagli sulla configurazione di FlexMatch, consulta la sezione FlexMatchintegrazione con Amazon GameLift hosting.

Per abilitare il backfill degli abbinamenti per il gioco, aggiungi la funzionalità seguente:

  • Invio delle richieste di backfill di abbinamento a un matchmaker e monitoraggio dello stato delle richieste.

  • Aggiornamento delle informazioni di abbinamento per la sessione di gioco. Per informazioni, consultare Aggiorna i dati delle partite sul server di gioco.

Come per altre funzionalità client, un servizio di gioco lato client utilizza l'AWSSDK con l'API Amazon. GameLift Questo SDK è disponibile in C++, C# e altri linguaggi. Per una descrizione generale delle API dei client, consulta Amazon GameLift Service API Reference, che descrive l'API di servizio di basso livello per le azioni GameLift relative ad Amazon e include collegamenti a guide di riferimento specifiche per la lingua.

Per configurare un servizio di gioco lato client per il backfill dei giochi abbinati, completa le attività seguenti.

  1. Attivare una richiesta di backfill. In genere, un gioco avvia una richiesta di backfill ogni volta che sono presenti uno o più slot giocatori vuoti su un gioco abbinato. È consigliabile collegare le richieste di backfill a circostanze specifiche, ad esempio ricoprire i ruoli di personaggi importanti o bilanciare i team. È inoltre opportuno limitare il backfilling in base alla durata della sessione di gioco. Qualunque sia il trigger utilizzato, saranno necessarie almeno le informazioni riportate di seguito. Puoi ottenere queste informazioni dall'oggetto della sessione di gioco (GameSession) chiamando DescribeGameSessionscon un ID di sessione di gioco.

    • Number of currently empty player slots ( Numero di slot giocatori attualmente vuoti). Questo valore può essere calcolato a partire dal limite massimo di giocatori e dal loro attuale numero in una sessione di gioco. Il numero attuale di giocatori viene aggiornato ogni volta che il server di gioco contatta il GameLift servizio Amazon per convalidare la connessione di un nuovo giocatore o per segnalare un giocatore abbandonato.

    • Creation policy (Policy di creazione). Questa impostazione indica se la sessione di gioco attualmente accetta nuovi giocatori.

    L'oggetto della sessione di gioco contiene altre informazioni potenzialmente utili, tra cui l'ora di inizio della sessione di gioco, le proprietà di gioco personalizzate e i dati del matchmaker.

  2. Creare una richiesta di backfill. Aggiungere del codice per creare e inviare le richieste di backfill degli abbinamenti a un matchmaker FlexMatch. Le richieste di backfill vengono gestite tramite queste API del client:

    Per creare una richiesta di backfill, richiamare StartMatchBackfill con le informazioni seguenti. Una richiesta di backfill è simile a una richiesta di abbinamento (consultare Richiedi il matchmaking per i giocatori), con la differenza che la richiesta di backfill identifica anche la sessione di gioco esistente. Per annullare una richiesta di backfill, richiamare StopMatchmaking con l'ID del ticket della richiesta di backfill.

    • Ticket ID: fornisci un ID del ticket per il matchmaking (o scegli di farli generare automaticamente). È possibile utilizzare lo stesso meccanismo per assegnare gli ID dei ticket alle richieste di backfill e di abbinamento. Tali ticket vengono elaborati nello stesso modo.

    • Matchmaker: identifica il nome di una configurazione di matchmaking da utilizzare. In genere, è consigliabile utilizzare per il backfilling lo stesso matchmaker utilizzato per creare l'abbinamento originale. Queste informazioni si trovano in una MatchmakerData proprietà dell'oggetto della sessione di gioco (GameSession), sotto la configurazione del matchmaking ARN. Il valore del nome è la stringa che segue ""matchmakingconfiguration/" (ad esempio, nel valore ARN ""arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MM-4v4", il nome della configurazione di abbinamento è "MM-4v4").

    • ARN della sessione di gioco: specifica la sessione di gioco da riempire. Utilizzare la proprietà GameSessionId dall'oggetto della sessione di gioco; questo ID utilizza il valore ARN richiesto. I ticket di matchmaking (MatchmakingTicket) per le richieste di backfill hanno l'ID della sessione di gioco durante l'elaborazione; i ticket per nuove richieste di matchmaking non ottengono un ID di sessione di gioco finché la partita non viene piazzata; la presenza dell'ID della sessione di gioco è un modo per distinguere tra i biglietti per le nuove partite e i biglietti per i backfill.

    • Dati del giocatore: includi le informazioni sul giocatore (giocatore) relative a tutti i giocatori in corso nella sessione di gioco che stai compilando. Queste informazioni consentono al matchmaker di individuare gli abbinamenti di giocatori migliori possibili per i giocatori attualmente nella sessione di gioco. Devi includere l'appartenenza alla squadra per ogni giocatore. Non specificare una squadra se non utilizzi il backfill. Se il server di gioco segnala con precisione lo stato di connessione del giocatore, dovrebbe essere possibile acquisire questi dati come segue:

      1. Chiama DescribePlayerSessions() con l'ID della sessione di gioco per scoprire tutti i giocatori attualmente connessi alla sessione di gioco. Ogni sessione giocatore include un ID giocatore. È possibile aggiungere un filtro dello stato per recuperare soltanto le sessioni giocatore attive.

      2. Estrai i dati del giocatore dall'oggetto della sessione di gioco (GameSession), MatchmakerData dalla proprietà (vediLavora con i dati del matchmaker. Utilizzare gli ID giocatore acquisiti nella fase precedente per ottenere i dati soltanto sui giocatori attualmente connessi. Dal momento che i dati del matchmaker non vengono aggiornati quando i giocatori abbandonano la sessione di gioco, sarà necessario estrarre soltanto i dati sui giocatori correnti.

      3. Per la latenza dei giocatori, se il matchmaker richiede i dati di latenza, raccogliere nuovi valori di latenza da tutti i giocatori attualmente connessi e includerli nell'oggetto Player. Se i dati di latenza vengono omessi e sul matchmaker è impostata una regola di latenza, la richiesta non verrà abbinata correttamente. I dati di latenza sono necessari per le richieste di backfill soltanto per la regione in cui si trova attualmente la sessione di gioco. È possibile risalire alla regione della sessione di gioco dalla proprietà GameSessionId dell'oggetto GameSession; questo valore è un ARN in cui è inclusa la regione.

  3. Monitorare lo stato della richiesta di backfill. Aggiungere del codice per restare in attesa degli aggiornamenti dello stato del ticket di abbinamento. È possibile utilizzare il meccanismo configurato per monitorare i ticket delle nuove richieste di abbinamento (consultare Tieni traccia degli eventi di matchmaking) tramite le notifiche eventi (impostazione preferita) o il polling. Anche se non è necessario attivare l'attività di accettazione da parte dei giocatori con le richieste di backfill, e anche se le informazioni sui giocatori vengono aggiornate sul server di gioco, è comunque necessario monitorare lo stato del ticket per gestire gli errori e i nuovi invii delle richieste.

    Il matchmaker è in grado di elaborare soltanto una richiesta di backfill degli abbinamenti da una sessione di gioco alla volta. Se è necessario annullare una richiesta, richiamare StopMatchmaking. Se è necessario modificare una richiesta, richiamare StopMatchmaking e inviare una richiesta aggiornata.

    Una volta che una richiesta di backfill ha esito positivo, il server di gioco riceve un oggetto GameSession aggiornato e gestisce le attività richieste per aggiungere nuovi giocatori alla sessione di gioco. Ulteriori informazioni su Aggiorna i dati delle partite sul server di gioco.

Aggiorna i dati delle partite sul server di gioco

Indipendentemente dal modo in cui avvii le richieste di backfill delle partite nel tuo gioco, il tuo server di gioco deve essere in grado di gestire gli aggiornamenti delle sessioni di gioco che Amazon GameLift fornisce in seguito alle richieste di backfill delle partite.

Quando Amazon GameLift completa una richiesta di match backfill, con successo o meno, chiama il tuo server di gioco utilizzando la funzione di callback. onUpdateGameSession Questa chiamata ha tre parametri di input: un ID del ticket di backfill della partita, un messaggio di stato e un GameSession oggetto contenente la maggior parte dei dati di up-to-date matchmaking, comprese le informazioni sul giocatore. È necessario aggiungere il codice seguente al server di gioco come parte dell'integrazione del server di gioco:

  1. Implementare la funzione onUpdateGameSession. Questa funzione deve essere in grado di gestire i seguenti messaggi di stato (updateReason):

    • MATCHMAKING_DATA_UPDATED — I nuovi giocatori sono stati abbinati con successo alla sessione di gioco. L'oggetto GameSession contiene i dati del matchmaker aggiornati, inclusi i dati sui giocatori esistenti e su quelli appena abbinati.

    • BACKFILL_FAILED — Il tentativo di backfill della corrispondenza non è riuscito a causa di un errore interno. L'oggetto GameSession non viene modificato.

    • BACKFILL_TIMED_OUT — Il matchmaker non è riuscito a trovare una corrispondenza di riempimento entro il limite di tempo. L'oggetto GameSession non viene modificato.

    • BACKFILL_CANCELLED — La richiesta di backfill della partita è stata annullata da una chiamata a StopMatchmaking (client) o (server). StopMatchBackfill L'oggetto GameSession non viene modificato.

  2. Per gli abbinamenti di backfill corretti, utilizzare i dati del matchmaker aggiornati per gestire i nuovi giocatori che si connettono alla sessione di gioco. Per consentire ai giocatori di iniziare a giocare, è necessario utilizzare almeno le assegnazioni al team per i nuovi giocatori, nonché altri attributi giocatore richiesti.

  3. Nella chiamata del tuo server di gioco all'azione Server SDK ProcessReady(), aggiungi il nome del metodo di onUpdateGameSession callback come parametro di processo.