As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Integre a Amazon GameLift em um projeto Unreal Engine
Este tópico explica como configurar o SDKplug-in de servidor Amazon GameLift C++ para o Unreal Engine e integrá-lo aos seus projetos de jogos.
Recursos adicionais:
Pré-requisitos
Antes de prosseguir, garanta revisado os seguintes pré-requisitos:
Pré-requisitos
-
Um computador capaz de executar o Unreal Engine. Para obter mais informações sobre os requisitos do Unreal Engine, consulte a documentação de Especificações de hardware e software do Unreal Engine
. -
Microsoft Visual Studio 2019 ou versão mais recente.
-
CMakeversão 3.1 ou posterior.
Python, versão 3.6 ou posterior.
-
Um cliente Git disponível no. PATH
-
Uma conta da Epic Games. Crie uma conta no site oficial da Unreal Engine
. -
Uma GitHub conta associada à sua conta do Unreal Engine. Para obter mais informações, consulte Acessando o código-fonte do Unreal Engine GitHub no
site do Unreal Engine.
nota
GameLift Atualmente, a Amazon oferece suporte às seguintes versões do Unreal Engine:
-
4.22
-
4.23
-
4,24
-
4,25
-
4.26
-
4,27
-
5.1.0
-
5.1.1
-
5.2
-
5.3
Crie o Unreal Engine a partir da fonte
As versões padrão do editor do Unreal Engine, baixadas por meio do inicializador do Epic, permitem apenas compilações de aplicativos clientes do Unreal. Para criar um aplicativo de servidor do Unreal, você precisa baixar e criar o Unreal Engine a partir do código-fonte, usando o repositório no Github do Unreal Engine. Para obter mais informações, consulte o tutorial Compilar o Unreal Engine a partir da origem
nota
Se você ainda não fez isso, siga as instruções em Acessando o código-fonte do Unreal Engine GitHub
Para clonar a fonte do Unreal Engine em seu ambiente de desenvolvimento
-
Clone a fonte do Unreal Engine em seu ambiente de desenvolvimento em uma ramificação de sua escolha.
git clone https://github.com/EpicGames/UnrealEngine.git
-
Confira a tag da versão que você está usando para desenvolver seu jogo. Por exemplo, o exemplo a seguir confere a versão 5.1.1 do Unreal Engine:
git checkout tags/5.1.1-release -b 5.1.1-release
-
Navegue até a pasta raiz do repositório local. Quando você estiver na pasta raiz, execute o seguinte arquivo:
Setup.bat
. -
Enquanto estiver na pasta raiz, execute também o arquivo:
GenerateProjectFiles.bat
. -
Depois de executar os arquivos das etapas anteriores, um arquivo de solução do Unreal Engine,
UE5.sln
, é criado. Abra o Visual Studio e, no editor do Visual Studio, abra o arquivoUE5.sln
. -
No Visual Studio, abra o menu Exibir e escolha a opção Gerenciador de Soluções. Isso abre o menu de contexto do nó do projeto Unreal. Na janela Gerenciador de Soluções, clique com o botão direito do mouse no arquivo
UE5.sln
(ele pode ser listado apenas comoUE5
) e escolha Compilação para criar o projeto do Unreal com o destino Win64 do Editor de Desenvolvimento.nota
A construção pode levar mais de uma hora para ser concluída.
Quando a compilação estiver concluída, você estará pronto para abrir o Editor de Desenvolvimento do Unreal e criar ou importar um projeto.
Configure seu projeto do Unreal para o plug-in
Siga estas etapas para preparar o SDK plug-in de GameLift servidor Amazon para Unreal Engine para seus projetos de servidor de jogos.
Para configurar seu projeto para o plug-in
-
Com o Visual Studio aberto, navegue até o painel Gerenciador de Soluções e escolha o arquivo
UE5
para abrir o menu de contexto do projeto do Unreal. No menu de contexto, escolha a opção Definir como projeto de Startup. -
Na parte superior da janela do Visual Studio, escolha Iniciar depuração (seta verde).
Essa ação inicia sua nova instância de código-fonte do Unreal Editor. Para obter mais informações sobre o uso do Unreal Editor, consulte Interface do Unreal Editor
no site de documentação do Unreal Engine. -
Feche a janela do Visual Studio que você abriu, pois o Unreal Editor abre outra janela do Visual Studio que contém o projeto do Unreal e seu projeto de jogo.
-
No editor do Unreal, siga um destes procedimentos:
Escolha um projeto Unreal existente que você deseja integrar com a Amazon GameLift.
-
Criar um novo projeto da . Para experimentar o GameLift plug-in da Amazon para Unreal, tente usar o modelo de terceira pessoa do motor Unreal. Para obter mais informações sobre esse modelo, consulte Modelo de terceira pessoa
no site de documentação do Unreal Engine. Como alternativa, configure um novo projeto com as seguintes configurações:
C++
Com conteúdo inicial
Área de Trabalho
Um nome de projeto. Nos exemplos deste tópico, nomeamos nosso projeto
GameLiftUnrealApp
.
No Gerenciador de Soluções do Visual Studio, navegue até o local do seu projeto do Unreal. Na pasta
Source
do Unreal, encontre um arquivo chamado
.Your-application-name
.Target.csPor exemplo:
GameLiftUnrealApp.Target.cs
.Faça uma cópia deste arquivo e nomeie a cópia:
.Your-application-name
Server.Target.csAbra o novo arquivo e faça as seguintes alterações:
Altere
class
econstructor
para corresponder ao nome do arquivo.Altere o
Type
formulárioTargetType.Game
paraTargetType.Server
.O arquivo final será semelhante ao seguinte exemplo:
public class GameLiftUnrealAppServerTarget : TargetRules { public GameLiftUnrealAppServerTarget(TargetInfo Target) : base(Target) { Type = TargetType.Server; DefaultBuildSettings = BuildSettingsVersion.V2; IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_1; ExtraModuleNames.Add("GameLiftUnrealApp"); } }
Seu projeto agora está configurado para aceitar o SDK plug-in GameLift do servidor Amazon.
A próxima tarefa é criar as SDK bibliotecas do servidor C++ para o Unreal para que você possa importá-las para o seu projeto.
Para criar as SDK bibliotecas do servidor C++ para o Unreal
-
Baixe o SDKplug-in de servidor Amazon GameLift C++ para Unreal
. nota
Colocar o SDK no diretório de download padrão pode resultar em falha de compilação devido ao caminho exceder o limite de 260 caracteres. Por exemplo:
C:\Users\Administrator\Downloads\GameLift-SDK-Release-06_15_2023\GameLift-Cpp-ServerSDK-5.0.4
Recomendamos que você mova o SDK para outro diretório, por exemplo
C:\GameLift-Cpp-ServerSDK-5.0.4
. Baixe e instale o OpenSSL. Para obter mais informações sobre como baixar o OpenSSL, leia a documentação de SSLcompilação e instalação do Github Open
. Para obter mais informações, leia a documentação do Open SSL Notes para plataformas Windows
. nota
A versão do Open SSL que você usa para criar o GameLift servidor Amazon SDK deve corresponder à versão do Open SSL usada pela Unreal para empacotar seu servidor de jogo. Você pode encontrar informações sobre a versão no diretório
...Engine\Source\ThirdParty\OpenSSL
de instalação do Unreal.-
Com as bibliotecas baixadas, crie as SDK bibliotecas do servidor C++ para o Unreal Engine.
No
GameLift-Cpp-ServerSDK-
diretório do downloadSDK, compile com o<version>
-DBUILD_FOR_UNREAL=1
parâmetro e crie o servidorSDK. Os exemplos a seguir mostram como compilar usandocmake
.Execute os seguintes comandos em seu 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
A compilação do Windows cria os seguintes arquivos binários na pasta
out\gamelift-server-sdk\Release
:-
cmake-build\prefix\bin\aws-cpp-sdk-gamelift-server.dll
-
cmake-build\prefix\bin\aws-cpp-sdk-gamelift-server.lib
Copie os dois arquivos da biblioteca para a
ThirdParty\GameLiftServerSDK\Win64
pasta no pacote de plug-ins Amazon GameLift Unreal Engine. -
Use o procedimento a seguir para importar o GameLift plug-in da Amazon para seu projeto de exemplo.
Importe o GameLift plug-in da Amazon
Localize a
GameLiftServerSDK
pasta que você extraiu do plug-in no procedimento anterior.Localize o
Plugins
na pasta raiz do seu projeto de jogo. (Se a pasta não existir, crie-a lá.)Copie a
GameLiftServerSDK
pasta paraPlugins
o.Isso permitirá que o projeto Unreal veja o plug-in.
-
Adicione o SDK plug-in GameLift do servidor Amazon ao
.uproject
arquivo do jogo.No exemplo, o aplicativo é chamado
GameLiftUnrealApp
, então o arquivo seráGameLiftUnrealApp.uproject
. -
Edite o arquivo
.uproject
para adicionar o plug-in ao seu projeto de jogo."Plugins": [ { "Name": "GameLiftServerSDK", "Enabled": true } ]
Certifique-se de que o ModuleRules jogo dependa do plug-in. Abra o
.Build.cs
arquivo e adicione a GameLiftServer SDK dependência da Amazon. Este arquivo pode ser encontrado no
.Your-application-name
/Source//Your-application-name/
Por exemplo, o caminho do arquivo do tutorial é
../GameLiftUnrealApp/Source/GameLiftUnrealApp/GameLiftUnrealApp.Build.cs
.Adicione
"GameLiftServerSDK"
ao final da lista dePublicDependencyModuleNames
.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; } }
O plug-in agora deve estar funcionando para seu aplicativo. Continue com a próxima seção para integrar a GameLift funcionalidade da Amazon ao seu jogo.
Adicione o código GameLift do servidor Amazon ao seu projeto Unreal
Você configurou e configurou seu ambiente Unreal Engine e agora pode integrar um servidor de jogos com a Amazon GameLift. O código apresentado neste tópico faz as chamadas obrigatórias para o GameLift serviço da Amazon. Ele também implementa um conjunto de funções de retorno de chamada que respondem às solicitações do serviço da Amazon GameLift . Para obter mais informações sobre cada função e o que o código faz, consulte Inicializar o processo do servidor. Para obter mais informações sobre as SDK ações e os tipos de dados usados nesse código, consulte. GameLift Servidor Amazon SDK 5.x para Unreal Engine: ações
Para inicializar um servidor de jogos com a Amazon GameLift, use o procedimento a seguir.
nota
O código GameLift específico da Amazon fornecido na seção a seguir depende do uso de um sinalizador de WITH_GAMELIFT
pré-processador. Esse sinalizador é verdadeiro somente quando essas duas condições são atendidas:
-
Target.Type == TargetRules.TargetType.Server
-
Os plug-ins encontraram os SDK binários GameLift do servidor Amazon.
Isso garante que somente as compilações do Unreal Server invoquem o back-end da GameLift Amazon. API Também permite que você escreva um código que será executado corretamente para todos os diferentes alvos do Unreal que seu jogo possa produzir.
Integre um servidor de jogos com a Amazon GameLift
-
No Visual Studio, abra o arquivo
.sln
do aplicativo. No nosso exemplo, o arquivoGameLiftUnrealApp.sln
é encontrado na pasta raiz. -
Com a solução aberta, localize o arquivo
do seu aplicativo. Exemplo:Your-application-name
GameMode.hGameLiftUnrealAppGameMode.h
. -
Altere o arquivo de cabeçalho para alinhá-lo com o código de exemplo a seguir. Certifique-se de substituir "GameLiftUnrealApp" pelo nome do seu próprio aplicativo.
#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(); };
-
Abra o arquivo
de origem relacionado. Em nosso Exemplo:Your-application-name
GameMode.cppGameLiftUnrealAppGameMode.cpp
. e altere o código para alinhar com o código de exemplo a seguir. Certifique-se de substituir "GameLiftUnrealApp" pelo nome do seu próprio aplicativo.Este exemplo mostra como adicionar todos os elementos necessários para a integração com a Amazon GameLift, conforme descrito em Adicionar Amazon GameLift ao seu servidor de jogos. Isso inclui:
-
Inicializando um GameLift API cliente da Amazon.
-
Implementação de funções de retorno de chamada para responder às solicitações do GameLift serviço da Amazon
OnStartGameSession
, incluindoOnProcessTerminate
, e.onHealthCheck
-
Chamando ProcessReady () com uma porta designada para notificar a Amazon GameLiftservice quando estiver pronta para sediar sessões de jogo.
#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); }
-
-
Crie um projeto de jogo para os dois tipos de alvo a seguir: Editor de Desenvolvimento e Servidor de Desenvolvimento.
nota
Não é necessário reconstruir a solução. Em vez disso, crie apenas o projeto na pasta
Games
que corresponde ao nome do seu aplicativo. Caso contrário, o Visual Studio reconstrói todo o UE5 projeto, o que pode levar até uma hora. -
Quando as duas compilações estiverem concluídas, feche o Visual Studio e abra o arquivo
.uproject
do seu projeto para abri-lo no Unreal Editor. -
No Unreal Editor, empacote a versão do servidor do seu jogo. Para escolher um alvo, vá para Plataformas, Windows e selecione
Your-application-nameServer
. -
Para iniciar o processo de criação do aplicativo do servidor, acesse Plataformas, Windows e selecione Projeto de pacote. Quando a compilação estiver concluída, você deverá ter um executável. No caso do nosso exemplo, o nome do arquivo é
GameLiftUnrealAppServer.exe
. -
A criação de um aplicativo de servidor no Unreal Editor produz dois executáveis. Um está localizado na raiz da pasta de compilação do jogo e atua como um invólucro para o executável real do servidor.
Ao criar uma GameLift frota da Amazon com a construção do seu servidor, recomendamos que você transmita o executável real do servidor como o caminho de lançamento da configuração de tempo de execução. Por exemplo, na pasta de criação do jogo, você pode ter um arquivo
GameLiftFPS.exe
na raiz e outro em\GameLiftFPS\Binaries\Win64\GameLiftFPSServer.exe
. Ao criar uma frota, recomendamos que você useC:\GameLiftFPS\Binaries\Win64\GameLiftFPSServer.exe
como o caminho de inicialização da configuração de runtime. -
Certifique-se de abrir as UDP portas necessárias na GameLift frota da Amazon, para que o servidor do jogo possa se comunicar com os clientes do jogo. Por padrão, o Unreal Engine usa porta
7777
. Para obter mais informações, consulte UpdateFleetPortSettingso guia de API referência GameLift de serviços da Amazon. -
Crie um arquivo
para a versão do seu jogo. Esse script de instalação é executado sempre que a compilação do jogo é implantada em uma GameLift frota da Amazon. Veja um arquivo de exemploinstall.bat
install.bat
:VC_redist.x64.exe /q UE5PrereqSetup_x64.exe /q
Para algumas versões do Unreal Engine, o
install.bat
deveria serVC_redist.x64.exe /q UEPrereqSetup_x64.exe /q
nota
O caminho do arquivo para o arquivo
<>PrereqSetup_x64.exe
éEngine\Extras\Redist\en-us
. -
Agora você pode empacotar e enviar sua versão do jogo para a Amazon GameLift.
A versão do pacote Open SSL you com sua compilação de jogo precisa corresponder à versão que o motor de jogo usou ao criar o servidor do jogo. Certifique-se de empacotar a SSL versão Open correta com a versão do seu servidor de jogo. Para o sistema operacional Windows, o SSL formato aberto é
.dll
.nota
Package the Open SSL DLLs na versão do seu servidor de jogo. Certifique-se de empacotar a mesma versão do Open SSL que você usou ao criar o servidor do jogo.
-
libssl-1_1-x64.dll
libcrypto-1_1-x64.dll
Package suas dependências junto com o executável do servidor de jogos na raiz de um arquivo zip. Por exemplo, as dlls
openssl-lib
devem estar no mesmo diretório do arquivo.exe
. -
Próximas etapas
Você configurou e configurou seu ambiente Unreal Engine e agora pode começar a integrar a Amazon GameLift ao seu jogo.
Para obter mais informações sobre como adicionar GameLift a Amazon ao seu jogo, consulte o seguinte:
Para obter instruções sobre como testar seu jogo, consulte Configure testes locais com a Amazon GameLift Anywhere .