

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
<a name="match-client"></a>

Questo argomento descrive come aggiungere funzionalità di FlexMatch matchmaking ai componenti di gioco lato client.

Consigliamo vivamente al client di gioco di effettuare richieste di matchmaking tramite un servizio di gioco di backend. Utilizzando questa fonte affidabile per le comunicazioni con il Amazon GameLift Servers servizio, puoi proteggerti più facilmente dai tentativi di hacking e dai falsi dati dei giocatori. Se il gioco ha un servizio di directory di sessione, questa è una buona opzione per gestire le richieste di abbinamento. L'utilizzo di un servizio di gioco di backend per tutte le chiamate al Amazon GameLift Servers servizio è una buona pratica quando si utilizza FlexMatch con l'Amazon GameLift Servershosting e come servizio autonomo.

Gli aggiornamenti lato client sono necessari sia che si utilizzi FlexMatch con l'hosting Amazon GameLift Servers gestito sia come servizio autonomo con un'altra soluzione di hosting. Utilizzando l'API di servizio perAmazon GameLift Servers, che fa parte dell' AWS SDK, aggiungi le seguenti funzionalità:
+ Richiedi il matchmaking per uno o più giocatori (obbligatorio). A seconda del set di regole di matchmaking, questa richiesta potrebbe richiedere alcuni dati specifici del giocatore, inclusi gli attributi e la latenza del giocatore.
+ Tieni traccia dello stato di una richiesta di matchmaking (obbligatorio). In generale, questa attività richiede l'impostazione della notifica degli eventi.
+ Richiedi l'accettazione da parte del giocatore di una partita proposta (opzionale). Questa funzionalità richiede un'interazione aggiuntiva con un giocatore per visualizzare i dettagli della partita e consentirgli di accettare o rifiutare la partita.
+ Ottieni informazioni sulla connessione alla sessione di gioco e partecipa al gioco (obbligatorio). Dopo l'avvio di una sessione di gioco per la nuova partita, recupera le informazioni di connessione per la sessione di gioco e usale per connetterti alla sessione di gioco.

## Attività prerequisite sul lato client
<a name="match-client-setup"></a>

Prima di poter aggiungere funzionalità lato client al gioco, devi eseguire queste operazioni:
+ **Aggiungi l' AWS SDK al tuo servizio di backend.** Il tuo servizio di backend utilizza le funzionalità dell'Amazon GameLift ServersAPI, che fa parte dell'SDK. AWS Consulta [i servizi client Amazon GameLift Servers SDKs per](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-supported.html#gamelift-supported-clients) saperne di più sull' AWS SDK e scaricare la versione più recente. Per le descrizioni e le funzionalità delle API, consulta[Amazon GameLift ServersFlexMatchRiferimento API (AWS SDK)](reference-awssdk-flex.md).
+ **Configura un sistema di ticket di matchmaking.** Tutte le richieste di matchmaking devono avere un ID ticket univoco. Crea un meccanismo per generare ticket unici IDs e assegnarli alle richieste corrispondenti. Un ID ticket può utilizzare qualsiasi formato di stringa, fino a un massimo di 128 caratteri. 
+ **Raccogli informazioni sul tuo matchmaker.** Ottieni le seguenti informazioni dalla configurazione del matchmaking e dal set di regole. 
  + Nome della risorsa di configurazione del matchmaking.
  + L'elenco degli attributi del giocatore, definiti nel set di regole.
+ **Recupera i dati del giocatore.** Imposta un modo per ottenere dati pertinenti per ogni giocatore da includere nelle tue richieste di matchmaking. Hai bisogno dell'ID del giocatore e dei valori degli attributi del giocatore. Se il tuo set di regole prevede regole di latenza o desideri utilizzare i dati sulla latenza per organizzare sessioni di gioco, raccogli i dati sulla latenza per ogni posizione geografica in cui è probabile che il giocatore venga inserito in una partita. Per ottenere misurazioni accurate della latenza, utilizza i beacon ping UDP. Amazon GameLift Servers Questi endpoint consentono di misurare l'effettiva latenza della rete UDP tra i dispositivi dei giocatori e ciascuna delle potenziali sedi di hosting, con conseguenti decisioni di posizionamento più accurate rispetto all'utilizzo dei ping ICMP. [Per ulteriori informazioni sull'utilizzo dei beacon ping UDP per misurare la latenza, consulta i beacon ping UDP.](https://docs.aws.amazon.com/gameliftservers/latest/developerguide/reference-udp-ping-beacons.html)

# Richiedi il matchmaking per i giocatori
<a name="match-client-start"></a>

Aggiungi codice al servizio di backend del gioco per gestire le richieste di matchmaking a un matchmaker. FlexMatch Il processo di richiesta del FlexMatch matchmaking è identico per i giochi che utilizzano l'Amazon GameLift Servershosting e per FlexMatch i giochi che utilizzano FlexMatch come soluzione autonoma.

## Per creare una richiesta di matchmaking:
<a name="match-client-start-request"></a>

Chiama l'Amazon GameLift ServersAPI. [StartMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_StartMatchmaking.html) Ogni richiesta deve contenere le seguenti informazioni.

**Matchmaker**  
Il nome della configurazione di abbinamento da utilizzare per la richiesta. FlexMatch posiziona ogni richiesta nel pool per il matchmaker specificato e la richiesta viene elaborata in base al tipo di 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](match-configuration.md). 

**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.  
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, generato da te. Vedi [Genera giocatore IDs](https://docs.aws.amazon.com/gamelift/latest/developerguide/player-sessions-player-identifiers.html). 
**Importante**  
Quando crei una nuova richiesta di matchmaking che contiene un ID giocatore già incluso in una richiesta di matchmaking attiva esistente, la richiesta esistente viene automaticamente annullata. Tuttavia, non viene inviato un `MatchmakingCancelled` evento per la richiesta annullata. Per monitorare lo stato delle richieste di matchmaking esistenti, usa [DescribeMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeMatchmaking.html)per controllare lo stato della richiesta a intervalli non frequenti (30-60 secondi). La richiesta annullata mostrerà lo stato di con il motivo. `CANCELLED` `Cancelled due to duplicate player`
+ *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 [Costruisci un FlexMatch set di regole](match-rulesets.md) e [FlexMatchesempi di set di regole](match-examples.md).
+ *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. Per ottenere misurazioni accurate della latenza, utilizza Amazon GameLift Servers i beacon di ping UDP. Questi endpoint consentono di misurare l'effettiva latenza della rete UDP tra i dispositivi dei giocatori e una potenziale posizione di hosting, con conseguenti decisioni di posizionamento più accurate rispetto all'utilizzo dei ping ICMP. [Per ulteriori informazioni sull'utilizzo dei beacon ping UDP per misurare la latenza, consulta i beacon di ping UDP.](https://docs.aws.amazon.com/gameliftservers/latest/developerguide/reference-udp-ping-beacons.html)

## Per recuperare i dettagli della richiesta di partita
<a name="match-client-start-retrieve"></a>

Dopo l'invio di una richiesta di incontro, puoi visualizzare i dettagli della richiesta chiamando [DescribeMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeMatchmaking.html)con 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. 

## Per annullare una richiesta di incontro
<a name="match-client-start-cancel"></a>

Puoi annullare una richiesta di matchmaking in qualsiasi momento chiamando [StopMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_StopMatchmaking.html)con l'ID del ticket della richiesta.

# Tieni traccia degli eventi di matchmaking
<a name="match-client-track"></a>

Configura le notifiche per monitorare gli eventi che Amazon GameLift Servers pubblica per i processi di abbinamento. Puoi configurare le notifiche direttamente, creando un argomento SNS o utilizzando Amazon EventBridge. Per ulteriori informazioni su come impostare le notifiche, consulta [Configurare le notifiche FlexMatch degli eventi](match-notification.md). 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 [DescribeMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeMatchmaking.html)con 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
<a name="match-client-accept"></a>

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. Il processo di gestione delle accettazioni da parte dei giocatori è identico per i giochi che utilizzano l'FlexMatchhosting Amazon GameLift Servers gestito 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'evento. FlexMatch `MatchmakingRequiresAcceptance`

1. **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 chiamando. [DescribeMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeMatchmaking.html) I giocatori hanno un tempo limitato per rispondere prima che il matchmaker ritiri l'abbinamento proposto e prosegua.

1. **Riportare le risposte dei giocatori a FlexMatch.** Segnala le risposte dei giocatori chiamando [AcceptMatch](https://docs.aws.amazon.com/gamelift/latest/apireference/API_AcceptMatch.html)con accetta o rifiuta. Tutti i giocatori in una richiesta di abbinamento devono accettare l'abbinamento affinché possa essere eseguito.

1. **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 per i giocatori che hanno accettato la partita vengono automaticamente restituiti al pool di biglietti. I ticket per i giocatori che non hanno accettato la partita passano allo stato FAILURE e non vengono più elaborati. Per i biglietti con più giocatori, se uno dei giocatori presenti nel ticket non ha accettato la partita, l'intero ticket non va a buon fine.

# Connect a una partita
<a name="match-client-connect"></a>

Aggiungi codice al tuo servizio clienti per gestire una partita formata correttamente (stato `COMPLETED` o evento`MatchmakingSucceeded`). 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 Amazon GameLift Servers gestito, quando una richiesta di matchmaking viene soddisfatta con successo, le informazioni di connessione alla sessione di gioco vengono aggiunte al ticket di matchmaking. Recupera un ticket di matchmaking completato chiamando. [DescribeMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeMatchmaking.html) 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](https://docs.aws.amazon.com/gamelift/latest/apireference/API_GameSessionConnectionInfo.html). 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 delle partite della sessione di gioco, che includono le assegnazioni delle squadre (vedi [GameSession](https://docs.aws.amazon.com/gamelift/latest/apireference/API_GameSession.html)). 

Per i giochi che utilizzano altre soluzioni di hosting, ad esempio Amazon GameLift ServersFleetIQ, è necessario creare un meccanismo che consenta ai giocatori di connettersi alla sessione di gioco appropriata. 

# Esempi di richieste di matchmaking
<a name="match-client-sample"></a>

I seguenti frammenti di codice creano 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)
```