Integrar o Amazon GameLift Servers com um projeto de servidor 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 preparar seu servidor de jogos personalizado para hospedagem no Amazon GameLift Servers. O servidor de jogos deve poder notificar o Amazon GameLift Servers sobre seu status, iniciar e interromper sessões de jogos quando solicitado e executar outras tarefas. Para ter mais informações, consulte . Integre o Amazon GameLift Servers ao seu servidor de jogos com o SDK do servidor..
Pré-requisitos
Antes de integrar o servidor de jogos, execute as tarefas a seguir:
Configure um novo processo de servidor
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.
Configure a comunicação com o Amazon GameLift Servers e informe que o processo do servidor está pronto para hospedar uma sessão de jogo.
-
Inicialize o SDK do servidor ao chamar
InitSDK(). -
Para preparar o servidor para aceitar uma sessão de jogo, chame
ProcessReady()com a porta de conexão e os detalhes da localização da sessão de jogo. Inclua os nomes das funções de retorno de chamada que o serviço do Amazon GameLift Servers invoca, comoOnGameSession(),OnGameSessionUpdate(),OnProcessTerminate(),OnHealthCheck(). O Amazon GameLift Servers pode levar alguns minutos para fornecer um retorno de chamada. -
O Amazon GameLift Servers atualiza o status do processo do servidor para
ACTIVE. -
O Amazon GameLift Servers chama o
onHealthCheckperiodicamente.
O exemplo de código a seguir mostra como configurar um processo de servidor simples com o Amazon GameLift Servers.
//initSDK var initSDKOutcome = GameLiftServerAPI.InitSDK(); //processReady // Set parameters and call ProcessReady var processParams = new ProcessParameters( this.OnGameSession, this.OnProcessTerminate, this.OnHealthCheck, this.OnGameSessionUpdate, port, // Examples of log and error files written by the game server new LogParameters(new List<string>() { "C:\\game\\logs", "C:\\game\\error" }) ); var processReadyOutcome = GameLiftServerAPI.ProcessReady(processParams); // Implement callback functions void OnGameSession(GameSession gameSession) { // game-specific tasks when starting a new game session, such as loading map // When ready to receive players var activateGameSessionOutcome = GameLiftServerAPI.ActivateGameSession(); } void OnProcessTerminate() { // game-specific tasks required to gracefully shut down a game session, // such as notifying players, preserving game state data, and other cleanup var ProcessEndingOutcome = GameLiftServerAPI.ProcessEnding(); } bool OnHealthCheck() { bool isHealthy; // complete health evaluation within 60 seconds and set health return isHealthy; }
Iniciar 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.
Depois que a inicialização do jogo estiver concluída, você poderá iniciar uma sessão de jogo.
-
Implemente a função de retorno
onStartGameSession. O Amazon GameLift Servers invoca esse método para iniciar uma nova sessão de jogo no processo do servidor e receber conexões de jogadores. -
Para ativar uma sessão de jogo, chame
ActivateGameSession(). Para obter mais informações sobre o SDK, consulte SDK do servidor C# para Amazon GameLift Servers 4x – Ações.
O exemplo de código a seguir ilustra como começar uma sessão de jogo com o Amazon GameLift Servers.
void OnStartGameSession(GameSession gameSession) { // game-specific tasks when starting a new game session, such as loading map ... // When ready to receive players var activateGameSessionOutcome = GameLiftServerAPI.ActivateGameSession(); }
Encerrar 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.
Notifique o Amazon GameLift Servers quando uma sessão de jogo estiver terminando. Como melhor prática, desligue os processos do servidor após a conclusão das sessões de jogo para reciclar e atualizar os recursos de hospedagem.
-
Configure uma função chamada
onProcessTerminatepara receber solicitações do Amazon GameLift Servers e chameProcessEnding(). -
O status do processo muda para
TERMINATED.
O exemplo a seguir descreve como finalizar um processo para uma sessão de jogo.
var processEndingOutcome = GameLiftServerAPI.ProcessEnding(); if (processReadyOutcome.Success) Environment.Exit(0); // otherwise, exit with error code Environment.Exit(errorCode);
Crie a compilação do servidor e faça o upload do servidor para Amazon GameLift Servers
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 de integrar seu servidor de jogos com o Amazon GameLift Servers, faça o upload dos arquivos de compilação para uma frota para que o Amazon GameLift Servers possa implantá-los para hospedagem de jogos. Para obter mais informações sobre como fazer o upload de seu servidor para o Amazon GameLift Servers, consulte Criar uma compilação personalizada do servidor de jogos para o Amazon GameLift Servers.