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à.
Integrazione Amazon GameLift Servers con un progetto client di gioco Unity
Nota
Questo argomento fornisce informazioni su una versione precedente del Amazon GameLift Servers plug-in per Unity. La versione 1.0.0 (rilasciata nel 2021) utilizza l'SDK del server per Amazon GameLift Servers 4.x o versioni precedenti. Per la documentazione sull'ultima versione del plug-in, che utilizza il server SDK 5.x e supporta Anywhere, consulta. Amazon GameLift Servers Amazon GameLift Serversplugin per Unity (server SDK 5.x)
Questo argomento ti aiuta a configurare un client di gioco per connetterti alle sessioni di gioco Amazon GameLift Servers ospitate tramite un servizio di backend. Utilizzalo Amazon GameLift Servers APIs per avviare il matchmaking, richiedere il posizionamento della sessione di gioco e altro ancora.
Aggiungi codice al progetto del servizio di backend per consentire la comunicazione con il servizio. Amazon GameLift Servers Un servizio di backend gestisce tutte le comunicazioni del client di gioco con il GameLift servizio. Per ulteriori informazioni sui servizi di backend, consulta.
Un server di backend gestisce le seguenti attività del client di gioco:
-
Personalizza l'autenticazione per i tuoi giocatori.
-
Richiedere informazioni su sessioni di gioco attive dal servizio Amazon GameLift Servers.
-
Crea una nuova sessione di gioco.
-
Aggiungi un giocatore a una sessione di gioco esistente.
-
Rimuovi un giocatore da una sessione di gioco esistente.
Argomenti
Prerequisiti
Prima di configurare la comunicazione del server di gioco con il Amazon GameLift Servers client, completa le seguenti attività:
Inizializza un client di gioco
Nota
Questo argomento si riferisce al Amazon GameLift Servers plugin per la versione 1.0.0 di Unity, che utilizza il server SDK 4.x o precedente.
Aggiungi codice per inizializzare un client di gioco. Esegui questo codice all'avvio, è necessario per altre Amazon GameLift Servers funzioni.
-
Inizializza
AmazonGameLiftClient
. ChiamaAmazonGameLiftClient
con una configurazione client predefinita o una configurazione personalizzata. Per ulteriori informazioni su come configurare un client, vedereConfigura Amazon GameLift Servers su un servizio di backend. -
Genera un ID giocatore univoco per ogni giocatore per connettersi a una sessione di gioco. Per ulteriori informazioni, consulta Genera giocatore IDs.
Gli esempi seguenti mostrano come configurare un Amazon GameLift Servers client.
public class GameLiftClient { private GameLift gl; //A sample way to generate random player IDs. bool includeBrackets = false; bool includeDashes = true; string playerId = AZ::Uuid::CreateRandom().ToString<string>(includeBrackets, includeDashes); private Amazon.GameLift.Model.PlayerSession psession = null; public AmazonGameLiftClient aglc = null; public void CreateGameLiftClient() { //Access Amazon GameLift Servers service by setting up a configuration. //The default configuration specifies a location. var config = new AmazonGameLiftConfig(); config.RegionEndpoint = Amazon.RegionEndpoint.USEast1; CredentialProfile profile = null; var nscf = new SharedCredentialsFile(); nscf.TryGetProfile(profileName, out profile); AWSCredentials credentials = profile.GetAWSCredentials(null); //Initialize Amazon GameLift Servers Client with default client configuration. aglc = new AmazonGameLiftClient(credentials, config); } }
Crea una sessione di gioco su una flotta specifica
Nota
Questo argomento si riferisce al Amazon GameLift Servers plug-in per la versione 1.0.0 di Unity, che utilizza il server SDK 4.x o precedente.
Aggiungere codice per avviare nuove sessioni di gioco nei parchi di istanze distribuite e renderle disponibili ai giocatori. Dopo Amazon GameLift Servers aver creato la nuova sessione di gioco e aver restituito unGameSession
, puoi aggiungervi giocatori.
-
Effettua una richiesta per una nuova sessione di gioco.
-
Se il gioco utilizza flotte, chiama
CreateGameSession()
con un ID flotta o alias, un nome di sessione e il numero massimo di giocatori simultanei per la partita. -
Se il gioco utilizza code, chiama.
StartGameSessionPlacement()
-
L'esempio seguente mostra come creare una sessione di gioco.
public Amazon.GameLift.Model.GameSession() { var cgsreq = new Amazon.GameLift.Model.CreateGameSessionRequest(); //A unique identifier for the alias with the fleet to create a game session in. cgsreq.AliasId = aliasId; //A unique identifier for a player or entity creating the game session cgsreq.CreatorId = playerId; //The maximum number of players that can be connected simultaneously to the game session. cgsreq.MaximumPlayerSessionCount = 4; //Prompt an available server process to start a game session and retrieves connection information for the new game session Amazon.GameLift.Model.CreateGameSessionResponse cgsres = aglc.CreateGameSession(cgsreq); string gsid = cgsres.GameSession != null ? cgsres.GameSession.GameSessionId : "N/A"; Debug.Log((int)cgsres.HttpStatusCode + " GAME SESSION CREATED: " + gsid); return cgsres.GameSession; }
Aggiungere giocatori alle sessioni di gioco
Nota
Questo argomento si riferisce al Amazon GameLift Servers plug-in per Unity versione 1.0.0, che utilizza il server SDK 4.x o precedente.
Dopo Amazon GameLift Servers aver creato la nuova sessione di gioco e aver restituito un GameSession
oggetto, puoi aggiungervi giocatori.
-
Riserva uno slot per giocatori in una sessione di gioco creando una nuova sessione di gioco. Usa
CreatePlayerSession
oCreatePlayerSessions
con l'ID della sessione di gioco e un ID univoco per ogni giocatore. -
Connect alla sessione di gioco. Recupera l'
PlayerSession
oggetto per ottenere le informazioni di connessione della sessione di gioco. Puoi usare queste informazioni per stabilire una connessione diretta al processo del server:-
Utilizzate la porta specificata e il nome DNS o l'indirizzo IP del processo server.
-
Usa il nome DNS e la porta delle tue flotte. Il nome e la porta DNS sono obbligatori se le tue flotte hanno abilitato la generazione di certificati TLS.
-
Fai riferimento all'ID della sessione del giocatore. L'ID della sessione del giocatore è necessario se il server di gioco convalida le connessioni dei giocatori in entrata.
-
Gli esempi seguenti mostrano come riservare un posto giocatore in una sessione di gioco.
public Amazon.GameLift.Model.PlayerSession CreatePlayerSession(Amazon.GameLift.Model.GameSession gsession) { var cpsreq = new Amazon.GameLift.Model.CreatePlayerSessionRequest(); cpsreq.GameSessionId = gsession.GameSessionId; //Specify game session ID. cpsreq.PlayerId = playerId; //Specify player ID. Amazon.GameLift.Model.CreatePlayerSessionResponse cpsres = aglc.CreatePlayerSession(cpsreq); string psid = cpsres.PlayerSession != null ? cpsres.PlayerSession.PlayerSessionId : "N/A"; return cpsres.PlayerSession; }
Il codice seguente illustra come connettere un giocatore alla sessione di gioco.
public bool ConnectPlayer(int playerIdx, string playerSessionId) { //Call ConnectPlayer with player ID and player session ID. return server.ConnectPlayer(playerIdx, playerSessionId); }
Rimuovere un giocatore da una sessione di gioco
Nota
Questo argomento si riferisce al Amazon GameLift Servers plug-in per la versione 1.0.0 di Unity, che utilizza il server SDK 4.x o precedente.
Puoi rimuovere i giocatori dalla sessione di gioco quando escono dal gioco.
-
Notifica al Amazon GameLift Servers servizio che un giocatore si è disconnesso dal processo del server. Chiama
RemovePlayerSession
con l'ID di sessione del giocatore. -
Verifica che venga
RemovePlayerSession
restituitoSuccess
. Quindi, Amazon GameLift Servers cambia lo slot del giocatore rendendolo disponibile, che Amazon GameLift Servers può assegnare a un nuovo giocatore.
L'esempio seguente illustra come rimuovere una sessione di gioco.
public void DisconnectPlayer(int playerIdx) { //Receive the player session ID. string playerSessionId = playerSessions[playerIdx]; var outcome = GameLiftServerAPI.RemovePlayerSession(playerSessionId); if (outcome.Success) { Debug.Log (":) PLAYER SESSION REMOVED"); } else { Debug.Log(":(PLAYER SESSION REMOVE FAILED. RemovePlayerSession() returned " + outcome.Error.ToString()); } }