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.
Intégrer Amazon GameLift dans un projet Unreal Engine
Cette rubrique explique comment configurer le SDKplugin de serveur Amazon GameLift C++ pour Unreal Engine et l'intégrer dans vos projets de jeu.
Ressources supplémentaires :
Prérequis
Avant de continuer, assurez-vous d'avoir passé en revue les conditions préalables suivantes :
Prérequis
-
Un ordinateur capable d'exécuter Unreal Engine. Pour plus d'informations sur les exigences d'Unreal Engine, consultez la documentation relative aux spécifications matérielles et logicielles
d'Unreal Engine. -
Microsoft Visual Studio 2019 ou version plus récente.
-
CMakeversion 3.1 ou ultérieure.
Python version 3.6 ou ultérieure.
-
Un client Git disponible sur lePATH.
-
Un compte Epic Games. Ouvrez un compte sur le site officiel d'Unreal Engine
. -
Un GitHub compte associé à votre compte Unreal Engine. Pour plus d'informations, consultez la section Accès au code source d'Unreal Engine GitHub sur le
site Web d'Unreal Engine.
Note
Amazon prend GameLift actuellement en charge les versions suivantes d'Unreal Engine :
-
4,22
-
4,23
-
4,24
-
4,25
-
4,26
-
4,27
-
5.1.0
-
5.1.1
-
5.2
-
5.3
Créez Unreal Engine à partir des sources
Les versions standard de l'éditeur Unreal Engine, téléchargées via le lanceur Epic, autorisent uniquement les builds d'applications clientes Unreal. Pour créer une application serveur Unreal, vous devez télécharger et créer Unreal Engine à partir des sources, en utilisant le référentiel Unreal Engine Github. Pour plus d'informations, consultez le didacticiel Building Unreal Engine from Source
Note
Si ce n'est pas déjà fait, suivez les instructions de la section Accès au code source d'Unreal Engine GitHub
Pour cloner le code source Unreal Engine dans votre environnement de développement
-
Clonez le code source Unreal Engine dans votre environnement de développement dans une branche de votre choix.
git clone https://github.com/EpicGames/UnrealEngine.git
-
Consultez le tag de la version que vous utilisez pour développer votre jeu. Par exemple, l'exemple suivant utilise la version 5.1.1 d'Unreal Engine :
git checkout tags/5.1.1-release -b 5.1.1-release
-
Accédez au dossier racine du référentiel local. Lorsque vous êtes dans le dossier racine, exécutez le fichier suivant :
Setup.bat
-
Dans le dossier racine, exécutez également le fichier :
GenerateProjectFiles.bat
. -
Après avoir exécuté les fichiers des étapes précédentes, un fichier de solution Unreal Engine est créé.
UE5.sln
Ouvrez Visual Studio, puis ouvrez leUE5.sln
fichier dans l'éditeur Visual Studio. -
Dans Visual Studio, ouvrez le menu Affichage et choisissez l'option Explorateur de solutions. Cela ouvre le menu contextuel du nœud du projet Unreal. Dans la fenêtre de l'Explorateur de solutions, cliquez avec le bouton droit sur le
UE5.sln
fichier (il peut être simplement répertoriéUE5
), puis choisissez Build pour créer le projet Unreal avec la cible Win64 de l'éditeur de développement.Note
La construction peut prendre plus d'une heure.
Une fois la compilation terminée, vous êtes prêt à ouvrir l'éditeur de développement Unreal et à créer ou importer un projet.
Configurez votre projet Unreal pour le plugin
Suivez ces étapes pour préparer le SDK plugin de GameLift serveur Amazon pour Unreal Engine à vos projets de serveur de jeu.
Pour configurer votre projet pour le plugin
-
Visual Studio étant ouvert, accédez au volet Explorateur de solutions et choisissez le
UE5
fichier pour ouvrir le menu contextuel du projet Unreal. Dans le menu contextuel, choisissez l'option Définir comme projet de démarrage. -
En haut de votre fenêtre Visual Studio, choisissez Démarrer le débogage (flèche verte).
Cette action démarre votre nouvelle instance créée en source d'Unreal Editor. Pour plus d'informations sur l'utilisation de l'éditeur Unreal, consultez l'interface Unreal Editor
sur le site Web de documentation d'Unreal Engine. -
Fermez la fenêtre Visual Studio que vous avez ouverte, car l'éditeur Unreal ouvre une autre fenêtre Visual Studio contenant le projet Unreal et votre projet de jeu.
-
Dans l'éditeur Unreal, effectuez l'une des opérations suivantes :
Choisissez un projet Unreal existant que vous souhaitez intégrer à Amazon GameLift.
-
Crée un projet. Pour tester le GameLift plugin Amazon pour Unreal, essayez d'utiliser le modèle Third Person du moteur Unreal. Pour plus d'informations sur ce modèle, consultez la section Modèle à la troisième personne
sur le site Web de documentation d'Unreal Engine. Vous pouvez également configurer un nouveau projet avec les paramètres suivants :
C++
Avec du contenu de démarrage
Desktop
Un nom de projet. Dans les exemples présentés dans cette rubrique, nous avons nommé notre projet
GameLiftUnrealApp
.
Dans l'explorateur de solutions de Visual Studio, accédez à l'emplacement de votre projet Unreal. Dans le
Source
dossier Unreal, recherchez un fichier nommé
.Your-application-name
.Target.csolpPar exemple :
GameLiftUnrealApp.Target.cs
.Faites une copie de ce fichier et nommez-la :
.Your-application-name
Server.Target.csOuvrez le nouveau fichier et apportez les modifications suivantes :
Modifiez le
class
etconstructor
pour qu'il corresponde au nom du fichier.Changez la
Type
forme deTargetType.Game
àTargetType.Server
.Le fichier final ressemblera à l'exemple suivant :
public class GameLiftUnrealAppServerTarget : TargetRules { public GameLiftUnrealAppServerTarget(TargetInfo Target) : base(Target) { Type = TargetType.Server; DefaultBuildSettings = BuildSettingsVersion.V2; IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_1; ExtraModuleNames.Add("GameLiftUnrealApp"); } }
Votre projet est désormais configuré pour accepter le SDK plugin GameLift du serveur Amazon.
La tâche suivante consiste à créer les SDK bibliothèques du serveur C++ pour Unreal afin de pouvoir les importer dans votre projet.
Pour créer les SDK bibliothèques de serveur C++ pour Unreal
-
Téléchargez le SDKplugin de serveur Amazon GameLift C++ pour Unreal.
Note
Le placer SDK dans le répertoire de téléchargement par défaut peut entraîner un échec de compilation car le chemin dépasse la limite de 260 caractères. Par exemple :
C:\Users\Administrator\Downloads\GameLift-SDK-Release-06_15_2023\GameLift-Cpp-ServerSDK-5.0.4
Nous vous recommandons de le déplacer SDK vers un autre répertoire, par exemple
C:\GameLift-Cpp-ServerSDK-5.0.4
. Téléchargez et installez OpenSSL. Pour plus d'informations sur le téléchargement d'OpenSSL, consultez la documentation de SSLcompilation et d'installation de Github Open
. Pour plus d'informations, consultez la documentation d'Open SSL Notes pour les plateformes Windows
. Note
La version d'Open SSL que vous utilisez pour créer le GameLift serveur Amazon SDK doit correspondre à la version d'Open SSL utilisée par Unreal pour empaqueter votre serveur de jeu. Vous trouverez les informations de version dans le répertoire
...Engine\Source\ThirdParty\OpenSSL
d'installation d'Unreal.-
Une fois les bibliothèques téléchargées, créez les SDK bibliothèques du serveur C++ pour Unreal Engine.
Dans le
GameLift-Cpp-ServerSDK-
répertoire téléchargéSDK, compilez avec le<version>
-DBUILD_FOR_UNREAL=1
paramètre et créez le serveurSDK. Les exemples suivants montrent comment compiler à l'aide decmake
.Exécutez les commandes suivantes dans votre terminal :
mkdir cmake-build cmake.exe -G "Visual Studio 17 2022" -DCMAKE_BUILD_TYPE=Release -S . -B ./cmake-build -DBUILD_FOR_UNREAL=1 -A x64 cmake.exe --build ./cmake-build --target ALL_BUILD --config Release
La version Windows crée les fichiers binaires suivants dans le
out\gamelift-server-sdk\Release
dossier :-
cmake-build\prefix\bin\aws-cpp-sdk-gamelift-server.dll
-
cmake-build\prefix\bin\aws-cpp-sdk-gamelift-server.lib
Copiez les deux fichiers de bibliothèque dans le
ThirdParty\GameLiftServerSDK\Win64
dossier du package du plugin Amazon GameLift Unreal Engine. -
Utilisez la procédure suivante pour importer le GameLift plugin Amazon dans votre exemple de projet.
Importer le GameLift plugin Amazon
Localisez le
GameLiftServerSDK
dossier que vous avez extrait du plugin dans la procédure précédente.Repérez-le
Plugins
dans le dossier racine de votre projet de jeu. (Si le dossier n'existe pas, créez-le ici.)Copiez le
GameLiftServerSDK
dossier dans lePlugins
.Cela permettra au projet Unreal de voir le plugin.
-
Ajoutez le SDK plug-in GameLift du serveur Amazon au
.uproject
fichier du jeu.Dans l'exemple, l'application est appelée
GameLiftUnrealApp
, le fichier sera donc appeléGameLiftUnrealApp.uproject
. -
Modifiez le
.uproject
fichier pour ajouter le plugin à votre projet de jeu."Plugins": [ { "Name": "GameLiftServerSDK", "Enabled": true } ]
Assurez-vous que le ModuleRules jeu dépend du plugin. Ouvrez le
.Build.cs
fichier et ajoutez la GameLiftServer SDK dépendance Amazon. Ce fichier se trouve sous
.Your-application-name
/Source//Your-application-name/
Par exemple, le chemin du fichier du didacticiel est.
../GameLiftUnrealApp/Source/GameLiftUnrealApp/GameLiftUnrealApp.Build.cs
Ajouter
"GameLiftServerSDK"
à la fin de la liste desPublicDependencyModuleNames
.using UnrealBuildTool; using System.Collections.Generic; public class GameLiftUnrealApp : ModuleRules { public GameLiftUnrealApp(TargetInfo Target) { PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "GameLiftServerSDK" }); bEnableExceptions = true; } }
Le plugin devrait maintenant fonctionner pour votre application. Passez à la section suivante pour intégrer les GameLift fonctionnalités Amazon à votre jeu.
Ajoutez le code GameLift du serveur Amazon à votre projet Unreal
Vous avez configuré et configuré votre environnement Unreal Engine, et vous pouvez désormais intégrer un serveur de jeu à Amazon GameLift. Le code présenté dans cette rubrique permet d'effectuer les appels requis vers le GameLift service Amazon. Il implémente également un ensemble de fonctions de rappel qui répondent aux demandes du GameLift service Amazon. Pour plus d'informations sur chaque fonction et sur le rôle du code, voir Initialiser le processus du serveur. Pour plus d'informations sur les SDK actions et les types de données utilisés dans ce code, consultez. GameLift Serveur Amazon SDK 5.x pour Unreal Engine : Actions
Pour initialiser un serveur de jeu avec Amazon GameLift, suivez la procédure ci-dessous.
Note
Le code GameLift spécifique à Amazon fourni dans la section suivante dépend de l'utilisation d'un indicateur de WITH_GAMELIFT
préprocesseur. Cet indicateur n'est vrai que lorsque les deux conditions suivantes sont remplies :
-
Target.Type == TargetRules.TargetType.Server
-
Les plugins ont détecté les SDK fichiers binaires GameLift du serveur Amazon.
Cela garantit que seules les versions d'Unreal Server invoquent le backend GameLift API d'Amazon. Il vous permet également d'écrire du code qui s'exécutera correctement pour toutes les cibles Unreal que votre jeu pourrait produire.
Intégrer un serveur de jeu à Amazon GameLift
-
Dans Visual Studio, ouvrez le
.sln
fichier correspondant à votre application. Dans notre exemple, le fichier seGameLiftUnrealApp.sln
trouve dans le dossier racine. -
La solution étant ouverte, localisez le
fichier de votre application. Exemple:Your-application-name
GameMode.hGameLiftUnrealAppGameMode.h
. -
Modifiez le fichier d'en-tête pour l'aligner sur l'exemple de code suivant. Assurez-vous de remplacer « GameLiftUnrealApp » par le nom de votre propre application.
#pragma once #include "CoreMinimal.h" #include "GameFramework/GameModeBase.h" #include "GameLiftServerSDK.h" #include "GameLiftUnrealAppGameMode.generated.h" DECLARE_LOG_CATEGORY_EXTERN(GameServerLog, Log, All); UCLASS(minimalapi) class AGameLiftUnrealAppGameMode : public AGameModeBase { GENERATED_BODY() public: AGameLiftUnrealAppGameMode(); protected: virtual void BeginPlay() override; private: // Process Parameters needs to remain in scope for the lifetime of the app FProcessParameters m_params; void InitGameLift(); };
-
Ouvrez le
fichier source correspondant. Dans notre exemple :Your-application-name
GameMode.cppGameLiftUnrealAppGameMode.cpp
. et modifiez le code pour l'aligner sur l'exemple de code suivant. Assurez-vous de remplacer « GameLiftUnrealApp » par le nom de votre propre application.Cet exemple montre comment ajouter tous les éléments nécessaires à l'intégration avec Amazon GameLift, comme décrit dans Ajouter Amazon GameLift à votre serveur de jeu. Cela consiste notamment à :
-
Initialisation d'un GameLift API client Amazon.
-
Implémentation de fonctions de rappel pour répondre aux demandes du GameLift service Amazon, notamment
OnStartGameSession
OnProcessTerminate
, etonHealthCheck
. -
Appelez ProcessReady () avec un port désigné pour avertir Amazon GameLiftservice lorsqu'il est prêt à héberger des sessions de jeu.
#include "GameLiftUnrealAppGameMode.h" #include "GameLiftUnrealAppCharacter.h" #include "UObject/ConstructorHelpers.h" DEFINE_LOG_CATEGORY(GameServerLog); AGameLiftUnrealAppGameMode::AGameLiftUnrealAppGameMode() { // set default pawn class to our Blueprinted character static ConstructorHelpers::FClassFinder<APawn> PlayerPawnBPClass(TEXT("/Game/ThirdPerson/Blueprints/BP_ThirdPersonCharacter")); if (PlayerPawnBPClass.Class != NULL) { DefaultPawnClass = PlayerPawnBPClass.Class; } } void AGameLiftUnrealAppGameMode::BeginPlay() { #if WITH_GAMELIFT InitGameLift(); #endif } void AGameLiftUnrealAppGameMode::InitGameLift() { UE_LOG(GameServerLog, Log, TEXT("Initializing the GameLift Server")); //Getting the module first. FGameLiftServerSDKModule* gameLiftSdkModule = &FModuleManager::LoadModuleChecked<FGameLiftServerSDKModule>(FName("GameLiftServerSDK")); //Define the server parameters for a GameLift Anywhere fleet. These are not needed for a GameLift managed EC2 fleet. FServerParameters serverParameters; //AuthToken returned from the "aws gamelift get-compute-auth-token" API. Note this will expire and require a new call to the API after 15 minutes. if (FParse::Value(FCommandLine::Get(), TEXT("-authtoken="), serverParameters.m_authToken)) { UE_LOG(GameServerLog, Log, TEXT("AUTH_TOKEN: %s"), *serverParameters.m_authToken) } //The Host/compute-name of the GameLift Anywhere instance. if (FParse::Value(FCommandLine::Get(), TEXT("-hostid="), serverParameters.m_hostId)) { UE_LOG(GameServerLog, Log, TEXT("HOST_ID: %s"), *serverParameters.m_hostId) } //The Anywhere Fleet ID. if (FParse::Value(FCommandLine::Get(), TEXT("-fleetid="), serverParameters.m_fleetId)) { UE_LOG(GameServerLog, Log, TEXT("FLEET_ID: %s"), *serverParameters.m_fleetId) } //The WebSocket URL (GameLiftServiceSdkEndpoint). if (FParse::Value(FCommandLine::Get(), TEXT("-websocketurl="), serverParameters.m_webSocketUrl)) { UE_LOG(GameServerLog, Log, TEXT("WEBSOCKET_URL: %s"), *serverParameters.m_webSocketUrl) } //The PID of the running process serverParameters.m_processId = FString::Printf(TEXT("%d"), GetCurrentProcessId()); UE_LOG(GameServerLog, Log, TEXT("PID: %s"), *serverParameters.m_processId); //InitSDK establishes a local connection with GameLift's agent to enable further communication. //Use InitSDK(serverParameters) for a GameLift Anywhere fleet. //Use InitSDK() for a GameLift managed EC2 fleet. gameLiftSdkModule->InitSDK(serverParameters); //Implement callback function onStartGameSession //GameLift sends a game session activation request to the game server //and passes a game session object with game properties and other settings. //Here is where a game server takes action based on the game session object. //When the game server is ready to receive incoming player connections, //it invokes the server SDK call ActivateGameSession(). auto onGameSession = [=](Aws::GameLift::Server::Model::GameSession gameSession) { FString gameSessionId = FString(gameSession.GetGameSessionId()); UE_LOG(GameServerLog, Log, TEXT("GameSession Initializing: %s"), *gameSessionId); gameLiftSdkModule->ActivateGameSession(); }; m_params.OnStartGameSession.BindLambda(onGameSession); //Implement callback function OnProcessTerminate //GameLift invokes this callback before shutting down the instance hosting this game server. //It gives the game server a chance to save its state, communicate with services, etc., //and initiate shut down. When the game server is ready to shut down, it invokes the //server SDK call ProcessEnding() to tell GameLift it is shutting down. auto onProcessTerminate = [=]() { UE_LOG(GameServerLog, Log, TEXT("Game Server Process is terminating")); gameLiftSdkModule->ProcessEnding(); }; m_params.OnTerminate.BindLambda(onProcessTerminate); //Implement callback function OnHealthCheck //GameLift invokes this callback approximately every 60 seconds. //A game server might want to check the health of dependencies, etc. //Then it returns health status true if healthy, false otherwise. //The game server must respond within 60 seconds, or GameLift records 'false'. //In this example, the game server always reports healthy. auto onHealthCheck = []() { UE_LOG(GameServerLog, Log, TEXT("Performing Health Check")); return true; }; m_params.OnHealthCheck.BindLambda(onHealthCheck); //The game server gets ready to report that it is ready to host game sessions //and that it will listen on port 7777 for incoming player connections. m_params.port = 7777; //Here, the game server tells GameLift where to find game session log files. //At the end of a game session, GameLift uploads everything in the specified //location and stores it in the cloud for access later. TArray<FString> logfiles; logfiles.Add(TEXT("GameLift426Test/Saved/Logs/GameLift426Test.log")); m_params.logParameters = logfiles; //The game server calls ProcessReady() to tell GameLift it's ready to host game sessions. UE_LOG(GameServerLog, Log, TEXT("Calling Process Ready")); gameLiftSdkModule->ProcessReady(m_params); }
-
-
Créez un projet de jeu pour les deux types de cibles suivants : éditeur de développement et serveur de développement.
Note
Il n'est pas nécessaire de reconstruire la solution. Créez plutôt uniquement le projet dans le
Games
dossier correspondant au nom de votre application. Sinon, Visual Studio reconstruit l'intégralité du UE5 projet, ce qui peut prendre jusqu'à une heure. -
Une fois les deux versions terminées, fermez Visual Studio et ouvrez le
.uproject
fichier de votre projet pour l'ouvrir dans l'éditeur Unreal. -
Dans Unreal Editor, empaquetez la version du serveur de votre jeu. Pour choisir une cible, allez dans Plateformes, Windows et sélectionnez
Your-application-nameServer
. -
Pour démarrer le processus de création de l'application serveur, accédez à Platforms, Windows et sélectionnez Package Project. Lorsque le build est terminé, vous devriez avoir un exécutable. Dans le cas de notre exemple, le nom du fichier est
GameLiftUnrealAppServer.exe
. -
La création d'une application serveur dans Unreal Editor produit deux exécutables. L'un d'eux se trouve à la racine du dossier de compilation du jeu et sert de wrapper à l'exécutable du serveur lui-même.
Lorsque vous créez une GameLift flotte Amazon avec la version de votre serveur, nous vous recommandons de transmettre le fichier exécutable du serveur lui-même comme chemin de lancement de la configuration d'exécution. Par exemple, dans le dossier de compilation de votre jeu, vous pouvez avoir un
GameLiftFPS.exe
fichier à la racine et un autre à\GameLiftFPS\Binaries\Win64\GameLiftFPSServer.exe
. Lorsque vous créez une flotte, nous vous recommandons de l'utiliserC:\GameLiftFPS\Binaries\Win64\GameLiftFPSServer.exe
comme chemin de lancement de la configuration d'exécution. -
Assurez-vous d'ouvrir les UDP ports nécessaires sur la GameLift flotte Amazon afin que le serveur de jeu puisse communiquer avec les clients du jeu. Par défaut, Unreal Engine utilise le port
7777
. Pour plus d'informations, consultez UpdateFleetPortSettingsle guide de API référence des GameLift services Amazon. -
Créez un
fichier pour le build de votre jeu. Ce script d'installation s'exécute chaque fois que la version du jeu est déployée sur une GameLift flotte Amazon. Voici un exemple deinstall.bat
install.bat
fichier :VC_redist.x64.exe /q UE5PrereqSetup_x64.exe /q
Pour certaines versions d'Unreal Engine, le
install.bat
devrait plutôt êtreVC_redist.x64.exe /q UEPrereqSetup_x64.exe /q
Note
Le chemin du
<>PrereqSetup_x64.exe
fichier estEngine\Extras\Redist\en-us
. -
Vous pouvez désormais empaqueter et télécharger votre build de jeu sur Amazon GameLift.
La version du package Open SSL you avec votre build de jeu doit correspondre à la version utilisée par le moteur de jeu lors de la création du serveur de jeu. Assurez-vous d'intégrer la bonne SSL version Open à la version de votre serveur de jeu. Pour le système d'exploitation Windows, le SSL format Open est
.dll
.Note
Package de l'Open SSL DLLs dans la version de votre serveur de jeu. Assurez-vous de créer la même version d'Open SSL que celle que vous avez utilisée lors de la création du serveur de jeu.
-
libssl-1_1-x64.dll
libcrypto-1_1-x64.dll
Package vos dépendances ainsi que le fichier exécutable de votre serveur de jeu à la racine d'un fichier zip. Par exemple,
openssl-lib
les dll doivent se trouver dans le même répertoire que le.exe
fichier. -
Étapes suivantes
Vous avez configuré et configuré votre environnement Unreal Engine, et vous pouvez maintenant commencer à GameLift intégrer Amazon dans votre jeu.
Pour plus d'informations sur l'ajout GameLift d'Amazon à votre jeu, consultez ce qui suit :
Pour obtenir des instructions sur le test de votre jeu, consultez Configurez des tests locaux avec Amazon GameLift Anywhere.