

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

# Integra il gateway del giocatore in un gioco
<a name="ddos-protection-integrate"></a>

Dopo aver creato una flotta di giocatori abilitata al gateway per i giocatori, devi aggiornare il client di gioco e il backend di gioco per integrarli con Player Gateway. Il backend di gioco recupera gli endpoint relay e i token del gateway del giocatore, quindi li fornisce ai client di gioco. I client di gioco inviano tutto il traffico UDP a questi endpoint di inoltro.

L'integrazione segue questo percorso di chiamata:

1. Il backend di gioco chiama l'`GetPlayerConnectionDetails`API per recuperare gli endpoint di inoltro e i token gateway del giocatore per ogni giocatore in una sessione di gioco.

1. Il backend di gioco invia gli endpoint relay e i token gateway del giocatore al client di gioco.

1. Il client di gioco aggiunge il token gateway del giocatore a tutti i pacchetti UDP in uscita e invia i pacchetti agli endpoint di inoltro.

1. La rete di inoltro convalida il token gateway del giocatore e indirizza il traffico verso il server di gioco.

1. Il server di gioco invia il traffico al client di gioco attraverso gli stessi percorsi di inoltro.

## Integrazione con il backend
<a name="ddos-protection-integrate-backend"></a>

Il backend del gioco deve chiamare l'`GetPlayerConnectionDetails`API per recuperare gli endpoint di inoltro e i token di accesso ai giocatori. Il backend fornisce quindi queste informazioni ai client di gioco.

### GetPlayerConnectionDetails API
<a name="ddos-protection-integrate-backend-api"></a>

L'`GetPlayerConnectionDetails`API restituisce i dettagli di connessione per i giocatori in una sessione di gioco:

Endpoint e token di inoltro  
Quando il player gateway è abilitato e supportato nella località, restituisce:  
+ Endpoint di **inoltro: più endpoint** di inoltro (indirizzo IP e porta) che variano a seconda dei giocatori
+ **Token gateway Player**: token che il client deve anteporre a tutti i pacchetti UDP (valido per almeno 3 minuti)
+ Scadenza: orario di **scadenza** del token Player Gateway

Connessione diretta  
Quando il gateway del giocatore non è abilitato o non è supportato nella località, restituisce l'indirizzo IP e la porta del server di gioco

Il client di gioco deve essere progettato per gestire entrambi i tipi di connessione.

Esempio di chiamata API:

```
// C++ example using AWS SDK
Aws::GameLift::GameLiftClient client;
Aws::GameLift::Model::GetPlayerConnectionDetailsRequest request;
request.SetGameSessionId(gameSessionId);
request.SetPlayerIds(playerIds);  // Vector of player IDs

auto outcome = client.GetPlayerConnectionDetails(request);
if (outcome.IsSuccess()) {
    auto result = outcome.GetResult();
    auto connectionDetails = result.GetPlayerConnectionDetails();
    
    // Process each player's connection details
    for (const auto& detail : connectionDetails) {
        std::string playerId = detail.GetPlayerId();
        
        // Get relay endpoints (IP address and port)
        auto endpoints = detail.GetEndpoints();
        for (const auto& endpoint : endpoints) {
            std::string ipAddress = endpoint.GetIpAddress();
            int port = endpoint.GetPort();
        }
        
        // Get player gateway token
        auto token = detail.GetPlayerGatewayToken();
        
        // Get expiration time
        auto expiration = detail.GetExpiration();
        
        // Send endpoints and token to game client
    }
}
```

Vedi [GetPlayerConnectionDetails](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_GetPlayerConnectionDetails.html)nell'*Amazon GameLift ServersAPI Reference*.

### Aggiorna gli endpoint del relè
<a name="ddos-protection-integrate-backend-refresh"></a>

Chiama `GetPlayerConnectionDetails` periodicamente per fornire ai giocatori gli endpoint aggiornati quando gli endpoint delle staffette non funzionano correttamente. Consigliamo di chiamare l'API ogni 60 secondi per tutti i giocatori in una sessione di gioco. Per ottimizzare l'utilizzo dell'API, raggruppa più giocatori IDs in un'unica chiamata API.

**Importante**  
Le chiamate di aggiornamento regolari sono il meccanismo principale per fornire endpoint aggiornati ai giocatori. Sebbene i token gateway dei giocatori rimangano validi per almeno 3 minuti, l'aggiornamento ogni 60 secondi garantisce ai giocatori di ricevere regolarmente gli endpoint aggiornati.

## Integrazione con i client
<a name="ddos-protection-integrate-client"></a>

Il client di gioco deve anteporre i token del gateway del giocatore a tutti i pacchetti UDP in uscita e inviare i pacchetti agli endpoint di inoltro forniti. Il Amazon GameLift Servers client SDK for C\$1\$1 e Unreal Engine fornisce utilità per semplificare questa integrazione.

### Requisiti del cliente
<a name="ddos-protection-integrate-client-requirements"></a>

Per indirizzare il traffico attraverso il gateway del giocatore, il client di gioco deve:
+ **Anteponi i token del gateway del giocatore: sostituisci il token gateway** del giocatore a tutti i pacchetti UDP in uscita. I token gateway del giocatore non devono essere crittografati e devono apparire all'inizio di ogni pacchetto. I pacchetti senza un token gateway per il giocatore valido verranno eliminati.
+ **Invia agli endpoint di inoltro**: invia tutti i pacchetti UDP agli endpoint di inoltro forniti.
+ **Mantieni l'attività di connessione**: assicurati che il client di gioco invii un pacchetto al server di gioco o che il server di gioco invii un pacchetto al giocatore, almeno una volta ogni 30 secondi. Questa attività mantiene la connessione attraverso la rete di inoltro.
+ **Gestisci gli aggiornamenti degli endpoint**: accetta endpoint relay e token player gateway aggiornati dal tuo backend (consigliato ogni 60 secondi) e passa a nuovi endpoint senza interrompere la connessione.

### Client SDK
<a name="ddos-protection-integrate-client-sdk"></a>

Il Amazon GameLift Servers client SDK for C\$1\$1 e Unreal Engine fornisce utilità per semplificare l'integrazione del player gateway:
+ **Gestione dei token: aggiunge** i token gateway del giocatore a tutti i pacchetti UDP in uscita.
+ **Selezione degli endpoint**: indirizza il traffico verso gli endpoint di inoltro utilizzando un algoritmo configurabile.
+ **Aggiornamento degli endpoint**: pianifica callback periodici per recuperare gli endpoint di inoltro e i token del player gateway aggiornati dal backend.

### Algoritmi di selezione degli endpoint
<a name="ddos-protection-integrate-client-algorithms"></a>

L'SDK del client fornisce due algoritmi integrati per la selezione dell'endpoint di inoltro da utilizzare:

Algoritmo di fallback  
Utilizza un endpoint finché non diventa incompleto, quindi passa a un altro endpoint. Ideale per menu, lobby e giochi a turni in cui sono accettabili brevi interruzioni. Durante il failover degli endpoint, i pacchetti potrebbero andare persi per il periodo di timeout configurato (impostazione predefinita: 2 secondi).

Algoritmo di rotazione predittiva  
Ruota continuamente tra tutti gli endpoint disponibili e prevede i guasti prima che si verifichino. Ideale per giochi in tempo reale come sparatutto in prima persona e giochi di corse in cui la consegna costante dei pacchetti è fondamentale. Richiede che il server di gioco invii messaggi con una frequenza costante.

Puoi anche implementare algoritmi personalizzati estendendo la classe di algoritmi base dell'SDK.

### Risorse Client SDK
<a name="ddos-protection-integrate-client-resources"></a>

Per istruzioni complete sull'integrazione e codice di esempio, consulta le seguenti risorse:

C\$1\$1  
Un client SDK per C\$1\$1 è [Amazon GameLift Serversdisponibile presso client SDK for](https://github.com/amazon-gamelift/amazon-gamelift-servers-client-sdk-for-cpp) C\$1\$1.

Unreal Engine  
Un plug-in per Unreal Engine è disponibile presso il [Amazon GameLift Serversclient](https://github.com/amazon-gamelift-for-unreal/amazon-gamelift-servers-client-sdk-for-unreal) SDK for Unreal Engine. L'accesso richiede l'iscrizione all'organizzazione Epic Games il. GitHub Vedi [Unreal Engine su GitHub per maggiori dettagli](https://www.unrealengine.com/en-US/ue-on-github).

## Metti alla prova la tua integrazione
<a name="ddos-protection-integrate-testing"></a>

Prima di passare a una flotta, verifica l'integrazione del player gateway a livello locale utilizzando lo strumento di test player gateway. Questo strumento simula l'infrastruttura proxy UDP del gateway del giocatore e ti aiuta a verificare che il tuo client di gioco inserisca correttamente i token del gateway del giocatore, instrada il traffico attraverso più endpoint e gestisca il degrado della rete.

[Per istruzioni di configurazione e utilizzo, consulta l'app Player Gateway Testing su.](https://github.com/amazon-gamelift/amazon-gamelift-toolkit/tree/main/player-gateway-testing-app) GitHub

## Best practice
<a name="ddos-protection-integrate-best-practices"></a>

Segui queste best practice per integrare player gateway:
+ **Aggiorna gli endpoint ogni 60 secondi: chiama `GetPlayerConnectionDetails` ogni 60 secondi** per assicurarti che i giocatori ricevano regolarmente gli endpoint aggiornati.
+ **Chiamate API in batch: quando chiamate** `GetPlayerConnectionDetails` per più giocatori nella stessa sessione di gioco, raggruppate le chiamate in batch per ridurre il sovraccarico dell'API.
+ **Mantieni l'attività di connessione**: assicurati che il traffico fluisca tra il client di gioco e il server di gioco almeno una volta ogni 30 secondi. Può trattarsi sia client-to-server del traffico che server-to-client del traffico.
+ **Gestisci gli aggiornamenti degli endpoint con garbo**: quando il client di gioco riceve endpoint aggiornati dal backend, passa ai nuovi endpoint senza interrompere la connessione del giocatore.
+ **Scegli l'algoritmo giusto: seleziona l'algoritmo** di selezione degli endpoint che meglio soddisfa i requisiti del tuo gioco. Usa l'algoritmo di fallback per le partite a turni e l'algoritmo di rotazione predittiva per le partite in tempo reale.