Aggiungi FlexMatch a un client di gioco - 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à.

Aggiungi FlexMatch a un client di gioco

Questo argomento descrive come aggiungere il supporto per il FlexMatch matchmaking ai tuoi servizi di gioco lato client. Il processo è essenzialmente lo stesso indipendentemente dal fatto che tu lo utilizzi FlexMatch con l'hosting GameLift gestito di Amazon o con un'altra soluzione di hosting. Per ulteriori informazioni su FlexMatch e su come impostare un matchmaker personalizzato per i tuoi giochi, consulta i seguenti argomenti:

Per abilitare il FlexMatch matchmaking nel tuo gioco, aggiungi le seguenti funzionalità:

  • Preparati a richiedere il matchmaking per uno o più giocatori (richiesto).

  • Tieni traccia dello stato delle richieste di matchmaking (richiesto).

  • Richiedi l'accettazione del giocatore per una partita proposta (opzionale).

  • Dopo aver creato una sessione di gioco per la nuova partita, ottieni le informazioni sulla connessione del giocatore e partecipa al gioco.

Preparati a richiedere il matchmaking per i giocatori

Consigliamo vivamente al tuo client di gioco di effettuare richieste di matchmaking tramite un servizio di gioco lato client. Utilizzando una fonte attendibile, puoi proteggerti più facilmente dai tentativi di hacking e dai dati di giocatori falsi. Se il gioco ha un servizio di directory di sessione, questa è una buona opzione per gestire le richieste di abbinamento.

Per preparare il servizio client, esegui le attività seguenti:

  • Aggiungi l'GameLiftAPI Amazon. Il tuo servizio clienti utilizza le funzionalità dell'GameLiftAPI Amazon, che fa parte dell'AWSSDK. Consulta GameLiftgli SDK Amazon per i servizi clienti per saperne di più sull'AWSSDK e scaricare la versione più recente. Aggiungi questo SDK al progetto del servizio client di gioco.

  • Configura un sistema di ticket di matchmaking. A tutte le richieste di abbinamento deve essere assegnato un ID ticket univoco. È necessario un meccanismo per generare gli ID univoci e assegnarli alle nuove richieste di abbinamento. Un ID ticket può utilizzare qualsiasi formato di stringa, fino a un massimo di 128 caratteri.

  • Ottieni le informazioni del matchmaker. Ottieni il nome della configurazione di abbinamento che pensi di utilizzare. È inoltre necessario l'elenco del matchmaker di attributi giocatore obbligatori, definiti nel set di regole del matchmaker.

  • Ottenere i dati dei giocatori. Configura un modo per ottenere i dati rilevanti per ogni giocatore. Questo include l'ID giocatore, i valori degli attributi dei giocatori e i dati di latenza aggiornati per ogni regione in cui il giocatore è probabilmente inserito in un gioco.

  • (facoltativo) Abilita il backfill degli abbinamenti. Decidi come eseguire il backfill dei tuoi giochi abbinati esistenti. Se i matchmaker hanno la modalità backfill impostata su "manuale", si potrebbe voler aggiungere il supporto backfill al gioco. Se la modalità backfill è impostata su "automatico", potrebbe essere necessario un modo per disattivarlo per le singole sessioni di gioco. Ulteriori informazioni sulla gestione del backfill degli abbinamenti sono disponibili in Riempi i giochi esistenti con FlexMatch.

Richiedi il matchmaking per i giocatori

Aggiungi il codice al servizio client per creare e gestire le richieste di abbinamento a un matchmaker FlexMatch. Il processo di richiesta del FlexMatch matchmaking è identico per i giochi che utilizzano FlexMatch l'GameLiftmanagedhosting Amazon e per i giochi che utilizzano FlexMatch come soluzione autonoma.

Crea una richiesta di abbinamento:
  • Chiama l'GameLiftAPI Amazon StartMatchmaking. Ogni richiesta deve contenere le seguenti informazioni.

    Matchmaker

    Il nome della configurazione del matchmaking da utilizzare per la richiesta. FlexMatchinserisce ogni richiesta nel pool per il matchmaker specificato e la richiesta viene elaborata in base alla configurazione del matchmaker. Questo include l'applicazione di un limite di tempo, l'indicazione se richiedere l'accettazione degli abbinamenti ai giocatori, la coda da utilizzare durante il posizionamento di una sessione di gioco risultante e così via. Ulteriori informazioni sui matchmaker e sui set di regole sono disponibili in Progetta un FlexMatch matchmaker.

    ID del ticket

    Un ID ticket univoco assegnato alla richiesta. Tutti gli elementi correlati alla richiesta, tra cui gli eventi e le notifiche, fanno riferimento all'ID ticket.

    Dati dei giocatori

    L'elenco dei giocatori per cui vuoi creare un abbinamento. Se uno qualsiasi dei giocatori nella richiesta non soddisfa i requisiti di corrispondenza, in base alle regole di corrispondenza e ai minimi di latenza, la richiesta di abbinamento non produrrà mai una corrispondenza con esito positivo. È possibile includere fino a dieci giocatori in una richiesta di abbinamento. Quando ci sono più giocatori in una richiesta, FlexMatch tenta di creare una singola corrispondenza e assegnare tutti i giocatori alla stessa squadra (selezionata casualmente). Se una richiesta contiene troppi giocatori da inserire in una delle squadre di abbinamento, la richiesta non verrà abbinata. Ad esempio, se hai configurato il matchmaker per creare corrispondenze 2v2 (due squadre di due giocatori), non puoi inviare una richiesta di abbinamento contenente più di due giocatori.

    Nota

    Un giocatore (identificato dal proprio ID giocatore) può essere incluso solo in una richiesta di abbinamento attiva alla volta. Quando crei una nuova richiesta per un giocatore, qualsiasi ticket di abbinamento attivo con lo stesso ID giocatore viene automaticamente annullato.

    Per ogni giocatore elencato, sono inclusi i seguenti dati:

    • ID giocatore: ogni giocatore deve avere un ID giocatore univoco, che viene generato. Vedi Generare gli ID dei giocatori.

    • Attributi del giocatore: se il matchmaker in uso richiede gli attributi del giocatore, la richiesta deve fornire tali attributi per ogni giocatore. Gli attributi di giocatore richiesti sono definiti nel set di regole del matchmaker, che specifica anche il tipo di dati per l'attributo. L'attributo di un giocatore è facoltativo solo quando il set di regole specifica un valore predefinito per l'attributo. La richiesta di abbinamento non potrà mai essere completata se non fornisce gli attributi richiesti per tutti i giocatori. Per ulteriori informazioni sul set di regole del matchmaker e sugli attributi di giocatore, consulta Crea un set di FlexMatch regole e FlexMatch esempi di set di regole.

    • Latenze dei giocatori: se il matchmaker in uso ha una regola di latenza del giocatore, la richiesta deve riportare la latenza per ogni giocatore. I dati di latenza del giocatore sono un elenco di uno o più valori per giocatore. Rappresenta la latenza che il giocatore prova per le regioni nella coda del matchmaker. Se nella richiesta non sono inclusi valori di latenza per un giocatore, il giocatore non può essere abbinato e la richiesta non riesce.

Recupera i dettagli della richiesta di abbinamento:
  • Una volta inviata una richiesta di partita, puoi visualizzare i dettagli della richiesta chiamando DescribeMatchmakingcon l'ID del ticket della richiesta. Questa chiamata restituisce le informazioni sulla richiesta, incluso lo stato corrente. Una volta che una richiesta è stata completata, il ticket contiene anche le informazioni necessarie a un client di gioco per connettersi all'abbinamento.

Annulla una richiesta di abbinamento:
  • Puoi annullare una richiesta di matchmaking in qualsiasi momento chiamando StopMatchmakingcon l'ID del ticket della richiesta.

Tieni traccia degli eventi di matchmaking

Configura le notifiche per tenere traccia degli eventi che Amazon GameLift emette per i processi di matchmaking. Puoi configurare le notifiche direttamente, creando un argomento SNS o utilizzando AmazonEventBridge. Per ulteriori informazioni su come impostare le notifiche, consulta Configurare le notifiche FlexMatch degli eventi. Una volta configurate le notifiche, aggiungi un listener sul servizio del client per rilevare gli eventi e rispondere in base alle esigenze.

È inoltre consigliabile eseguire il backup delle notifiche eseguendo periodicamente il pooling per gli aggiornamenti dello stato quando passa un periodo di tempo significativo senza notifica. Per ridurre al minimo l'impatto sulle prestazioni dell’abbinamento, assicurati di eseguire il pooling solo dopo aver atteso almeno 30 secondi dopo l'invio del ticket di abbinamento o dopo l'ultima notifica ricevuta.

Recupera un ticket di richiesta di matchmaking, incluso lo stato attuale, chiamando DescribeMatchmakingcon l'ID del ticket della richiesta. Consigliamo di eseguire il polling non più di una volta ogni 10 secondi. Questo approccio è utilizzabile solo in scenari di sviluppo a basso volume.

Nota

È consigliabile configurare il gioco con le notifiche degli eventi prima di utilizzare l’abbinamento con volumi elevati, ad esempio con i test del carico di pre-produzione. Tutti i giochi in versione pubblica dovrebbero utilizzare le notifiche indipendentemente dal volume. L'approccio con pooling continuo è appropriato solo per i giochi in sviluppo con un basso utilizzo della funzione di abbinamento.

Richiedi l'accettazione del giocatore

Se stai utilizzando un matchmaker con l'accettazione del giocatore attivata, aggiungi il codice al servizio client per gestire il processo di accettazione del giocatore. La procedura di gestione delle accettazioni da parte dei giocatori è identica per i giochi che utilizzano FlexMatch l'hosting GameLift gestito da Amazon e per i giochi che utilizzano FlexMatch come soluzione autonoma.

Richiesta di accettazione del giocatore per un abbinamento proposto:
  1. Rileva quando un abbinamento proposto richiede l'accettazione del giocatore. Monitora il ticket di abbinamento per rilevare quando lo stato diventa REQUIRES_ACCEPTANCE. Una modifica a questo stato attiva l'FlexMatcheventoMatchmakingRequiresAcceptance.

  2. Ottenere le accettazioni da parte di tutti i giocatori. Crea un meccanismo per presentare i dettagli dell'abbinamento proposto ad ogni giocatore nel ticket di abbinamento. I giocatori devono essere in grado di indicare che accettano o rifiutano l'abbinamento proposto. Puoi recuperare i dettagli della partita DescribeMatchmakingchiamando. I giocatori hanno un tempo limitato per rispondere prima che il matchmaker ritiri l'abbinamento proposto e prosegua.

  3. Riportare le risposte dei giocatori a FlexMatch. Segnala le risposte dei giocatori chiamando AcceptMatchcon accetta o rifiuta. Tutti i giocatori in una richiesta di abbinamento devono accettare l'abbinamento affinché possa essere eseguito.

  4. Gestire i ticket con accettazioni non riuscite. Una richiesta non riesce quando un giocatore dell'abbinamento proposto rifiuta l'abbinamento o non risponde entro il limite di tempo di accettazione. I biglietti dei giocatori che hanno accettato la partita vengono automaticamente restituiti alla biglietteria. I biglietti per i giocatori che non hanno accettato la partita passano allo stato FALLIMENTO e non vengono più processati. Per i biglietti con più giocatori, se uno dei giocatori presenti nel ticket non ha accettato la partita, l'intero ticket viene considerato invalido.

Connettiti a una partita

Aggiungi codice al tuo servizio clienti per gestire una corrispondenza (stato COMPLETED o eventoMatchmakingSucceeded) completata correttamente. Ciò include la notifica ai giocatori dell'abbinamento e la distribuzione delle informazioni di connessione ai client di gioco.

Per i giochi che utilizzano l'hosting GameLift gestito da Amazon, quando una richiesta di matchmaking viene soddisfatta con successo, le informazioni di connessione della sessione di gioco vengono aggiunte al ticket di matchmaking. Recupera un ticket di matchmaking completato chiamando. DescribeMatchmaking Le informazioni sulla connessione includono l'indirizzo IP e la porta della sessione di gioco, nonché un ID sessione del giocatore per ciascun ID giocatore. Ulteriori informazioni in GameSessionConnectionInfo. Il tuo client di gioco può utilizzare queste informazioni per connettersi direttamente alla sessione di gioco della partita. La richiesta di connessione deve includere un ID di sessione del giocatore e un ID giocatore. Questi dati associano il giocatore connesso ai dati della partita della sessione di gioco, che includono le assegnazioni della squadra (vedi GameSession).

Per i giochi che utilizzano altre soluzioni di hosting, incluso Amazon GameLift FleetIQ, devi integrare un meccanismo che consenta ai giocatori in partita di connettersi alla sessione di gioco appropriata.

Esempi di richieste di matchmaking

I seguenti frammenti di codice generano richieste di matchmaking per diversi matchmaker. Come descritto, una richiesta deve fornire gli attributi di giocatore richiesti dal matchmaker in uso, come definito nel set di regole del matchmaker. L'attributo fornito deve utilizzare lo stesso tipo di dati, numero (N) o stringa (S) definiti nel set di regole.

# Uses matchmaker for two-team game mode based on player skill level def start_matchmaking_for_cowboys_vs_aliens(config_name, ticket_id, player_id, skill, team): response = gamelift.start_matchmaking( ConfigurationName=config_name, Players=[{ "PlayerAttributes": { "skill": {"N": skill} }, "PlayerId": player_id, "Team": team }], TicketId=ticket_id) # Uses matchmaker for monster hunter game mode based on player skill level def start_matchmaking_for_players_vs_monster(config_name, ticket_id, player_id, skill, is_monster): response = gamelift.start_matchmaking( ConfigurationName=config_name, Players=[{ "PlayerAttributes": { "skill": {"N": skill}, "desiredSkillOfMonster": {"N": skill}, "wantsToBeMonster": {"N": int(is_monster)} }, "PlayerId": player_id }], TicketId=ticket_id) # Uses matchmaker for brawler game mode with latency def start_matchmaking_for_three_team_brawler(config_name, ticket_id, player_id, skill, role): response = gamelift.start_matchmaking( ConfigurationName=config_name, Players=[{ "PlayerAttributes": { "skill": {"N": skill}, "character": {"S": [role]}, }, "PlayerId": player_id, "LatencyInMs": { "us-west-2": 20} }], TicketId=ticket_id) # Uses matchmaker for multiple game modes and maps based on player experience def start_matchmaking_for_multi_map(config_name, ticket_id, player_id, skill, maps, modes): response = gamelift.start_matchmaking( ConfigurationName=config_name, Players=[{ "PlayerAttributes": { "experience": {"N": skill}, "gameMode": {"SL": modes}, "mapPreference": {"SL": maps} }, "PlayerId": player_id }], TicketId=ticket_id)