Référence GameLift du SDK (Go) du serveur Amazon : Actions - Amazon GameLift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Référence GameLift du SDK (Go) du serveur Amazon : Actions

Vous pouvez utiliser cette référence du SDK du serveur Amazon GameLift Go pour vous aider à préparer votre jeu multijoueur en vue de son utilisation avec Amazon GameLift. Pour plus de détails sur le processus d'intégration, consultezAjoutez Amazon GameLift à votre serveur de jeu.

GameLiftServerAPI.godéfinit les actions du SDK du serveur Go.

GetSdkVersion()

Renvoie le numéro de version actuel du kit SDK intégré dans le processus serveur.

Syntaxe

func GetSdkVersion() (string, error)

Valeur renvoyée

En cas de succès, renvoie la version actuelle du SDK sous forme de chaîne. La chaîne renvoyée inclut le numéro de version (exemple5.0.0). En cas d'échec, renvoie un message d'erreur tel quecommon.SdkVersionDetectionFailed.

Exemple

version, err := server.GetSdkVersion()

InitSDK()

Initialise le GameLift SDK Amazon. Appelez cette méthode au lancement avant toute autre initialisation liée à Amazon GameLift . Cette méthode permet de configurer la communication entre le serveur et le GameLift service Amazon.

Syntaxe

func InitSDK(params ServerParameters) error

Paramètres

ServerParameters

Pour initialiser un serveur de jeu sur une GameLift Anywhere flotte Amazon, créez un ServerParameters objet avec les informations suivantes :

  • URL WebSocket utilisée pour vous connecter à votre serveur de jeu.

  • ID du processus utilisé pour héberger votre serveur de jeu.

  • L'ID de l'ordinateur hébergeant les processus de votre serveur de jeu.

  • L'ID de la GameLift flotte Amazon contenant votre GameLift Anywhere ordinateur Amazon.

  • Le jeton d'autorisation généré par l' GameLift opération Amazon.

Pour initialiser un serveur de jeu sur une flotte EC2 GameLift gérée par Amazon, créez un ServerParameters objet sans paramètres. Avec cet appel, l' GameLift agent Amazon configure l'environnement informatique et se connecte automatiquement au GameLift service Amazon pour vous.

Valeur renvoyée

En cas de succès, renvoie nil une erreur indiquant que le processus serveur est prêt à être appeléProcessReady().

Note

Si les appels à échouent pour InitSDK() les builds de jeu déployés sur des flottes Anywhere, vérifiez le ServerSdkVersion paramètre utilisé lors de la création de la ressource de build. Vous devez définir explicitement cette valeur en fonction de la version du SDK du serveur utilisée. La valeur par défaut de ce paramètre est 4.x, ce qui n'est pas compatible. Pour résoudre ce problème, créez une nouvelle version et déployez-la sur une nouvelle flotte.

Exemple

GameLift AnywhereExemple Amazon

//Define the server parameters serverParameters := ServerParameters { WebSocketURL: "wss://us-west-1.api.amazongamelift.com", ProcessID: "PID1234", HostID: "HardwareAnywhere", FleetID: "aarn:aws:gamelift:us-west-1:111122223333:fleet/fleet-9999ffff-88ee-77dd-66cc-5555bbbb44aa", AuthToken: "1111aaaa-22bb-33cc-44dd-5555eeee66ff" } //Call InitSDK to establish a local connection with the GameLift agent to enable further communication. err := server.InitSDK(serverParameters)

Exemple d'EC2 GameLift géré par Amazon

//Define the server parameters serverParameters := ServerParameters {} //Call InitSDK to establish a local connection with the GameLift agent to enable further communication. err := server.InitSDK(serverParameters)

ProcessReady()

Indique à Amazon GameLift que le processus du serveur est prêt à héberger des sessions de jeu. Appelez cette méthode après l'avoir invoquée. InitSDK() Cette méthode ne doit être appelée qu'une seule fois par processus.

Syntaxe

func ProcessReady(param ProcessParameters) error

Paramètres

ProcessParameters

Un ProcessParameters objet communique les informations suivantes concernant le processus du serveur :

  • Les noms des méthodes de rappel implémentées dans le code du serveur de jeu invoqué par le GameLift service Amazon pour communiquer avec le processus du serveur.

  • Numéro de port sur lequel le processus serveur est en train d'écouter.

  • Type de LogParameters données contenant le chemin d'accès à tous les fichiers spécifiques à une session de jeu que vous souhaitez qu'Amazon capture et GameLift stocke.

Valeur renvoyée

Renvoie une erreur accompagnée d'un message d'erreur en cas d'échec de la méthode. Renvoie nil si la méthode est réussie.

Exemple

Cet exemple illustre les implémentations de l'appel ProcessReady() et de la fonction déléguée.

// Define the process parameters processParams := ProcessParameters { OnStartGameSession: gameProcess.OnStartGameSession, OnUpdateGameSession: gameProcess.OnGameSessionUpdate, OnProcessTerminate: gameProcess.OnProcessTerminate, OnHealthCheck: gameProcess.OnHealthCheck, Port: port, LogParameters: LogParameters { // logging and error example []string {"C:\\game\\logs", "C:\\game\\error"} } } err := server.ProcessReady(processParams)

ProcessEnding()

Indique à Amazon GameLift que le processus du serveur est en train de se terminer. Appelez cette méthode après toutes les autres tâches de nettoyage (y compris la fermeture de la session de jeu active) et avant de terminer le processus. En fonction du résultat deProcessEnding(), le processus se termine avec succès (0) ou erreur (-1) et génère un événement de flotte. Si le processus se termine par une erreur, l'événement de flotte généré estSERVER_PROCESS_TERMINATED_UNHEALTHY.

Syntaxe

func ProcessEnding() error

Valeur renvoyée

Renvoie un code d'erreur 0 ou un code d'erreur défini.

Exemple

// operations to end game sessions and the server process defer func() { err := server.ProcessEnding() server.Destroy() if err != nil { fmt.Println("ProcessEnding() failed. Error: ", err) os.Exit(-1) } else { os.Exit(0) } }

ActivateGameSession()

Informe Amazon GameLift que le processus du serveur a activé une session de jeu et qu'il est désormais prêt à recevoir les connexions des joueurs. Cette action est appelée dans le cadre de la fonction de onStartGameSession() rappel, après toute initialisation de session de jeu.

Syntaxe

func ActivateGameSession() error

Valeur renvoyée

Renvoie une erreur accompagnée d'un message d'erreur en cas d'échec de la méthode.

Exemple

Cet exemple montre l'ActivateGameSession()appel dans le cadre de la fonction de onStartGameSession() délégation.

func OnStartGameSession(GameSession gameSession) { // game-specific tasks when starting a new game session, such as loading map // Activate when ready to receive players err := server.ActivateGameSession(); }

UpdatePlayerSessionCreationPolicy()

Met à jour la capacité de la session de jeu à accepter de nouvelles sessions de joueur. Une session de jeu peut être définie pour accepter ou refuser toutes les nouvelles sessions joueur.

Syntaxe

func UpdatePlayerSessionCreationPolicy(policy model.PlayerSessionCreationPolicy) error

Paramètres

playerSessionCreationPolitique

Valeur de chaîne indiquant si la session de jeu accepte de nouveaux joueurs.

Les valeurs valides sont les suivantes :

  • model.AcceptAll— Acceptez toutes les sessions pour nouveaux joueurs.

  • model.DenyAll— Refusez toutes les sessions pour les nouveaux joueurs.

Valeur renvoyée

Renvoie une erreur avec un message d'erreur en cas d'échec.

Exemple

Cet exemple définit la stratégie de participation de la session de jeu actuelle de manière à ce que tous les joueurs soient acceptés.

err := server.UpdatePlayerSessionCreationPolicy(model.AcceptAll)

GetGameSessionId()

Récupère l'ID de la session de jeu hébergée par le processus serveur actif.

Syntaxe

func GetGameSessionID() (string, error)

Paramètres

Cette action n'a aucun paramètre.

Valeur renvoyée

En cas de succès, renvoie l'identifiant de session de jeu et aucune erreur. Pour les processus inactifs qui ne sont pas encore activés lors d'une session de jeu, l'appel renvoie une chaîne vide et une nil erreur.

Exemple

gameSessionID, err := server.GetGameSessionID()

GetTerminationTime()

Renvoie l'heure à laquelle il est prévu d'arrêter un processus serveur si une heure de fin est disponible. Un processus serveur exécute cette action après avoir reçu un onProcessTerminate() rappel d'Amazon GameLift. Amazon GameLift appelle onProcessTerminate() pour les raisons suivantes :

  • Lorsque le processus du serveur a signalé un mauvais état de santé ou n'a pas répondu à Amazon GameLift.

  • Lorsque vous mettez fin à l'instance lors d'un événement de réduction de la taille.

  • Lorsqu'une instance est interrompue en raison d'une interruption ponctuelle.

Syntaxe

func GetTerminationTime() (int64, error)

Valeur renvoyée

En cas de succès, renvoie l'horodatage en secondes pendant lequel le processus du serveur est programmé pour s'arrêter et une nil erreur se termine. La valeur est le délai de résiliation, exprimé en ticks écoulés depuis. 0001 00:00:00 Par exemple, la valeur de la date et de l'heure 2020-09-13 12:26:40 -000Z est égale à celle 637355968000000000 des ticks. Si aucune heure de résiliation n'est disponible, renvoie un message d'erreur.

Exemple

terminationTime, err := server.GetTerminationTime()

AcceptPlayerSession()

Informe Amazon GameLift qu'un joueur possédant l'identifiant de session de joueur spécifié s'est connecté au processus du serveur et doit être validé. Amazon GameLift vérifie que l'identifiant de session du joueur est valide. Une fois la session du joueur validée, Amazon GameLift change le statut de l'emplacement du joueur de RESERVED àACTIVE.

Syntaxe

func AcceptPlayerSession(playerSessionID string) error

Paramètres

playerSessionId

Identifiant unique émis par Amazon GameLift lors de la création d'une nouvelle session de joueur.

Valeur renvoyée

Renvoie un résultat générique consistant en un succès ou un échec avec un message d'erreur.

Exemple

Cet exemple traite une demande de connexion qui inclut la validation et le rejet d'identifiants de session de joueur non valides.

func ReceiveConnectingPlayerSessionID(conn Connection, playerSessionID string) { err := server.AcceptPlayerSession(playerSessionID) if err != nil { connection.Accept() } else { connection.Reject(err.Error()) } }

RemovePlayerSession()

Indique à Amazon GameLift qu'un joueur s'est déconnecté du processus du serveur. En réponse, Amazon GameLift modifie l'emplacement du joueur pour le rendre disponible.

Syntaxe

func RemovePlayerSession(playerSessionID string) error

Paramètres

playerSessionId

Identifiant unique émis par Amazon GameLift lors de la création d'une nouvelle session de joueur.

Valeur renvoyée

Renvoie un résultat générique consistant en un succès ou un échec avec un message d'erreur.

Exemple

err := server.RemovePlayerSession(playerSessionID)

DescribePlayerSessions()

Récupère les données de session du joueur, notamment les paramètres, les métadonnées de session et les données du joueur. Utilisez cette méthode pour obtenir des informations sur les points suivants :

  • Une session solo

  • Toutes les sessions des joueurs au cours d'une session de jeu

  • Toutes les sessions de joueur associées à un identifiant de joueur unique

Syntaxe

func DescribePlayerSessions(req request.DescribePlayerSessionsRequest) (result.DescribePlayerSessionsResult, error) { return srv.describePlayerSessions(&req) }

Paramètres

DescribePlayerSessionsRequest

Un DescribePlayerSessionsRequest objet décrit les sessions de joueur à récupérer.

Valeur renvoyée

En cas de succès, renvoie un DescribePlayerSessionsResult objet contenant un ensemble d'objets de session de joueur correspondant aux paramètres de la demande.

Exemple

Cet exemple demande toutes les sessions de joueur activement connectées à une session de jeu spécifiée. En omettant NextTokenet en définissant la valeur limite sur 10, Amazon GameLift renvoie les 10 premiers enregistrements de session de joueur correspondant à la demande.

// create request describePlayerSessionsRequest := request.NewDescribePlayerSessions() describePlayerSessionsRequest.GameSessionID, _ = server.GetGameSessionID() // get ID for the current game session describePlayerSessionsRequest.Limit = 10 // return the first 10 player sessions describePlayerSessionsRequest.PlayerSessionStatusFilter = "ACTIVE" // Get all player sessions actively connected to the game session describePlayerSessionsResult, err := server.DescribePlayerSessions(describePlayerSessionsRequest)

StartMatchBackfill()

Envoie une demande pour trouver de nouveaux joueurs pour les machines à sous ouvertes dans une session de jeu créée avec FlexMatch. Pour plus d'informations, voir la fonction de FlexMatch remblayage.

Cette action est asynchrone. Si de nouveaux joueurs sont jumelés, Amazon GameLift fournit des données de matchmaking mises à jour à l'aide de la fonction de rappel. OnUpdateGameSession()

Un processus de serveur ne peut comporter qu'une seule requête de renvoi de correspondance à la fois. Pour envoyer une nouvelle requête, appelez d'abord StopMatchBackfill() pour annuler la requête d'origine.

Syntaxe

func StartMatchBackfill(req request.StartMatchBackfillRequest) (result.StartMatchBackfillResult, error)

Paramètres

StartMatchBackfillRequest

Un StartMatchBackfillRequest objet communique les informations suivantes :

  • ID de ticket à attribuer à la requête de renvoi. Ces informations sont facultatives ; si aucun identifiant n'est fourni, Amazon en GameLift génère un.

  • Matchmaker auquel envoyer la requête. L'ARN de configuration complet est obligatoire. Cette valeur se trouve dans les données du matchmaker de la session de jeu.

  • ID de la session de jeu à compléter.

  • Les données de matchmaking disponibles pour les joueurs actuels de la session de jeu.

Valeur renvoyée

Renvoie un StartMatchBackfillResult objet avec l'identifiant du ticket de remplacement correspondant, ou un échec avec un message d'erreur.

Exemple

// form the request startBackfillRequest := request.NewStartMatchBackfill() startBackfillRequest.RequestID = "1111aaaa-22bb-33cc-44dd-5555eeee66ff" // optional startBackfillRequest.MatchmakingConfigurationArn = "arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MyMatchmakerConfig" var matchMaker model.MatchmakerData if err := matchMaker.UnmarshalJSON([]byte(gameSession.MatchmakerData)); err != nil { return } startBackfillRequest.Players = matchMaker.Players res, err := server.StartMatchBackfill(startBackfillRequest) // Implement callback function for backfill func OnUpdateGameSession(myGameSession model.GameSession) { // game-specific tasks to prepare for the newly matched players and update matchmaker data as needed }

StopMatchBackfill()

Annule une demande de remplacement de match active. Pour plus d'informations, voir la fonction de FlexMatch remblayage.

Syntaxe

func StopMatchBackfill(req request.StopMatchBackfillRequest) error

Paramètres

StopMatchBackfillRequest

Un StopMatchBackfillRequest objet qui identifie le ticket de matchmaking à annuler :

  • L'identifiant du ticket attribué à la demande de remblayage.

  • L'entremetteur à qui la demande de remblayage a été envoyée.

  • La session de jeu associée à la demande de remplacement.

Valeur renvoyée

Renvoie un résultat générique consistant en un succès ou un échec avec un message d'erreur.

Exemple

stopBackfillRequest := request.NewStopMatchBackfill() // Use this function to create request stopBackfillRequest.TicketID = "1111aaaa-22bb-33cc-44dd-5555eeee66ff" stopBackfillRequest.MatchmakingConfigurationArn = "arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MyMatchmakerConfig" //error err := server.StopMatchBackfill(stopBackfillRequest)

GetComputeCertificate()

Récupère le chemin d'accès au certificat TLS utilisé pour chiffrer la connexion réseau entre le serveur de jeu et votre client de jeu. Vous pouvez utiliser le chemin du certificat lorsque vous enregistrez votre appareil informatique dans une GameLift Anywhere flotte Amazon. Pour plus d'informations, consultez RegisterCompute.

Syntaxe

func GetComputeCertificate() (result.GetComputeCertificateResult, error)

Valeur renvoyée

Renvoie un GetComputeCertificateResult objet contenant les éléments suivants :

  • CertificatePath: chemin d'accès au certificat TLS sur votre ressource de calcul. Lorsque vous utilisez une flotte GameLift gérée par Amazon, ce chemin contient :

    • certificate.pem: le certificat de l'utilisateur final. La chaîne de certificats complète est la combinaison des certificateChain.pem éléments ajoutés à ce certificat.

    • certificateChain.pem: chaîne de certificats qui contient le certificat racine et les certificats intermédiaires.

    • rootCertificate.pem: le certificat racine.

    • privateKey.pem: clé privée pour le certificat d'utilisateur final.

  • ComputeName: nom de votre ressource de calcul.

Exemple

tlsCertificate, err := server.GetFleetRoleCredentials(getFleetRoleCredentialsRequest)

GetFleetRoleCredentials()

Récupère les informations d'identification du rôle de service que vous créez pour accorder des autorisations à votre interlocuteur Services AWS sur Amazon GameLift. Ces informations d'identification permettent à votre serveur de jeu d'utiliser vos AWS ressources. Pour plus d’informations, consultez Configurer un rôle de service IAM pour Amazon GameLift.

Syntaxe

func GetFleetRoleCredentials( req request.GetFleetRoleCredentialsRequest, ) (result.GetFleetRoleCredentialsResult, error) { return srv.getFleetRoleCredentials(&req) }

Paramètres

GetFleetRoleCredentialsRequest

Des informations d'identification de rôle qui étendent un accès limité à vos AWS ressources au serveur de jeu.

Valeur renvoyée

Renvoie un GetFleetRoleCredentialsResult objet contenant les éléments suivants :

  • AssumedRoleUserArn - Le nom de ressource Amazon (ARN) de l'utilisateur auquel appartient le rôle de service.

  • AssumedRoleId - L'ID de l'utilisateur auquel appartient le rôle de service.

  • AccessKeyId - L'ID de clé d'accès pour authentifier et fournir un accès à vos AWS ressources.

  • SecretAccessKey - L'identifiant de la clé d'accès secrète pour l'authentification.

  • SessionToken - Un jeton pour identifier la session active en cours qui interagit avec vos AWS ressources.

  • Expiration : délai avant l'expiration des informations d'identification de votre session.

Exemple

// form the customer credentials request getFleetRoleCredentialsRequest := request.NewGetFleetRoleCredentials() getFleetRoleCredentialsRequest.RoleArn = "arn:aws:iam::123456789012:role/service-role/exampleGameLiftAction" credentials, err := server.GetFleetRoleCredentials(getFleetRoleCredentialsRequest)

Détruire ()

Libère de la mémoire le SDK du serveur de GameLift jeu Amazon. Il est recommandé d'appeler cette méthode après ProcessEnding() et avant de terminer le processus. Si vous utilisez une flotte Anywhere et que vous n'interrompez pas les processus du serveur après chaque session de jeu, appelez Destroy() puis réinitialisez avant InitSDK() d'informer Amazon GameLift que le processus est prêt à héberger une session de jeu avec. ProcessReady()

Syntaxe

func Destroy() error { return srv.destroy() }

Valeur renvoyée

Renvoie une erreur accompagnée d'un message d'erreur en cas d'échec de la méthode.

Exemple

// operations to end game sessions and the server process defer func() { err := server.ProcessEnding() server.Destroy() if err != nil { fmt.Println("ProcessEnding() failed. Error: ", err) os.Exit(-1) } else { os.Exit(0) } }