Añadir AmazonGameLifta un proyecto de servidor de juegos de motor irreal - Amazon GameLift

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.

Añadir AmazonGameLifta un proyecto de servidor de juegos de motor irreal

Este tema le ayudará a configurar y utilizar el complemento del SDK de servidor de GameLift para Unreal Engine en proyectos del servidor de juegos. Si no está seguro de si el servicio GameLift es compatible con los sistemas operativos que está utilizando, consulte Para servidores de juegos personalizados.

Configurar el complemento SDK de servidor de motor irreal

Siga estos pasos para que el complemento del SDK de servidor de GameLift para Unreal Engine esté listo para proyectos del servidor de juegos.

Para configurar laGameLiftComplemento SDK para motor irreal

  1. Descarga deGameLiftSDK del servidor. Para comprobar la compatibilidad con los requisitos del sistema del juego, consulte GameLift SDK.

  2. Compile las bibliotecas del SDK del servidor C++ para Unreal. La descarga del SDK contiene el código fuente para C++ (consulte GameLift_<release date>\GameLift-SDK-Release-<version>\GameLift-cpp-ServerSDK-<version>). Consulte el archivo README de este directorio para conocer los requisitos mínimos e información adicional antes de crear el SDK.

    Para crear las bibliotecas del SDK, vaya al directorio GameLift-cpp-ServerSDK-<version> y compílelo con el marcador -DBUILD_FOR_UNREAL establecido en true. Las siguientes instrucciones muestran cómo compilar con cmake.

    Para usuarios de Linux:

    mkdir out cd out cmake -DBUILD_FOR_UNREAL=1 .. make

    Se generan los siguientes archivos binarios:

    • out/prefix/lib/libaws-cpp-sdk-gamelift-server.so

    Para usuarios de Windows:

    mkdir out cd out cmake -G "Visual Studio 15 2017 Win64" -DBUILD_FOR_UNREAL=1 .. msbuild ALL_BUILD.vcxproj /p:Configuration=Release

    Se generan los siguientes archivos binarios:

    • out\prefix\bin\aws-cpp-sdk-gamelift-server.dll

    • out\prefix\lib\aws-cpp-sdk-gamelift-server.lib

    Para obtener más información sobre la compilación del SDK de C++, incluidos los requisitos mínimos y las opciones de compilación, consulte el archivo README.md incluido en la descarga.

  3. Agregue los archivos binarios a los archivos de complemento de GameLift. Abra el directorio correspondiente a la versión del complemento de UE4 con la que está trabajando (por ejemplo, GameLift-SDK-Release-3.3.3\GameLift-Unreal-plugin-3.3.3\UE4.25\GameLiftServerSDK). Copie los archivos binarios que creó en el paso 2 al directorio ThirdParty del complemento Unreal:

    En Linux, utilice estas rutas:

    • .../ThirdParty/GameLiftServerSDK/Linux/x86_64-unknown-linux-gnu/aws-cpp-sdk-gamelift-server.so

    En Windows, utilice estas rutas:

    • ...\ThirdParty\GameLiftServerSDK\Win64\aws-cpp-sdk-gamelift-server.dll

    • ...\ThirdParty\GameLiftServerSDK\Win64\aws-cpp-sdk-gamelift-server.lib

  4. Importe el complemento de GameLift en un proyecto. Existen muchas formas de importar un complemento en Unreal Engine. El siguiente método no requiere el editor de Unreal.

    1. Añada el complemento al proyecto de juego. Los archivos de complemento deben contener todos los elementos del directorio GameLiftServerSDK del complemento, incluidos los archivos binarios generados.

    2. Añada el complemento al archivo .uproject del juego:

      "Plugins": [ { "Name": "GameLiftServerSDK", "Enabled": true } ]
    3. Añada el nombre del complemento como dependencia a la lista deModuleRules. En el siguiente ejemplo se muestra una lista de nombres de módulo a los que se ha añadido el complemento GameLift.

      using UnrealBuildTool; public class MyAwesomeGame : ModuleRules { public MyAwesomeGame(TargetInfo Target) { PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "GameLiftServerSDK" }); } }

AñadirGameLiftcódigo

Para obtener más información sobre cómo añadir funcionalidad de GameLift, consulte los siguientes temas:

Al añadir código específico de GameLift al proyecto de juego de Unreal Engine, escriba el código utilizando la marca de preprocesador WITH_GAMELIFT=1. Esta marca garantiza que solo llamen a la API backplane de GameLift las compilaciones de servidor y le permite escribir código que se ejecuta correctamente, independientemente del tipo de destino de compilación que pueda producir con el mismo.

El código envuelto con la marca WITH_GAMELIFT=1 solo se procesa si lo siguiente es verdadero:

  • El complemento encontró elGameLiftserverArchivos binarios del SDK.

  • La compilación es un servidor de juegos: Target.Type == TargetRules.TargetType.Server

El siguiente fragmento de código ilustra cómo inicializar un servidor de juego Unreal Engine con GameLift.

//This is an example of a simple integration with GameLift server SDK that makes game server //processes go active on Amazon GameLift // Include game project files. "GameLiftFPS" is a sample game name, replace with file names from your own game project #include "GameLiftFPSGameMode.h" #include "GameLiftFPS.h" #include "Engine.h" #include "EngineGlobals.h" #include "GameLiftFPSHUD.h" #include "GameLiftFPSCharacter.h" #include "GameLiftServerSDK.h" AGameLiftFPSGameMode::AGameLiftFPSGameMode() : Super() { //Let's run this code only if GAMELIFT is enabled. Only with Server targets! #if WITH_GAMELIFT //Getting the module first. FGameLiftServerSDKModule* gameLiftSdkModule = &FModuleManager::LoadModuleChecked<FGameLiftServerSDKModule>(FName("GameLiftServerSDK")); //InitSDK establishes a local connection with GameLift's agent to enable communication. gameLiftSdkModule->InitSDK(); //Respond to new game session activation request. GameLift sends activation request //to the game server along with a game session object containing game properties //and other settings. Once the game server is ready to receive player connections, //invoke GameLiftServerAPI.ActivateGameSession() auto onGameSession = [=](Aws::GameLift::Server::Model::GameSession gameSession) { gameLiftSdkModule->ActivateGameSession(); }; FProcessParameters* params = new FProcessParameters(); params->OnStartGameSession.BindLambda(onGameSession); //OnProcessTerminate callback. GameLift invokes this before shutting down the instance //that is hosting this game server to give it time to gracefully shut down on its own. //In this example, we simply tell GameLift we are indeed going to shut down. params->OnTerminate.BindLambda([=](){gameLiftSdkModule->ProcessEnding();}); //HealthCheck callback. GameLift invokes this callback about every 60 seconds. By default, //GameLift API automatically responds 'true'. A game can optionally perform checks on //dependencies and such and report status based on this info. If no response is received //within 60 seconds, health status is recorded as 'false'. //In this example, we're always healthy! params->OnHealthCheck.BindLambda([](){return true; }); //Here, the game server tells GameLift what port it is listening on for incoming player //connections. In this example, the port is hardcoded for simplicity. Since active game //that are on the same instance must have unique ports, you may want to assign port values //from a range, such as: //const int32 port = FURL::UrlConfig.DefaultPort; //params->port; params->port = 7777; //Here, the game server tells GameLift what set of files to upload when the game session //ends. GameLift uploads everything specified here for the developers to fetch later. TArray<FString> logfiles; logfiles.Add(TEXT("aLogFile.txt")); params->logParameters = logfiles; //Call ProcessReady to tell GameLift this game server is ready to receive game sessions! gameLiftSdkModule->ProcessReady(*params); #endif }