Integrar o Amazon GameLift Servers com um projeto de cliente de jogo do Unity
nota
Este tópico fornece informações para uma versão anterior do plug-in do Amazon GameLift Servers para Unity. A versão 1.x usa o SDK do servidor para Amazon GameLift Servers 4.x ou anterior. Para obter a documentação sobre a versão mais recente do plug-in, que usa o SDK 5.x do servidor e é compatível com recursos mais recentes, como Amazon GameLift Servers Anywhere e hospedagem de contêineres gerenciados, consulte Amazon GameLift ServersPlug-in para Unity (SDK 5.x de servidor).
Este tópico ajuda você a configurar um cliente de jogo para se conectar às sessões de jogo hospedadas pelo Amazon GameLift Servers por meio de um serviço de backend. Use as APIs do Amazon GameLift Servers para iniciar a criação de partidas, solicitar posicionamento em sessões de jogo e muito mais.
Adicione código ao projeto de serviço de backend para permitir a comunicação com o serviço do Amazon GameLift Servers. Um serviço de backend gerencia toda a comunicação do cliente do jogo com o serviço do GameLift. Para obter mais informações sobre esses serviços de backend, consulte .
Um servidor de backend executa as seguintes tarefas do cliente do jogo:
-
Personalize a autenticação para seus jogadores.
-
Solicitar informações sobre sessões de jogos ativas do serviço do Amazon GameLift Servers.
-
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 de jogos com o cliente do Amazon GameLift Servers, execute as seguintes tarefas:
Inicializar um cliente de jogo
nota
Este tópico se refere ao plug-in do Amazon GameLift Servers para Unity versão 1.0.0, que usa o SDK 4.x ou anterior do servidor.
Adicione código para inicializar um cliente de jogo. Execute esse código na inicialização, ele é necessário para outras funções do Amazon GameLift Servers.
-
Inicializar
AmazonGameLiftClient. ChameAmazonGameLiftClientcom 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 Servers API.. -
Gere um ID de jogador exclusivo para cada jogador se conectar a uma sessão de jogo. Para obter mais informações, consulte Gerar IDs de jogador.
Os exemplos a seguir mostram como configurar o cliente do Amazon GameLift Servers.
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); } }
Crie a sessão do jogo em uma frota específica
nota
Este tópico se refere ao plug-in do Amazon GameLift Servers para Unity versão 1.0.0, que usa o SDK 4.x ou anterior do servidor.
Adicione um código para iniciar novas sessões de jogos nas frotas implantadas e disponibilizá-las para jogadores. Depois que o Amazon GameLift Servers criar a nova sessão de jogo e retornar uma GameSession, 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 plug-in do Amazon GameLift Servers para Unity versão 1.0.0, que usa o SDK 4.x ou anterior do servidor.
Depois que o Amazon GameLift Servers criar a nova sessão de jogo e retornar um GameSession object, 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
CreatePlayerSessionouCreatePlayerSessionscom o ID da sessão do jogo e um ID exclusivo para cada jogador. -
Conecte-se à sessão do jogo. Recupere o objeto
PlayerSessionpara 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 nome DNS ou endereço IP do processo do servidor.
-
Use o nome DNS e a porta de suas frotas. O nome DNS e a porta serão necessários se suas frotas tiverem a geração de certificados TLS habilitada.
-
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 plug-in do Amazon GameLift Servers para Unity versão 1.0.0, que usa o SDK 4.x ou anterior do servidor.
Você poderá remover os jogadores da sessão de jogo quando eles saírem do jogo.
-
Notifique o serviço do Amazon GameLift Servers de que um jogador se desconectou do processo do servidor. Chame
RemovePlayerSessioncom o ID da sessão do jogador. -
Verifique se isso
RemovePlayerSessionretornaSuccess. Em seguida, o Amazon GameLift Servers altera o slot do jogador para ficar disponível, que o Amazon GameLift Servers 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()); } }