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.
Agrega AmazonGameLift a tu proyecto de cliente de juegos de Unity
Este tema te ayuda a configurar un cliente de juego para que se conecte a las sesiones de juegoGameLift alojadas en Amazon a través de un servicio de backend. Usa lasGameLift API de Amazon para iniciar el matchmaking, solicitar la ubicación de las sesiones de juego y mucho más.
Añada código al proyecto de servicio de backend para permitir la comunicación con elGameLift servicio de Amazon. Un servicio de backend gestiona todas las comunicaciones del cliente del juego con elGameLift servicio. Para obtener más información sobre los servicios de backend, consulteDiseña el servicio de cliente de tu juego.
Un servidor de fondo gestiona las siguientes tareas del cliente del juego:
-
Personaliza la autenticación para tus jugadores.
-
Solicita información sobre las sesiones de juego activas alGameLift servicio de Amazon.
-
Crea una nueva sesión de juego.
-
Agrega un jugador a una sesión de juego existente.
-
Eliminar a un jugador de una sesión de juego existente.
Temas
Requisitos previos
Antes de configurar la comunicación del servidor de juegos con elGameLift cliente de Amazon, realice las siguientes tareas:
Inicializar un cliente de juego
Añade código para inicializar un cliente del juego. Ejecuta este código en el momento del lanzamiento, es necesario para otrasGameLift funciones de Amazon.
-
Inicializar
AmazonGameLiftClient
. LlameAmazonGameLiftClient
con una configuración de cliente predeterminada o una configuración personalizada. Para obtener más información sobre cómo configurar un cliente, consulteConfigura AmazonGameLift en un servicio de backend. -
Genera un identificador de jugador único para que cada jugador se conecte a una sesión de juego. Para obtener más información, consulte GenS S S S S S.
En los siguientes ejemplos se muestra cómo configurar unGameLift cliente de Amazon.
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 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 GameLift Client with default client configuration. aglc = new AmazonGameLiftClient(credentials, config); } }
Crea una sesión de juego en una flota específica
Añada código para iniciar sesiones de juego nuevas en las flotas implementadas y ponerlas a disposición de los jugadores. Cuando AmazonGameLift haya creado la nueva sesión de juego y haya devuelto unaGameSession
, podrás añadir jugadores a la misma.
-
Haz una solicitud para una nueva sesión de juego.
-
Si tu juego usa flotas, llama
CreateGameSession()
con un identificador de flota o alias, un nombre de sesión y el número máximo de jugadores simultáneos para el juego. -
Si tu juego usa colas, llama
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; }
Añadir jugadores a las sesiones de juego
Cuando AmazonGameLift haya creado la nueva sesión de juego y haya devuelto unGameSession
objeto, podrás añadirle jugadores.
-
Reserva un espacio de jugador en una sesión de juego creando una nueva sesión de jugador. Usa
CreatePlayerSession
oCreatePlayerSessions
con el ID de sesión del juego y un ID único para cada jugador. -
Connect a la sesión de juego. Recupera el
PlayerSession
objeto 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:-
Utilice el puerto especificado y el nombre DNS o la dirección IP del proceso del servidor.
-
Usa el nombre DNS y el puerto de tus flotas. El nombre DNS y el puerto son obligatorios si sus flotas tienen habilitada la generación de certificados TLS.
-
Haga referencia al ID de sesión del jugador. El ID de sesión del jugador es obligatorio si el servidor del juego valida las conexiones entrantes de los jugadores.
-
Los siguientes ejemplos muestran cómo reservar una plaza 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 código siguiente ilustra 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); }
Eliminar a un jugador de una sesión de juego
Puedes eliminar a los jugadores de la sesión de juego cuando abandonen el juego.
-
Notifica alGameLift servicio de Amazon que un jugador se ha desconectado del servidor. Llama
RemovePlayerSession
con el ID de sesión del jugador. -
Verifica que
RemovePlayerSession
regreseSuccess
. A continuación, AmazonGameLift cambia el espacio del jugador para que esté disponible, que AmazonGameLift puede asignar a un nuevo jugador.
En el siguiente ejemplo se ilustra cómo eliminar una sesión de un 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()); } }