Lesson 35 - Get Compute Auth Token Working
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
|
||||
|
||||
#include "Game/ShooterGameMode.h"
|
||||
|
||||
#include "DSP/BufferDiagnostics.h"
|
||||
#include "UObject/ConstructorHelpers.h"
|
||||
#include "Kismet/GameplayStatics.h"
|
||||
|
||||
@@ -34,18 +36,19 @@ void AShooterGameMode::SetServerParameters(TSharedPtr<FServerParameters> OutServ
|
||||
FString GameLiftAnywhereAuthToken = "";
|
||||
if (FParse::Value(FCommandLine::Get(), TEXT("-authtoken="), GameLiftAnywhereAuthToken))
|
||||
{
|
||||
OutServerParameters->m_authToken = TCHAR_TO_UTF8(*GameLiftAnywhereAuthToken);
|
||||
OutServerParameters->m_authToken = GameLiftAnywhereAuthToken;
|
||||
}
|
||||
else
|
||||
{
|
||||
UE_LOG(LogShooterGameMode, Warning, TEXT("-authtoken not found in command line."));
|
||||
}
|
||||
|
||||
|
||||
|
||||
// The Host/compute-name of the GameLift Anywhere instance
|
||||
FString GameLiftAnywhereHostId = "";
|
||||
if (FParse::Value(FCommandLine::Get(), TEXT("-hostid="), GameLiftAnywhereHostId))
|
||||
{
|
||||
OutServerParameters->m_hostId = TCHAR_TO_UTF8(*GameLiftAnywhereHostId);
|
||||
OutServerParameters->m_hostId = GameLiftAnywhereHostId;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -56,7 +59,7 @@ void AShooterGameMode::SetServerParameters(TSharedPtr<FServerParameters> OutServ
|
||||
FString GameLiftAnywhereFleetId = "";
|
||||
if (FParse::Value(FCommandLine::Get(), TEXT("-fleetid="), GameLiftAnywhereFleetId))
|
||||
{
|
||||
OutServerParameters->m_fleetId = TCHAR_TO_UTF8(*GameLiftAnywhereFleetId);
|
||||
OutServerParameters->m_fleetId = GameLiftAnywhereFleetId;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -67,7 +70,7 @@ void AShooterGameMode::SetServerParameters(TSharedPtr<FServerParameters> OutServ
|
||||
FString GameLiftAnywhereWebSocketUrl = "";
|
||||
if (FParse::Value(FCommandLine::Get(), TEXT("-websocketurl="), GameLiftAnywhereWebSocketUrl))
|
||||
{
|
||||
OutServerParameters->m_webSocketUrl = TCHAR_TO_UTF8(*GameLiftAnywhereWebSocketUrl);
|
||||
OutServerParameters->m_webSocketUrl = GameLiftAnywhereWebSocketUrl;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -75,7 +78,13 @@ void AShooterGameMode::SetServerParameters(TSharedPtr<FServerParameters> OutServ
|
||||
}
|
||||
|
||||
// The PID of the running process
|
||||
OutServerParameters->m_processId = FString::Printf(TEXT("%d"), GetCurrentProcessId());
|
||||
#if PLATFORM_WINDOWS
|
||||
OutServerParameters->m_processId = FString::Printf(TEXT("%d"), GetCurrentProcessId());
|
||||
#else
|
||||
OutServerParameters->m_processId = FString::Printf(TEXT("%d"), FGenericPlatformProcess::GetCurrentProcessId());
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
|
||||
void AShooterGameMode::LogServerParameters(TSharedPtr<FServerParameters> ServerParameters)
|
||||
@@ -124,6 +133,7 @@ void AShooterGameMode::InitGameLift()
|
||||
|
||||
#if WITH_GAMELIFT
|
||||
UE_LOG(LogShooterGameMode, Log, TEXT("Calling InitGameLift"));
|
||||
FProcessParameters LocalProcessParameters;
|
||||
|
||||
// Getting the module first.
|
||||
FGameLiftServerSDKModule* GameLiftSdkModule = &FModuleManager::LoadModuleChecked<FGameLiftServerSDKModule>(FName("GameLiftServerSDK"));
|
||||
@@ -143,8 +153,11 @@ void AShooterGameMode::InitGameLift()
|
||||
|
||||
// If GameLift Anywhere is enabled, parse command line arguments and pass them in the ServerParameters object.
|
||||
|
||||
SetServerParameters(MakeShared<FServerParameters>(ServerParameters));
|
||||
LogServerParameters(MakeShared<FServerParameters>(ServerParameters));
|
||||
TSharedPtr<FServerParameters> ServerParams = MakeShared<FServerParameters>(ServerParameters);
|
||||
|
||||
SetServerParameters(ServerParams);
|
||||
LogServerParameters(ServerParams);
|
||||
ServerParameters = *ServerParams;
|
||||
}
|
||||
|
||||
UE_LOG(LogShooterGameMode, Log, TEXT("Initializing the GameLift Server..."));
|
||||
@@ -182,8 +195,8 @@ void AShooterGameMode::InitGameLift()
|
||||
UE_LOG(LogShooterGameMode, Log, TEXT("GameSession Initializing: %s"), *GameSessionId);
|
||||
GameLiftSdkModule->ActivateGameSession();
|
||||
};
|
||||
|
||||
ProcessParameters->OnStartGameSession.BindLambda(OnGameSession);
|
||||
|
||||
LocalProcessParameters.OnStartGameSession.BindLambda(OnGameSession);
|
||||
|
||||
auto OnTerminate = [=]()
|
||||
{
|
||||
@@ -191,7 +204,7 @@ void AShooterGameMode::InitGameLift()
|
||||
GameLiftSdkModule->ProcessEnding();
|
||||
};
|
||||
|
||||
ProcessParameters->OnTerminate.BindLambda(OnTerminate);
|
||||
LocalProcessParameters.OnTerminate.BindLambda(OnTerminate);
|
||||
|
||||
auto OnHealthCheck = [=]()
|
||||
{
|
||||
@@ -200,13 +213,12 @@ void AShooterGameMode::InitGameLift()
|
||||
};
|
||||
|
||||
|
||||
|
||||
ProcessParameters->OnHealthCheck.BindLambda(OnHealthCheck);
|
||||
LocalProcessParameters.OnHealthCheck.BindLambda(OnHealthCheck);
|
||||
|
||||
int32 Port = FURL::UrlConfig.DefaultPort;
|
||||
ParseCommandLinePort(Port);
|
||||
|
||||
ProcessParameters->port = Port;
|
||||
LocalProcessParameters.port = Port;
|
||||
|
||||
// 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
|
||||
@@ -214,12 +226,14 @@ void AShooterGameMode::InitGameLift()
|
||||
|
||||
TArray<FString> LogFiles;
|
||||
LogFiles.Add(TEXT("FPSTemplate/Saved/Logs/FPSTemplate.log"));
|
||||
ProcessParameters->logParameters = LogFiles;
|
||||
|
||||
UE_LOG(LogShooterGameMode, Log, TEXT("Before Adding Log Files"));
|
||||
LocalProcessParameters.logParameters = LogFiles;
|
||||
|
||||
|
||||
// The game server calls ProcessReady() to tell Amazon GameLift Servers it's ready to host game sessions.
|
||||
UE_LOG(LogShooterGameMode, Log, TEXT("Calling Process Ready..."));
|
||||
FGameLiftGenericOutcome ProcessReadyOutcome = GameLiftSdkModule->ProcessReady(*ProcessParameters);
|
||||
FGameLiftGenericOutcome ProcessReadyOutcome = GameLiftSdkModule->ProcessReady(LocalProcessParameters);
|
||||
|
||||
if (ProcessReadyOutcome.IsSuccess())
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user