As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Integre a Amazon GameLift com um projeto de cliente de jogo Unity
nota
Este tópico fornece informações para uma versão anterior do GameLift plug-in da Amazon para Unity. A versão 1.0.0 (lançada em 2021) usa o GameLift servidor Amazon SDK 4.x ou anterior. Para obter a documentação sobre a versão mais recente do plug-in, que usa o servidor SDK 5.x e é compatível com a Amazon GameLift Anywhere, consulteGuia do GameLift plugin Amazon para Unity para servidor SDK 5.x.
Este tópico ajuda você a configurar um cliente de jogo para se conectar às sessões de jogos GameLift hospedadas pela Amazon por meio de um serviço de back-end. Use GameLift APIs a Amazon para iniciar matchmaking, solicitar colocação em sessão de jogo e muito mais.
Adicione código ao projeto de serviço de back-end para permitir a comunicação com o GameLift serviço da Amazon. Um serviço de back-end gerencia toda a comunicação do cliente do jogo com o GameLift serviço. Para obter mais informações sobre esses serviços de back-end, consulte .
Um servidor de back-end executa as seguintes tarefas do cliente do jogo:
-
Personalize a autenticação para seus jogadores.
-
Solicite informações sobre sessões de jogo ativas no GameLift serviço da Amazon.
-
Cria uma sessão de jogo.
-
Adicionar um jogador a uma sessão de jogo existente.
-
Remover um jogador de uma sessão de jogo existente.
Tópicos
Pré-requisitos
Antes de configurar a comunicação do servidor do jogo com o GameLift cliente da Amazon, conclua as seguintes tarefas:
Inicializar um cliente de jogo
nota
Este tópico se refere ao GameLift plug-in da Amazon para Unity versão 1.0.0, que usa o servidor SDK 4.x ou anterior.
Adicione código para inicializar um cliente de jogo. Execute esse código no lançamento, é necessário para outras GameLift funções da Amazon.
-
Inicializar
AmazonGameLiftClient
. ChameAmazonGameLiftClient
com uma configuração de cliente padrão ou uma configuração personalizada. Para obter mais informações sobre como configurar um cliente, consulte Configure a Amazon GameLift em um serviço de back-end. -
Gere um ID de jogador exclusivo para cada jogador se conectar a uma sessão de jogo. Para ter mais informações, consulte Gerar IDs de jogador.
Os exemplos a seguir mostram como configurar um GameLift cliente da Amazon.
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 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 GameLift Client with default client configuration. aglc = new AmazonGameLiftClient(credentials, config); } }
Crie a sessão do jogo em uma frota específica
nota
Este tópico se refere ao GameLift plug-in da Amazon para Unity versão 1.0.0, que usa o servidor SDK 4.x ou anterior.
Adicione um código para iniciar novas sessões de jogos nas frotas implantadas e disponibilizá-las para jogadores. Depois GameLift que a Amazon criar a nova sessão de jogo e retornar umaGameSession
, você poderá adicionar jogadores a ela.
-
Faça uma solicitação para uma nova sessão de jogo.
-
Se seu jogo usa frotas, chame
CreateGameSession()
com um ID de frota ou alias, um nome de sessão e o número máximo de jogadores simultâneos no jogo. -
Se o seu jogo usa filas, chame
StartGameSessionPlacement()
.
-
O exemplo a seguir mostra como criar uma sessão de jogo.
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; }
Adicionar jogadores às sessões de jogo
nota
Este tópico se refere ao GameLift plug-in da Amazon para Unity versão 1.0.0, que usa o servidor SDK 4.x ou anterior.
Depois GameLift que a Amazon criar a nova sessão de jogo e devolver um GameSession
objeto, você poderá adicionar jogadores a ela.
-
Reserve um slot de jogador em uma sessão de jogo criando uma nova sessão de jogador. Use
CreatePlayerSession
ouCreatePlayerSessions
com o ID da sessão do jogo e um ID exclusivo para cada jogador. -
Conecte-se à sessão do jogo. Recupere o objeto
PlayerSession
para obter as informações de conexão da sessão do jogo. É possível usar essas informações para estabelecer uma conexão direta com o processo do servidor:-
Use a porta especificada e o DNS nome ou endereço IP do processo do servidor.
-
Use o DNS nome e o porto de suas frotas. O DNS nome e a porta são obrigatórios se suas frotas tiverem a geração de TLS certificados ativada.
-
Faça referência ao ID da sessão do jogador. O ID da sessão do jogador é necessário se o servidor do jogo validar as conexões de entrada do jogador.
-
Os exemplos a seguir demonstram como reservar uma vaga de jogador em uma sessão de jogo.
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; }
O código a seguir ilustra como conectar um jogador à sessão do jogo.
public bool ConnectPlayer(int playerIdx, string playerSessionId) { //Call ConnectPlayer with player ID and player session ID. return server.ConnectPlayer(playerIdx, playerSessionId); }
Remova um jogador de uma sessão de jogo
nota
Este tópico se refere ao GameLift plug-in da Amazon para Unity versão 1.0.0, que usa o servidor SDK 4.x ou anterior.
Você poderá remover os jogadores da sessão de jogo quando eles saírem do jogo.
-
Notifique o GameLift serviço da Amazon de que um jogador se desconectou do processo do servidor. Chame
RemovePlayerSession
com o ID da sessão do jogador. -
Verifique se isso
RemovePlayerSession
retornaSuccess
. Em seguida, a Amazon GameLift altera a vaga do jogador para ficar disponível, que a Amazon GameLift pode atribuir a um novo jogador.
O exemplo a seguir ilustra como remover uma sessão de jogador.
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()); } }