

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 Amazon GameLift Servers em um projeto do Unity
<a name="integration-engines-unity-using"></a>

Aprenda a integrar o Amazon GameLift Servers SDK para o Unity em seus projetos de jogos para acessar o conjunto completo de recursos do SDK do servidor. 

**Dica**  
Para uma implantação mais rápida, experimente o plug-in independente do Amazon GameLift Servers para o Unity. Ele fornece fluxos de trabalho de interface de usuário guiados para implantar rapidamente seu servidor de jogos com configuração mínima, para que você possa testar os componentes do jogo em ação. Consulte [Amazon GameLift Serversplugin para Unity (servidor SDK 5.x)](unity-plug-in.md).

Recursos adicionais: 
+ [SDK do servidor C\$1 para Amazon GameLift Servers 5.x – Ações](integration-server-sdk5-csharp-actions.md)
+ [Obter ferramentas de desenvolvimento do Amazon GameLift Servers](gamelift-supported.md)

## Instalar o SDK do servidor para o Unity
<a name="integration-engines-unity-install"></a>

Obtenha o código aberto Amazon GameLift Servers para Unity em. [GitHub](https://github.com/amazon-gamelift/amazon-gamelift-plugin-unity) Os arquivos readme do repositório contêm pré-requisitos e instruções de instalação.

## Configure uma frota do Amazon GameLift Servers Anywhere para testes
<a name="integration-engines-unity-fleet"></a>

Você poderá configurar sua estação de trabalho de desenvolvimento como uma frota de hospedagem do Amazon GameLift Servers Anywhere para testar iterativamente sua integração com o Amazon GameLift Servers. Com essa configuração, você pode iniciar os processos do servidor de jogos em sua estação de trabalho, enviar solicitações de junção de jogadores ou de criação de partidas ao Amazon GameLift Servers para iniciar sessões de jogo e conectar clientes às novas sessões de jogo. Com sua própria estação de trabalho configurada como servidor de hospedagem, você pode monitorar todos os aspectos da integração do seu jogo com o Amazon GameLift Servers.

Para obter instruções sobre como configurar sua estação de trabalho, consulte [Configurar testes locais com o Amazon GameLift Servers Anywhere](integration-testing.md) para concluir as seguintes etapas:

1. Crie um local personalizado para sua estação de trabalho. 

1. Crie uma frota do Amazon GameLift Servers Anywhere com sua nova localização personalizada. Se for bem-sucedida, essa solicitação retornará um ID da frota. Anote esse valor, pois você precisará disso mais tarde.

1. Registre sua estação de trabalho como uma computação na nova frota Anywhere. Forneça um nome de computação exclusivo e especifique o endereço IP da sua estação de trabalho. Se for bem-sucedida, essa solicitação retornará um endpoint do SDK de serviço, na forma de uma WebSocket URL. Anote esse valor, pois você precisará disso mais tarde.

1. Gere um token de autenticação para a computação da sua estação de trabalho. Essa autenticação de curta duração inclui o token e uma data de expiração. Seu servidor de jogo o usa para autenticar a comunicação com o serviço do Amazon GameLift Servers. Armazene a autenticação no computador da sua estação de trabalho para que os processos do servidor de jogos em execução possam acessá-la. 

## Adicione o código do servidor do Amazon GameLift Servers ao seu projeto Unity
<a name="integration-engines-unity-code"></a>

Seu servidor de jogo se comunica com o serviço do Amazon GameLift Servers para receber instruções e relatar o status contínuo. Para fazer isso, você adiciona um código de servidor de jogos que usa o SDK do servidor do Amazon GameLift Servers. 

O exemplo de código fornecido ilustra os elementos básicos de integração necessários. Ele usa um `MonoBehavior` para ilustrar uma inicialização simples do servidor de jogos com o Amazon GameLift Servers. O exemplo pressupõe que o servidor do jogo seja executado em uma frota do Amazon GameLift Servers Anywhere para testes. Inclui código para: 
+ Inicialize um cliente da API do Amazon GameLift Servers. A amostra usa a versão de `InitSDK()` com parâmetros do servidor para sua frota Anywhere e computação. Use o WebSocket URL, o ID da frota, o nome do computador (ID do host) e o token de autenticação, conforme definido no tópico [Configure uma frota do Amazon GameLift Servers Anywhere para testes](#integration-engines-unity-fleet) anterior.
+ Implemente funções de retorno de chamada para responder às solicitações do serviço do Amazon GameLift Servers, inclusive `OnStartGameSession`, `OnProcessTerminate` e `onHealthCheck`.
+ Ligue para ProcessReady () com uma porta designada para notificar o Amazon GameLift Servers serviço quando o processo estiver pronto para hospedar sessões de jogo.

O código de amostra fornecido estabelece a comunicação com o serviço do Amazon GameLift Servers. Ele também implementa um conjunto de funções de retorno de chamada que respondem às solicitações do Amazon GameLift Servers. Para obter mais informações sobre cada função e o que o código faz, consulte [Inicializar o processo do servidor](https://docs.aws.amazon.com//gameliftservers/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-initialize). Para obter mais informações sobre as ações do SDK e os tipos de dados usados nesse código, leia [SDK do servidor C\$1 para Amazon GameLift Servers 5.x – Ações](integration-server-sdk5-csharp-actions.md).

O código de exemplo mostra como adicionar a funcionalidade necessária, conforme descrito em [Adicionar Amazon GameLift Servers ao seu servidor de jogos](https://docs.aws.amazon.com//gameliftservers/latest/developerguide/gamelift-sdk-server-api.html). Para ter mais informações sobre as ações de SDK, consulte [SDK do servidor C\$1 para Amazon GameLift Servers 5.x – Ações](integration-server-sdk5-csharp-actions.md).

### Código de exemplo de integração
<a name="w2aab9c11c11b9c19c15c13b1"></a>

```
using System.Collections.Generic;
using Aws.GameLift.Server;
using UnityEngine;

public class ServerSDKManualTest : MonoBehaviour
{    
    //This example is a simple integration that initializes a game server process 
    //that is running on an Amazon GameLift Servers Anywhere fleet.
    void Start()
    {        
        //Identify port number (hard coded here for simplicity) the game server is listening on for player connections
        var listeningPort = 7777;

        //WebSocketUrl from RegisterHost call
        var webSocketUrl = "wss://us-west-2.api.amazongamelift.com";

        //Unique identifier for this process
        var processId = "myProcess";

        //Unique identifier for your host that this process belongs to
        var hostId = "myHost";

        //Unique identifier for your fleet that this host belongs to
        var fleetId = "myFleet";

        //Authorization token for this host process
        var authToken = "myAuthToken";

        //Server parameters are required for an Amazon GameLift Servers Anywhere fleet.
        //They are not required for an Amazon GameLift Servers managed EC2 fleet.
        ServerParameters serverParameters = new ServerParameters(
            webSocketUrl,
            processId,
            hostId,
            fleetId,
            authToken);

        //InitSDK establishes a local connection with an Amazon GameLift Servers agent 
        //to enable further communication.
        var initSDKOutcome = GameLiftServerAPI.InitSDK(serverParameters);        
        if (initSDKOutcome.Success)
        {
            //Implement callback functions
            ProcessParameters processParameters = new ProcessParameters(
            //Implement OnStartGameSession callback
                (gameSession) => {
                    //Amazon GameLift Servers sends a game session activation request to the game server 
                    //with game session object containing game properties and other settings.
                    //Here is where a game server takes action based on the game session object.
                    //When the game server is ready to receive incoming player connections, 
                    //it invokes the server SDK call ActivateGameSession().
                    GameLiftServerAPI.ActivateGameSession();
                },
                (updateGameSession) => {
                    //Amazon GameLift Servers sends a request when a game session is updated (such as for 
                    //FlexMatch backfill) with an updated game session object. 
                    //The game server can examine matchmakerData and handle new incoming players.
                    //updateReason explains the purpose of the update.
                },
                () => {
                    //Implement callback function OnProcessTerminate
                    //Amazon GameLift Servers invokes this callback before shutting down the instance hosting this game server.
                    //It gives the game server a chance to save its state, communicate with services, etc., 
                    //and initiate shut down. When the game server is ready to shut down, it invokes the 
                    //server SDK call ProcessEnding() to tell Amazon GameLift Servers it is shutting down.
                    GameLiftServerAPI.ProcessEnding();
                }, 
                () => {
                    //Implement callback function OnHealthCheck
                    //Amazon GameLift Servers invokes this callback approximately every 60 seconds.
                    //A game server might want to check the health of dependencies, etc.
                    //Then it returns health status true if healthy, false otherwise.
                    //The game server must respond within 60 seconds, or Amazon GameLift Servers records 'false'.
                    //In this example, the game server always reports healthy.
                    return true;
                },
                //The game server gets ready to report that it is ready to host game sessions
                //and that it will listen on port 7777 for incoming player connections.
                listeningPort, 
                new LogParameters(new List<string>()
                {
                    //Here, the game server tells Amazon GameLift Servers where to find game session log files.
                    //At the end of a game session, Amazon GameLift Servers uploads everything in the specified 
                    //location and stores it in the cloud for access later.
                    "/local/game/logs/myserver.log"
                }));

            //The game server calls ProcessReady() to tell Amazon GameLift Servers it's ready to host game sessions.
            var processReadyOutcome = GameLiftServerAPI.ProcessReady(processParameters);
            if (processReadyOutcome.Success)
            {
                print("ProcessReady success.");
            }
            else
            {
                print("ProcessReady failure : " + processReadyOutcome.Error.ToString());
            }
        }
        else
        {
            print("InitSDK failure : " + initSDKOutcome.Error.ToString());
        }
    }  

    void OnApplicationQuit()
    {
        //Make sure to call GameLiftServerAPI.ProcessEnding() and GameLiftServerAPI.Destroy() before terminating the server process.
        //These actions notify Amazon GameLift Servers that the process is terminating and frees the API client from memory. 
        GenericOutcome processEndingOutcome = GameLiftServerAPI.ProcessEnding();
        GameLiftServerAPI.Destroy();
        if (processEndingOutcome.Success)
        {
            Environment.Exit(0);
        }
        else
        {
            Console.WriteLine("ProcessEnding() failed. Error: " + processEndingOutcome.Error.ToString());
            Environment.Exit(-1);  
        }
    }
}
```

## Próximas etapas
<a name="integration-engines-unity-additional-resources"></a>

Agora que você preparou uma versão de servidor de jogos com a funcionalidade mínima necessária para hospedagem com o Amazon GameLift Servers, considere estas possíveis próximas etapas: 
+ Implante seu servidor de jogos integrado para testes e desenvolvimento. Com uma frota Anywhere, é possível configurar sua máquina local como recurso de hospedagem e usá-la para testar as conexões do servidor de jogos e do cliente de jogos. Para hospedagem baseada em Nuvem, implante seu servidor de jogos em um EC2 gerenciado ou em uma frota de contêineres gerenciada. Consulte estes tópicos para obter orientação:
  + [Configuração para desenvolvimento iterativo com o Amazon GameLift Servers Anywhere](integration-dev-iteration.md)
  + [Amazon GameLift Servers Frotas Anywhere](fleets-intro-anywhere.md)
  + [Amazon GameLift Servers EC2 frotas gerenciadas](fleets-intro-managed.md)
  + [Frotas de contêineres gerenciadas pelo Amazon GameLift Servers](fleets-intro-containers.md)
+ Personalize a integração do servidor de jogos adicionando recursos opcionais. Por exemplo, talvez você queira adicionar sessões de jogadores com um único jogador IDs, configurar o preenchimento de matchmaking ou gerenciar o acesso do servidor de jogos aos seus outros AWS recursos (como um banco de dados ou serviço de armazenamento de conteúdo). Consulte estes tópicos para obter orientação: 
  + [Integre o Amazon GameLift Servers ao seu servidor de jogos com o SDK do servidor.](gamelift-sdk-server-api.md)
  + [SDK do servidor C\$1\$1 (Unreal) para Amazon GameLift Servers 5.x – Ações](integration-server-sdk5-unreal-actions.md)
+ Personalize seu componente cliente de jogo para solicitar sessões de jogo, receber informações de conexão e conectar-se diretamente a um servidor de jogos para jogar. Consulte estes tópicos para obter orientação:
  + [Integre a funcionalidade do cliente de jogos do Amazon GameLift Servers](gamelift-sdk-client-api.md)