Integración de Amazon GameLift Servers en un proyecto de cliente de juegos de Unity - Amazon GameLift Servers

Integración de Amazon GameLift Servers en un proyecto de cliente de juegos de Unity

nota

En este tema se proporciona información sobre una versión anterior del complemento de Amazon GameLift Servers para Unity. La versión 1.x usa el SDK del servidor para la versión 4.x o versiones anteriores de Amazon GameLift Servers. Para obtener documentación sobre la versión más reciente del complemento, que utiliza el SDK del servidor 5.x y es compatible con características más recientes, como el alojamiento de Amazon GameLift Servers Anywhere y de contenedores administrados, consulte Complemento de Amazon GameLift Servers para Unity (SDK 5.x del servidor).

Este tema le ayudará a configurar un cliente de juegos para conectarse a las sesiones de juego alojadas en Amazon GameLift Servers a través de un servicio de backend. Utilice las API de Amazon GameLift Servers para iniciar el emparejamiento, solicitar la ubicación de las sesiones de juego y mucho más.

Añada código al proyecto del servicio de backend para permitir la comunicación con el servicio de Amazon GameLift Servers. Un servicio de backend administra todas las comunicaciones del cliente del juego con el servicio de GameLift. Para obtener más información sobre los servicios de backend, consulte .

El servicio de backend se encarga de las siguientes tareas de cliente de juegos:

  • Personalizar la autenticación de sus jugadores..

  • Solicitar información acerca de las sesiones de juego activas del servicio Amazon GameLift Servers.

  • Creación de una sesión de juego nueva.

  • Adición de un jugador a una sesión de juego existente.

  • Eliminación de un jugador de una sesión de juego existente.

Requisitos previos

Antes de configurar la comunicación del servidor de juegos con el cliente de Amazon GameLift Servers, realice las siguientes tareas:

Inicialización de un cliente de juegos

nota

Este tema hace referencia a la versión 1.0.0 del complemento de Amazon GameLift Servers para Unity, que usa el SDK del servidor 4.x o una versión anterior.

Añada código para inicializar un cliente de juegos. Ejecute este código en el momento del lanzamiento, ya que es necesario para otras funciones de Amazon GameLift Servers.

  1. Inicialice AmazonGameLiftClient. Llame a AmazonGameLiftClient con una configuración de cliente predeterminada o con una configuración personalizada. Para obtener más información sobre cómo configurar un cliente, consulte Configuración de la API de Amazon GameLift Servers.

  2. Genere un ID de jugador único para que cada jugador se conecte a una sesión de juego. Para obtener más información consulte () Generación de ID de jugador.

    En los siguientes ejemplos se muestra cómo configurar un cliente de 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); } }

Creación de una sesión de juego en una flota específica

nota

Este tema hace referencia a la versión 1.0.0 del complemento de Amazon GameLift Servers para Unity, que usa el SDK del servidor 4.x o una versión anterior.

Añada código para iniciar sesiones de juego nuevas en las flotas implementadas y ponerlas a disposición de los jugadores. Una vez que Amazon GameLift Servers haya creado la nueva sesión de juego y devuelto un GameSession, podrá añadirle jugadores.

  • Realice una solicitud para una nueva sesión de juego.

    • Si el juego utiliza flotas, llame a CreateGameSession() con un ID de la flota o alias, un nombre de sesión y el número máximo de jugadores simultáneos para el juego.

    • Si el juego utiliza colas, llame a StartGameSessionPlacement()

En el siguiente ejemplo se muestra cómo crear una sesión de juego.

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; }

Adición de jugadores a las sesiones de juego

nota

Este tema hace referencia a la versión 1.0.0 del complemento de Amazon GameLift Servers para Unity, que usa el SDK del servidor 4.x o una versión anterior.

Una vez que Amazon GameLift Servers haya creado la nueva sesión de juego y devuelto un objeto GameSession, podrá añadirle jugadores.

  1. Reserve una ranura de jugador en una sesión de juego mediante la creación de una sesión de jugador nueva. Utilice CreatePlayerSession o CreatePlayerSessions con el ID de sesión de juego y un ID único para cada jugador.

  2. Conéctese a la sesión de juego. Recupere el objeto PlayerSession para obtener la información de conexión de la sesión de juego. Puede utilizar esta información para establecer una conexión directa con el proceso del servidor:

    1. Utilice el puerto especificado y el nombre de DNS o la dirección IP del proceso del servidor.

    2. Utilice el nombre y el puerto DNS de sus flotas. El nombre y el puerto DNS son obligatorios si las flotas tienen la generación del certificado TLS habilitada.

    3. Haga referencia al ID de sesión del jugador. Si el servidor de juegos valida las conexiones de los jugadores entrantes, el ID de sesión del jugador será obligatorio.

Los siguientes ejemplos muestran cómo reservar un spot de jugador en una sesión de juego.

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; }

El siguiente código muestra cómo conectar a un jugador con la sesión de juego.

public bool ConnectPlayer(int playerIdx, string playerSessionId) { //Call ConnectPlayer with player ID and player session ID. return server.ConnectPlayer(playerIdx, playerSessionId); }

Eliminación de un jugador de una sesión de juego

nota

Este tema hace referencia a la versión 1.0.0 del complemento de Amazon GameLift Servers para Unity, que usa el SDK del servidor 4.x o una versión anterior.

Puede eliminar a los jugadores de la sesión de juego cuando abandonen el juego.

  1. Informe al servicio de Amazon GameLift Servers de que un jugador se ha desconectado del proceso del servidor. Llame a RemovePlayerSession con el ID de sesión del jugador.

  2. Verifique que RemovePlayerSession devuelva Success. A continuación, Amazon GameLift Servers cambia el estado de la ranura de jugador a disponible, por lo que Amazon GameLift Servers puede asignarla a un jugador nuevo.

En el ejemplo siguiente se muestra cómo eliminar una sesión de jugador.

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()); } }