

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Integración de Amazon GameLift Servers en un proyecto de Unity
<a name="integration-engines-unity-using"></a>

Aprenda a integrar el SDK de Amazon GameLift Servers para Unity en sus proyectos de juegos para acceder al conjunto completo de características del SDK del servidor. 

**Sugerencia**  
Para agilizar la implementación, pruebe el complemento independiente de Amazon GameLift Servers para Unity. Proporciona flujos de trabajo de la IU guiados que le permitirán implementar rápidamente el servidor de juegos con una configuración mínima, para así poder probar los componentes del juego en acción. Consulte [Complemento de Amazon GameLift Servers para Unity (SDK 5.x del servidor)](unity-plug-in.md).

Recursos adicionales: 
+ [SDK 5.x del servidor de C\$1 para Amazon GameLift Servers: acciones](integration-server-sdk5-csharp-actions.md)
+ [Obtención de herramientas de desarrollo de Amazon GameLift Servers](gamelift-supported.md)

## Instalación del SDK del servidor para Unity
<a name="integration-engines-unity-install"></a>

Obtén el código abierto Amazon GameLift Servers para Unity en. [GitHub](https://github.com/amazon-gamelift/amazon-gamelift-plugin-unity) Los archivos readme del repositorio contienen los requisitos previos y las instrucciones de instalación.

## Configuración de una flota de Amazon GameLift Servers Anywhere con fines de prueba
<a name="integration-engines-unity-fleet"></a>

Puede configurar su estación de trabajo de desarrollo como una flota de alojamiento de Amazon GameLift Servers Anywhere para probar de forma iterativa la integración con Amazon GameLift Servers. Con esta configuración, puede iniciar los procesos del servidor de juegos en su estación de trabajo, enviar solicitudes de unión o emparejamiento de jugadores a Amazon GameLift Servers para iniciar sesiones de juego y conectar clientes a las nuevas sesiones de juego. Con su propia estación de trabajo configurada como servidor de alojamiento, podrá supervisar todos los aspectos de la integración de los juegos con Amazon GameLift Servers.

Para obtener instrucciones sobre cómo configurar su estación de trabajo, consulte [Configuración de pruebas locales con Amazon GameLift Servers Anywhere](integration-testing.md) para completar los siguientes pasos:

1. Cree una ubicación personalizada para su estación de trabajo. 

1. Cree una flota de Amazon GameLift Servers Anywhere con su nueva ubicación personalizada. Si se realiza correctamente, esta solicitud devuelve un ID de la flota. Tome nota de ese valor, ya que lo necesitará más tarde.

1. Registre su estación de trabajo como recurso de computación en la nueva flota de Anywhere. Proporcione un nombre de procesamiento único y especifique la dirección IP de su estación de trabajo. Si se realiza correctamente, esta solicitud devuelve un punto final del SDK del servicio, en forma de WebSocket URL. Tome nota de ese valor, ya que lo necesitará más tarde.

1. Genere un token de autenticación para el procesamiento de su estación de trabajo. Esta autenticación de corta duración incluye el token y una fecha de caducidad. El servidor de juegos lo usa para autenticar la comunicación con el servicio de Amazon GameLift Servers. Guarde la autenticación en el recurso informático de su estación de trabajo para que los procesos del servidor de juegos en ejecución puedan acceder a él. 

## Adición del código de servidor de Amazon GameLift Servers al proyecto
<a name="integration-engines-unity-code"></a>

El servidor de juegos se comunica con el servicio de Amazon GameLift Servers para recibir instrucciones e informar sobre su estado actual. Para ello, debe añadir un código de servidor de juegos que utilice el SDK del servidor de Amazon GameLift Servers. 

El ejemplo de código proporcionado muestra los elementos básicos de integración necesarios. Utiliza un `MonoBehavior` para ilustrar una inicialización sencilla de un servidor de juegos con Amazon GameLift Servers. En el ejemplo, se presupone que el servidor de juegos se ejecuta en una flota de Amazon GameLift Servers con fines de prueba. Incluye código para lo siguiente: 
+ Inicializar un cliente de API de Amazon GameLift Servers. En el ejemplo, se utiliza la versión de `InitSDK()` con parámetros de servidor los recursos de computación y la flota de Anywhere. Usa la WebSocket URL, el ID de flota, el nombre de proceso (ID de host) y el token de autenticación, tal y como se definió en el tema anterior[Configuración de una flota de Amazon GameLift Servers Anywhere con fines de prueba](#integration-engines-unity-fleet).
+ Implemente funciones de devolución de llamada para responder a las solicitudes del servicio de Amazon GameLift Servers, incluidas `OnStartGameSession`, `OnProcessTerminate` y `onHealthCheck`.
+ Llama a ProcessReady () con un puerto designado para notificar al Amazon GameLift Servers servicio cuando el proceso esté listo para albergar sesiones de juego.

El código de muestra que se proporciona establece la comunicación con el servicio de Amazon GameLift Servers. También implementa un conjunto de funciones de devolución de llamada que responden a las solicitudes procedentes del servicio de Amazon GameLift Servers. Para obtener más información sobre cada función y lo que hace el código, consulte [Inicialización del proceso del servidor](https://docs.aws.amazon.com//gameliftservers/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-initialize). Para obtener más información sobre las acciones del SDK y los tipos de datos que se utilizan en este código, consulte [SDK 5.x del servidor de C\$1 para Amazon GameLift Servers: acciones](integration-server-sdk5-csharp-actions.md).

El código de muestra indica cómo añadir la funcionalidad necesaria, tal y como se describe en [Adición de Amazon GameLift Servers al servidor de juegos](https://docs.aws.amazon.com//gameliftservers/latest/developerguide/gamelift-sdk-server-api.html). Para obtener más información sobre las acciones del SDK del servidor, consulte [SDK 5.x del servidor de C\$1 para Amazon GameLift Servers: acciones](integration-server-sdk5-csharp-actions.md).

### Código de muestra para la integración
<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);  
        }
    }
}
```

## Siguientes pasos
<a name="integration-engines-unity-additional-resources"></a>

Ahora que ha preparado una compilación del servidor de juegos con la funcionalidad mínima necesaria para el alojamiento con Amazon GameLift Servers, considere la posibilidad de seguir estos pasos: 
+ Implemente el servidor de juegos integrado con fines de prueba y desarrollo. Con una flota de Anywhere, puede configurar su máquina local como recurso de alojamiento y utilizarla para probar las conexiones del servidor de juegos y los clientes de juegos. Para el alojamiento basado en la nube, implemente el servidor de juegos en una flota de EC2 administrada o en una flota de contenedores administrada. Consulte estos temas para obtener instrucciones:
  + [Preparación para el desarrollo iterativo con Amazon GameLift Servers Anywhere](integration-dev-iteration.md)
  + [Flotas de Amazon GameLift Servers Anywhere](fleets-intro-anywhere.md)
  + [Amazon GameLift Servers EC2 flotas gestionadas](fleets-intro-managed.md)
  + [Flotas de contenedores administradas de Amazon GameLift Servers](fleets-intro-containers.md)
+ Para personalizar la integración del servidor de juegos, añada características opcionales. Por ejemplo, es posible que desees añadir sesiones de jugadores con un jugador único IDs, configurar el sistema de reabastecimiento de partidas o gestionar el acceso del servidor del juego a tus otros AWS recursos (como una base de datos o un servicio de almacenamiento de contenido). Consulte estos temas para obtener instrucciones: 
  + [Adición de Amazon GameLift Servers al servidor de juegos con el SDK del servidor](gamelift-sdk-server-api.md)
  + [SDK 5.x del servidor de C\$1\$1 (Unreal) para Amazon GameLift Servers: acciones](integration-server-sdk5-unreal-actions.md)
+ Personalice el componente del cliente de juegos para solicitar sesiones de juego, recibir información de conexión y conectarse directamente a un servidor de juegos para jugar a un juego. Consulte estos temas para obtener instrucciones:
  + [Integración de la funcionalidad de cliente de juego de Amazon GameLift Servers](gamelift-sdk-client-api.md)