Integre a Amazon GameLift com um projeto de cliente de jogo Unity - Amazon GameLift

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.

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.

  1. Inicializar AmazonGameLiftClient. Chame AmazonGameLiftClient 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.

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

  1. Reserve um slot de jogador em uma sessão de jogo criando uma nova sessão de jogador. Use CreatePlayerSession ou CreatePlayerSessions com o ID da sessão do jogo e um ID exclusivo para cada jogador.

  2. 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:

    1. Use a porta especificada e o DNS nome ou endereço IP do processo do servidor.

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

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

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

  2. Verifique se isso RemovePlayerSession retorna Success. 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()); } }