> For the complete documentation index, see [llms.txt](https://docs.edgegap.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.edgegap.com/fr/docs/tools-and-integrations/gamelift-to-arbitrium.md).

# Passer depuis GameLift

Migrez vos serveurs de jeu d’AWS GameLift vers Edgegap avec un ensemble court d’étapes pour être opérationnel rapidement.

Vous cherchez une alternative plus simple à votre hébergement actuel de serveur dédié Amazon Gamelift ?

## Comparer les fonctionnalités

Identifiez les services et fonctionnalités de Gamelift et débloquez votre projet avec les équivalents Edgegap :

<table><thead><tr><th width="250">Fonctionnalité AWS Gamelift</th><th>Fonctionnalités Edgegap</th></tr></thead><tbody><tr><td>Plugin de compilation du serveur</td><td><p>Plugins de démarrage rapide natifs du moteur, entièrement automatisés :</p><ul><li><a data-mention href="/fr/unity.md">Unity</a> / <a data-mention href="/fr/unreal-engine.md">Unreal Engine</a> / <a data-mention href="/fr/godot.md">Godot</a>.</li></ul></td></tr><tr><td>SDK serveur</td><td><strong>Aucun SDK requis !</strong> Gérer <a href="/fr/learn/orchestration/application-and-versions.md">Versions de l'application</a> sans reconstruction.</td></tr><tr><td>Flexmatch auto-hébergé</td><td><p><a href="/fr/learn/matchmaking.md">Matchmaker géré</a>, <a href="/fr/learn/matchmaking/matchmaker-in-depth.md#hosting-cluster">testez gratuitement</a>.</p><p>Voir aussi le SDK léger facultatif pour <a href="/fr/unreal-engine/developer-tools.md#integration-kit">Unreal</a> et <a href="/fr/unity/matchmaking.md">Unity</a>.</p></td></tr><tr><td>API SearchGameSessions</td><td><p><a href="/fr/learn/navigateur-de-serveurs.md">Navigateur de serveurs géré - testez gratuitement.</a></p><p>Voir aussi le SDK léger facultatif pour <a href="/fr/unreal-engine/developer-tools.md#integration-kit">Unreal</a> et <a href="/fr/unity/server-browser.md">Unity</a>.</p></td></tr><tr><td>Authentification du client de jeu</td><td><p>Ajoutez des contrôles d'accès granulaires adaptés à votre modèle de session :</p><ul><li><a href="/fr/learn/matchmaking/matchmaker-in-depth.md#authenticate">Matchmaking</a> / <a href="/fr/learn/navigateur-de-serveurs.md#authenticate">Navigateur de serveurs</a> / <a href="https://app.edgegap.com/user-settings?tab=tokens">Sessions personnalisées faites maison</a>.</li></ul></td></tr><tr><td>Flottes - mise à l'échelle horizontale</td><td><a data-mention href="/fr/learn/orchestration/flottes-privees.md">Flottes privées</a> avec <a data-mention href="/fr/learn/orchestration/persistance.md">Persistance</a> et <a href="https://docs.edgegap.com/learn/orchestration/private-fleets#overflow-to-cloud">Débordement vers le cloud</a>.</td></tr><tr><td>Tests A/B, alias, files d'attente</td><td><a href="/fr/learn/matchmaking/matchmaker-in-depth.md#matchmaking-profiles">Profils (files d'attente)</a> / <a href="/fr/learn/orchestration/flottes-privees.md#overflow-to-cloud">Métadonnées d'instance</a> / <a href="/fr/learn/matchmaking/matchmaker-in-depth.md#rolling-updates-and-ab-tests">Mises à jour progressives</a>.</td></tr><tr><td>Analytique du serveur</td><td><a href="/fr/learn/orchestration/deployments.md#analytics">Analytique du déploiement</a> et <a href="/fr/learn/matchmaking/matchmaker-in-depth.md#analytics">Analytique du matchmaking</a>.</td></tr></tbody></table>

## Supprimer le SDK AWS Gamelift

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

{% tabs %}
{% tab title="Unity (C#)" %}
{% code expandable="true" %}

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

public class GameLiftServerExampleBehavior : MonoBehaviour
{
    //Voici un exemple d'intégration simple avec le SDK serveur GameLift qui fera passer les processus du serveur de jeu à l'état actif sur GameLift !
    public void Start()
    {
        //Identifiez 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 afin d'activer les communications ultérieures.
        var initSDKOutcome = GameLiftServerAPI.InitSDK();
        if (initSDKOutcome.Success)
        {
            ProcessParameters processParameters = new ProcessParameters(
                (gameSession) => {
                    //Lorsqu'une session de jeu est créée, GameLift envoie une requête d'activation au serveur de jeu et transmet l'objet de session de jeu contenant les propriétés du jeu et d'autres paramètres.
                    //C'est ici qu'un serveur de jeu doit agir en fonction de l'objet de session de jeu.
                    //Une fois que le serveur de jeu est prêt à recevoir les connexions entrantes des joueurs, il doit appeler GameLiftServerAPI.ActivateGameSession()
                    GameLiftServerAPI.ActivateGameSession();
                },
                (updateGameSession) => {
                    //Lorsqu'une session de jeu est mise à jour (par exemple via le backfill FlexMatch), GameLift envoie une requête au jeu
                    //serveur contenant l'objet de session de jeu mis à jour. Le serveur de jeu peut alors examiner les
                    //données du matchmaker fournies et gérer correctement les nouveaux joueurs entrants.
                    //updateReason est la raison pour laquelle cette mise à jour est fournie.
                },
                () => {
                    //Rappel OnProcessTerminate. GameLift appellera ce rappel avant d'arrêter une instance hébergeant ce serveur de jeu.
                    //Cela donne à ce serveur de jeu une chance d'enregistrer son état, de communiquer avec les services, etc., avant d'être arrêté.
                    //Dans ce cas, nous indiquons simplement à GameLift que nous allons effectivement nous arrêter.
                    GameLiftServerAPI.ProcessEnding();
                },
                () => {
                    //Ceci est le rappel HealthCheck.
                    //GameLift appellera ce rappel toutes les 60 secondes environ.
                    //Ici, un serveur de jeu pourrait vouloir vérifier l'état de santé des dépendances, etc.
                    //Il suffit de renvoyer true si tout va bien, false sinon.
                    //Le serveur de jeu dispose de 60 secondes pour répondre avec son état de santé. GameLift considérera par défaut '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 entrantes des joueurs.
                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 ici tout ce qui est spécifié afin que les développeurs puissent le 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();
    }
}
```

{% endcode %}
{% endtab %}

{% tab title="Unreal Engine (C++)" %}
{% code expandable="true" %}

```cpp
using UnrealBuildTool;

public class MyAwesomeGame : ModuleRules
{
	public MyAwesomeGame(TargetInfo Target)
	{
		PublicDependencyModuleNames.AddRange(
            // Supprimer GameLiftServerSDK
            new string[] { "Core", "CoreUObject", "Engine", "InputCore", "GameLiftServerSDK" }
        );
        bEnableExceptions = true;
	}
}
```

{% endcode %}

{% code expandable="true" %}

```cpp
#include "GameLiftFPS.h"
#include "Engine.h"
#include "EngineGlobals.h"
#include "GameLiftFPSGameMode.h"
#include "GameLiftFPSHUD.h"
#include "GameLiftFPSCharacter.h"
#include "GameLiftServerSDK.h"

AGameLiftFPSGameMode::AGameLiftFPSGameMode()
	: Super()
{

//Exécutons ce code uniquement si GAMELIFT est activé. Uniquement avec les cibles serveur !
#if WITH_GAMELIFT

	//On récupère d'abord le module.
	FGameLiftServerSDKModule* gameLiftSdkModule = &FModuleManager::LoadModuleChecked<FGameLiftServerSDKModule>(FName("GameLiftServerSDK"));

	//InitSDK établira une connexion locale avec l'agent de GameLift afin d'activer les communications ultérieures.
	gameLiftSdkModule->InitSDK();

	//Lorsqu'une session de jeu est créée, GameLift envoie une requête d'activation au serveur de jeu et transmet l'objet de session de jeu contenant les propriétés du jeu et d'autres paramètres.
	//C'est ici qu'un serveur de jeu doit agir en fonction de l'objet de session de jeu.
	//Une fois que le serveur de jeu est prêt à recevoir les connexions entrantes des joueurs, il doit appeler GameLiftServerAPI.ActivateGameSession()
	auto onGameSession = [=](Aws::GameLift::Server::Model::GameSession gameSession)
	{
		gameLiftSdkModule->ActivateGameSession();
	};

	FProcessParameters* params = new FProcessParameters();
	params->OnStartGameSession.BindLambda(onGameSession);

	//Rappel OnProcessTerminate. GameLift appellera ce rappel avant d'arrêter une instance hébergeant ce serveur de jeu.
	//Cela donne à ce serveur de jeu une chance d'enregistrer son état, de communiquer avec les services, etc., avant d'être arrêté.
	//Dans ce cas, nous indiquons simplement à GameLift que nous allons effectivement nous arrêter.
	params->OnTerminate.BindLambda([=](){gameLiftSdkModule->ProcessEnding();});

	//Ceci est le rappel HealthCheck.
	//GameLift appellera ce rappel toutes les 60 secondes environ.
	//Ici, un serveur de jeu pourrait vouloir vérifier l'état de santé des dépendances, etc.
	//Il suffit de renvoyer true si tout va bien, false sinon.
	//Le serveur de jeu dispose de 60 secondes pour répondre avec son état de santé. GameLift considérera par défaut 'false' si le serveur de jeu ne répond pas à temps.
	//Dans ce cas, nous sommes toujours en bonne santé !
	params->OnHealthCheck.BindLambda([](){return true; });

	//Ce serveur de jeu indique à GameLift qu'il écoutera sur le port 7777 pour les connexions entrantes des joueurs.
	params->port = 7777;

	//Ici, le serveur de jeu indique à GameLift quels fichiers télécharger lorsque la session de jeu se termine.
	//GameLift téléchargera ici tout ce qui est spécifié afin que les développeurs puissent le récupérer plus tard.
	TArray<FString> logfiles;
	logfiles.Add(TEXT("aLogFile.txt"));
	params->logParameters = logfiles;

	//Appeler ProcessReady indique à GameLift que ce serveur de jeu est prêt à recevoir des sessions de jeu entrantes !
	gameLiftSdkModule->ProcessReady(*params);
#endif
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

## Commencez avec Edgegap

Essayez l’un de nos guides de démarrage rapide pris en charge par des plugins de moteurs de jeu :

* [Unreal Engine](/fr/unreal-engine.md),
* [Unity](/fr/unity.md),
* [Godot](/fr/godot.md),
* Environnement d’exécution personnalisé (bientôt disponible).
