Passer de Gamelift

Si vous souhaitez passer d'AWS Gamelift à Edgegap, les étapes simples suivantes vous permettront de démarrer en un rien de temps. Avant de commencer, nous supposons que :

  • Vous utilisez actuellement AWS Gamelift

  • Vous disposez actuellement d'une build de serveur de jeu fonctionnelle sur Gamelift

  • Vous avez déjà créé et déployé une application sur Edgegap

circle-info

Vous bénéficierez de bien plus d'emplacements avec la solution Edgegap.

Supprimer le SDK AWS Gamelift

La première étape pour passer à Edgegap est de supprimer le code qui initialise AWS Gamelift dans votre serveur de jeu. Cela permet de réduire la charge et d'éviter les erreurs. Le code que vous cherchez à supprimer ressemble probablement à ce qui suit :

Unity (C#)

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

public class GameLiftServerExampleBehavior : MonoBehaviour
{
    //Ceci est un exemple d'intégration simple avec le SDK serveur GameLift qui rendra les processus du serveur de jeu actifs sur GameLift !
    public void Start()
    {
        //Identifier le numéro de port (codé en dur ici pour simplifier) sur lequel le serveur de jeu écoute les connexions des joueurs
        var listeningPort = 7777;

        //InitSDK établira une connexion locale avec l'agent de GameLift pour permettre une communication ultérieure.
        var initSDKOutcome = GameLiftServerAPI.InitSDK();
        if (initSDKOutcome.Success)
        {
            ProcessParameters processParameters = new ProcessParameters(
                (gameSession) => {
                    //Lorsqu'une session de jeu est créée, GameLift envoie une demande d'activation au serveur de jeu et transmet l'objet session de jeu contenant les propriétés et autres paramètres.
                    //C'est ici qu'un serveur de jeu doit agir en fonction de l'objet session de jeu.
                    //Une fois que le serveur de jeu est prêt à recevoir des connexions de joueurs entrantes, il doit invoquer GameLiftServerAPI.ActivateGameSession()
                    GameLiftServerAPI.ActivateGameSession();
                },
                (updateGameSession) => {
                    //Lorsqu'une session de jeu est mise à jour (par exemple par un backfill FlexMatch), GameLift envoie une demande au serveur
                    //contenant l'objet session de jeu mis à jour. Le serveur de jeu peut alors examiner les
                    //matchmakerData fournis et gérer correctement les nouveaux joueurs entrants.
                    //updateReason est la raison pour laquelle cette mise à jour est fournie.
                },
                () => {
                    //Callback OnProcessTerminate. GameLift invoquera ce callback avant d'arrêter une instance hébergeant ce serveur de jeu.
                    //Cela donne à ce serveur de jeu la possibilité de sauvegarder son état, de communiquer avec des services, etc., avant d'être arrêté.
                    //Dans ce cas, nous disons simplement à GameLift que nous allons effectivement nous arrêter.
                    GameLiftServerAPI.ProcessEnding();
                },
                () => {
                    //Ceci est le callback HealthCheck.
                    //GameLift invoquera ce callback toutes les ~60 secondes.
                    //Ici, un serveur de jeu pourrait vouloir vérifier la santé des dépendances, etc.
                    //Retourner simplement true si sain, false sinon.
                    //Le serveur de jeu dispose de 60 secondes pour répondre avec son état de santé. GameLift par défaut prendra 'false' si le serveur de jeu ne répond pas à temps.
                    //Dans ce cas, nous sommes toujours en bonne santé !
                    return true;
                },
                listeningPort, //Ce serveur de jeu indique à GameLift qu'il écoutera sur le port 7777 pour les connexions des joueurs entrants.
                new LogParameters(new List<string>()
                {
                    //Ici, le serveur de jeu indique à GameLift quels fichiers télécharger lorsque la session de jeu se termine.
                    //GameLift téléchargera tout ce qui est spécifié ici pour que les développeurs puissent les récupérer plus tard.
                    "/local/game/logs/myserver.log"
                }));

            //Appeler ProcessReady indique à GameLift que ce serveur de jeu est prêt à recevoir des sessions de jeu entrantes !
            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()
    {
        //Assurez-vous d'appeler GameLiftServerAPI.Destroy() lorsque l'application se ferme. Cela réinitialise la connexion locale avec l'agent de GameLift.
        GameLiftServerAPI.Destroy();
    }
}

Unreal Engine (C++)

Conteneurisez votre serveur de jeu

Publiez votre conteneur dans un repository

Vous devrez pousser votre conteneur dans un repository. Vous pouvez utiliser le repository privé d'Edgegap ou toute autre option.

Créer une application sur Edgegap

Maintenant que votre conteneur est dans un repository, vous devrez créer une Application sur Edgegap. Cette Application représentera votre serveur de jeu. Avec cette application, vous pourrez déployer votre serveur.

Vous pouvez maintenant déployer votre serveur à la demande pour vos joueurs !

Mis à jour

Ce contenu vous a-t-il été utile ?