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
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:
-
Il backend di gioco chiama l'
GetPlayerConnectionDetailsAPI per recuperare gli endpoint di inoltro e i token gateway del giocatore per ogni giocatore in una sessione di gioco. -
Il backend di gioco invia gli endpoint relay e i token gateway del giocatore al client di gioco.
-
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.
-
La rete di inoltro convalida il token gateway del giocatore e indirizza il traffico verso il server di gioco.
-
Il server di gioco invia il traffico al client di gioco attraverso gli stessi percorsi di inoltro.
Integrazione con il backend
Il backend del gioco deve chiamare l'GetPlayerConnectionDetailsAPI 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
L'GetPlayerConnectionDetailsAPI 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 GetPlayerConnectionDetailsnell'Amazon GameLift ServersAPI Reference.
Aggiorna gli endpoint del relè
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
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++ e Unreal Engine fornisce utilità per semplificare questa integrazione.
Requisiti del cliente
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
Il Amazon GameLift Servers client SDK for C++ 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
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
Per istruzioni complete sull'integrazione e codice di esempio, consulta le seguenti risorse:
- C++
-
Un client SDK per C++ è Amazon GameLift Serversdisponibile presso client SDK for
C++. - Unreal Engine
-
Un plug-in per Unreal Engine è disponibile presso il Amazon GameLift Serversclient
SDK for Unreal Engine. L'accesso richiede l'iscrizione all'organizzazione Epic Games il. GitHub Vedi Unreal Engine su GitHub per maggiori dettagli .
Metti alla prova la tua integrazione
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.
Best practice
Segui queste best practice per integrare player gateway:
-
Aggiorna gli endpoint ogni 60 secondi: chiama
GetPlayerConnectionDetailsogni 60 secondi per assicurarti che i giocatori ricevano regolarmente gli endpoint aggiornati. -
Chiamate API in batch: quando chiamate
GetPlayerConnectionDetailsper 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.