Lesson 35 - Get Compute Auth Token Working

This commit is contained in:
Norman Lansing
2026-02-28 12:32:28 -05:00
parent 1d477ee42a
commit 4fde462bce
7743 changed files with 1397833 additions and 18 deletions

View File

@@ -0,0 +1,77 @@
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
#pragma once
#include "Base/ScenarioWithGameServer.h"
#include "GameLiftCoreConstants.h"
#include "ScenarioWithParameters.h"
#include "GameLiftCore/Private/AwsScenarios/IAwsScenario.h"
#include "GameLiftCore/Public/IAWSAccountInstance.h"
#include "aws/gamelift/core/errors.h"
namespace AwsScenarios
{
class ScenarioWithContainerParameters : public ScenarioWithParameters
{
public:
virtual const char* const* GetParamNames() const override
{
static const char* paramNames[] =
{
"AccountId",
"ApiGatewayStageNameParameter",
"ContainerGroupDefinitionNameParameter",
"ContainerImageNameParameter",
"ContainerImageUriParameter",
"GameNameParameter",
"LambdaZipS3BucketParameter",
"LambdaZipS3KeyParameter",
"LaunchPathParameter",
"FleetUdpFromPortParameter",
"FleetUdpToPortParameter",
"TotalVcpuLimitParameter",
"TotalMemoryLimitParameter",
"UnrealEngineVersionParameter",
"EnableMetricsParameter"
};
return paramNames;
}
virtual int SaveFeatureInstanceTemplate(IAWSAccountInstance* AwsAccountInstance,
const TMap<FString, FString>& InParams) override
{
ContainerInstanceTemplateParams TemplateParams;
TemplateParams.FromMap(InParams);
const char* ParamValues[] =
{
TemplateParams.AccountId.c_str(),
TemplateParams.ApiGatewayStageNameParameter.c_str(),
TemplateParams.ContainerGroupDefinitionNameParameter.c_str(),
TemplateParams.ContainerImageNameParameter.c_str(),
TemplateParams.ContainerImageUriParameter.c_str(),
TemplateParams.GameNameParameter.c_str(),
TemplateParams.LambdaZipS3BucketParameter.c_str(),
TemplateParams.LambdaZipS3KeyParameter.c_str(),
TemplateParams.LaunchPathParameter.c_str(),
TemplateParams.FleetUdpFromPortParameter.c_str(),
TemplateParams.FleetUdpToPortParameter.c_str(),
TemplateParams.TotalVcpuLimitParameter.c_str(),
TemplateParams.TotalMemoryLimitParameter.c_str(),
TemplateParams.UnrealEngineVersionParameter.c_str(),
TemplateParams.EnableMetricsParameter.c_str()
};
auto* ParamNames = GetParamNames();
size_t Size = sizeof(ParamValues) / sizeof(*ParamValues);
return GameLiftAccountSaveFeatureInstanceTemplates(AwsAccountInstance->GetInstance(), ParamNames, ParamValues, Size);
}
virtual int UploadGameServer(IAWSAccountInstance* AwsAccountInstance, const std::string& ServerFolderPath, const std::string& ExtraServerResourcesPath) override
{
return GameLift::GAMELIFT_SUCCESS;
};
};
} // namespace AwsScenarios

View File

@@ -0,0 +1,71 @@
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
#pragma once
#include "ScenarioWithParameters.h"
#include <regex>
#include "aws/gamelift/core/exports.h"
namespace AwsScenarios
{
class ScenarioWithGameServer : public ScenarioWithParameters
{
public:
virtual int UploadGameServer(
IAWSAccountInstance* AwsAccountInstance,
const std::string& ServerFolderPath,
const std::string& ExtraServerResourcesPath
) override
{
auto Callback = [](DISPATCH_RECEIVER_HANDLE DispatchReceiver, const char* CharPtr)
{
static_cast<ScenarioWithGameServer*>(DispatchReceiver)->SetBuildS3Path(CharPtr);
};
return GameLiftAccountUploadGameServerEx(AwsAccountInstance->GetInstance(), ServerFolderPath.c_str(), ExtraServerResourcesPath.c_str(), this, Callback);
}
int CreateLaunchPathParameter(
const FString& InBuildOperatingSystem,
const FString& InBuildFolderPath,
const FString& InBuildFilePath,
std::string& InStdLaunchPathParameter
)
{
FString RelativePath = InBuildFilePath;
if (!FPaths::IsUnderDirectory(InBuildFilePath, InBuildFolderPath) || !FPaths::MakePathRelativeTo(RelativePath, *InBuildFolderPath))
{
UE_LOG(GameLiftCoreLog, Error, TEXT("%s."), Deploy::Logs::kInvalidServerFilePath);
return GameLift::GAMELIFT_ERROR_GENERAL;
}
auto StdServerFileRelPath = Convertors::FSToStdS(RelativePath);
auto StdServerFileRelPathPosition = StdServerFileRelPath.find("/");
if (StdServerFileRelPathPosition == std::string::npos)
{
UE_LOG(GameLiftCoreLog, Error, TEXT("%s."), Deploy::Logs::kInvalidServerFilePath);
return GameLift::GAMELIFT_ERROR_GENERAL;
}
if (InBuildOperatingSystem.StartsWith(TEXT("WINDOWS")))
{
// Windows
InStdLaunchPathParameter = "C:/game/" + StdServerFileRelPath.substr(StdServerFileRelPathPosition + 1);
// Convert forward slashes to back slashes ( / -> \ )
InStdLaunchPathParameter = std::regex_replace(InStdLaunchPathParameter, std::regex("/"), "\\\\");
}
else
{
// Linux
InStdLaunchPathParameter = "/local/game/" + StdServerFileRelPath.substr(StdServerFileRelPathPosition + 1);
}
return GameLift::GAMELIFT_SUCCESS;
}
};
} // namespace AwsScenarios

View File

@@ -0,0 +1,80 @@
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
#pragma once
#include "AwsScenarios/IAWSScenario.h"
#include "aws/gamelift/core/exports.h"
namespace AwsScenarios
{
class ScenarioWithParameters : public IAWSScenario
{
public:
virtual ~ScenarioWithParameters() = default;
virtual const char* const* GetParamNames() const override
{
static const char* paramNames[] =
{
"GameNameParameter",
"BuildOperatingSystemParameter",
"BuildS3BucketParameter",
"LambdaZipS3BucketParameter",
"LambdaZipS3KeyParameter",
"ApiGatewayStageNameParameter",
"AccountId",
"LaunchPathParameter",
"BuildS3KeyParameter",
"UnrealEngineVersionParameter",
"EnableMetricsParameter"
};
return paramNames;
}
virtual int SaveFeatureInstanceTemplate(IAWSAccountInstance* AwsAccountInstance, const TMap<FString, FString>& InParams) override
{
ManagedEC2InstanceTemplateParams TemplateParams;
TemplateParams.FromMap(InParams);
const char* ParamValues[] =
{
TemplateParams.GameNameParameter.c_str(),
TemplateParams.BuildOperatingSystemParameter.c_str(),
TemplateParams.BuildS3BucketParameter.c_str(),
TemplateParams.LambdaZipS3BucketParameter.c_str(),
TemplateParams.LambdaZipS3KeyParameter.c_str(),
TemplateParams.ApiGatewayStageNameParameter.c_str(),
TemplateParams.AccountId.c_str(),
TemplateParams.LaunchPathParameter.c_str(),
BuildS3Path.c_str(),
TemplateParams.UnrealEngineVersionParameter.c_str(),
TemplateParams.EnableMetricsParameter.c_str()
};
auto* ParamNames = GetParamNames();
size_t Size = sizeof(ParamValues) / sizeof(*ParamValues);
return GameLiftAccountSaveFeatureInstanceTemplates(AwsAccountInstance->GetInstance(), ParamNames, ParamValues, Size);
}
virtual FString GetScenarioPath() const override
{
return Paths::ScenarioPath(GetFolderName());
}
virtual FString GetScenarioInstancePath() const override
{
return Paths::ScenarioInstancePath(GetFolderName());
}
void SetBuildS3Path(const std::string& NewBuildS3Path)
{
BuildS3Path = NewBuildS3Path;
}
private:
std::string BuildS3Path;
};
} // namespace AwsScenarios

View File

@@ -0,0 +1,35 @@
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
#pragma once
#include "ScenarioWithParameters.h"
#include "aws/gamelift/core/errors.h"
namespace AwsScenarios
{
class ScenarioWithoutGameServer : public ScenarioWithParameters
{
public:
virtual int UploadGameServer(
IAWSAccountInstance* AwsAccountInstance,
const std::string& ServerFolderPath,
const std::string& ExtraServerResourcesPath
) override
{
return GameLift::GAMELIFT_SUCCESS;
}
virtual int CreateLaunchPathParameter(
const FString& BuildOperatingSystem,
const FString& BuildFolderPath,
const FString& BuildFilePath,
std::string& StdLaunchPathParameter
) override
{
StdLaunchPathParameter = "";
return GameLift::GAMELIFT_SUCCESS;
}
};
} // namespace AwsScenarios

View File

@@ -0,0 +1,39 @@
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
#pragma once
#include "GameLiftCoreConstants.h"
#include "Base/ScenarioWithContainerParameters.h"
namespace AwsScenarios
{
class ContainersFlexMatch : public ScenarioWithContainerParameters
{
public:
static const FText& Name()
{
return Menu::DeploymentServer::kContainersFlexMatch;
}
static TUniquePtr<IAWSScenario> Create()
{
return MakeUnique<ContainersFlexMatch>();
}
virtual FText GetTooltip() const override
{
return Menu::DeploymentServer::kContainersFlexMatchTooltip;
}
virtual FString GetFolderName() const override
{
return Menu::DeploymentServer::kContainersFlexMatchFolder;
}
virtual FText GetUserName() const override
{
return Name();
}
};
} // namespace AwsScenarios

View File

@@ -0,0 +1,39 @@
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
#pragma once
#include "GameLiftCoreConstants.h"
#include "Base/ScenarioWithContainerParameters.h"
namespace AwsScenarios
{
class ContainersSingleRegionFleet : public ScenarioWithContainerParameters
{
public:
static const FText& Name()
{
return Menu::DeploymentServer::kContainersSingleRegionFleet;
}
static TUniquePtr<IAWSScenario> Create()
{
return MakeUnique<ContainersSingleRegionFleet>();
}
virtual FText GetTooltip() const override
{
return Menu::DeploymentServer::kContainersSingleRegionFleetTooltip;
}
virtual FString GetFolderName() const override
{
return Menu::DeploymentServer::kContainersSingleRegionFleetFolder;
}
virtual FText GetUserName() const override
{
return Name();
}
};
} // namespace AwsScenarios

View File

@@ -0,0 +1,51 @@
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
#pragma once
#include "Base/ScenarioWithGameServer.h"
#include "GameLiftCoreConstants.h"
namespace AwsScenarios
{
class CustomScenario : public ScenarioWithGameServer
{
public:
static const FText& Name()
{
return Menu::DeploymentServer::kCustom;
}
static TUniquePtr<CustomScenario> Create(const FString& CustomScenarioPath)
{
return MakeUnique<CustomScenario>(CustomScenarioPath);
}
CustomScenario(const FString& CustomScenarioPath) : Path(CustomScenarioPath)
{
}
virtual FText GetTooltip() const override
{
return Menu::DeploymentServer::kCustomTooltip;
}
virtual FString GetFolderName() const override
{
return Menu::DeploymentServer::kCustomScenarioFolder;
}
virtual FText GetUserName() const override
{
return Name();
}
virtual FString GetScenarioPath() const override
{
return Path;
}
private:
FString Path;
};
} // namespace AwsScenarios

View File

@@ -0,0 +1,39 @@
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
#pragma once
#include "Base/ScenarioWithGameServer.h"
#include "GameLiftCoreConstants.h"
namespace AwsScenarios
{
class FlexMatch : public ScenarioWithGameServer
{
public:
static const FText& Name()
{
return Menu::DeploymentServer::kFlexMatch;
}
static TUniquePtr<IAWSScenario> Create()
{
return MakeUnique<FlexMatch>();
}
virtual FText GetTooltip() const override
{
return Menu::DeploymentServer::kFlexMatchTooltip;
}
virtual FString GetFolderName() const override
{
return Menu::DeploymentServer::kFlexMatchFolder;
}
virtual FText GetUserName() const override
{
return Name();
}
};
} // namespace AwsScenarios

View File

@@ -0,0 +1,193 @@
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
#pragma once
#include <sstream>
#include <string>
#include "IAWSAccountInstance.h"
#include "aws/gamelift/core/enums.h"
#include "Utils/StringConvertors.h"
namespace AwsScenarios
{
inline std::string GetLambdaS3Key(const std::string& GameName, const std::string& FunctionsReplacementId)
{
std::stringstream StringStream;
StringStream << GameName;
StringStream << "/functions/" << GameLift::GetFeatureTypeString(GameLift::FeatureType::Main);
StringStream << "/" << "requests" << "." << FunctionsReplacementId << ".zip";
return StringStream.str();
}
struct BaseInstanceTemplateParams
{
std::string AccountId;
std::string ApiGatewayStageNameParameter;
std::string BuildFolderPath;
std::string BuildS3BucketParameter;
std::string ExtraServerResourcesPath;
std::string GameNameParameter;
std::string LambdaZipS3BucketParameter;
std::string LambdaZipS3KeyParameter;
std::string LaunchPathParameter;
std::string UnrealEngineVersionParameter;
std::string EnableMetricsParameter;
virtual ~BaseInstanceTemplateParams() = default;
virtual void FromMap(const TMap<FString, FString>& InMap) = 0;
virtual TMap<FString, FString> ToMap() const = 0;
};
struct ManagedEC2InstanceTemplateParams : BaseInstanceTemplateParams
{
std::string BuildOperatingSystemParameter;
ManagedEC2InstanceTemplateParams() = default;
virtual void FromMap(const TMap<FString, FString>& InMap) override
{
const FString* InGameNameParameter = InMap.Find("GameNameParameter");
const FString* InBuildOperatingSystemParameter = InMap.Find("BuildOperatingSystemParameter");
const FString* InBuildS3BucketParameter = InMap.Find("BuildS3BucketParameter");
const FString* InLambdaZipS3BucketParameter = InMap.Find("LambdaZipS3BucketParameter");
const FString* InLambdaZipS3KeyParameter = InMap.Find("LambdaZipS3KeyParameter");
const FString* InApiGatewayStageNameParameter = InMap.Find("ApiGatewayStageNameParameter");
const FString* InAccountId = InMap.Find("AccountId");
const FString* InLaunchPathParameter = InMap.Find("LaunchPathParameter");
const FString* InUnrealEngineVersionParameter = InMap.Find("UnrealEngineVersionParameter");
const FString* InEnableMetricsParameter = InMap.Find("EnableMetricsParameter");
if (InGameNameParameter && InBuildOperatingSystemParameter && InBuildS3BucketParameter
&& InLambdaZipS3BucketParameter && InLambdaZipS3KeyParameter && InApiGatewayStageNameParameter
&& InApiGatewayStageNameParameter && InAccountId && InLaunchPathParameter && InUnrealEngineVersionParameter
&& InEnableMetricsParameter)
{
GameNameParameter = Convertors::FSToStdS(*InGameNameParameter);
BuildOperatingSystemParameter = Convertors::FSToStdS(*InBuildOperatingSystemParameter);
BuildS3BucketParameter = Convertors::FSToStdS(*InBuildS3BucketParameter);
LambdaZipS3BucketParameter = Convertors::FSToStdS(*InLambdaZipS3BucketParameter);
LambdaZipS3KeyParameter = Convertors::FSToStdS(*InLambdaZipS3KeyParameter);
ApiGatewayStageNameParameter = Convertors::FSToStdS(*InApiGatewayStageNameParameter);
AccountId = Convertors::FSToStdS(*InAccountId);
LaunchPathParameter = Convertors::FSToStdS(*InLaunchPathParameter);
UnrealEngineVersionParameter = Convertors::FSToStdS(*InUnrealEngineVersionParameter);
EnableMetricsParameter = Convertors::FSToStdS(*InEnableMetricsParameter);
}
}
virtual TMap<FString, FString> ToMap() const override
{
TMap<FString, FString> ParamsMap = {};
ParamsMap.Emplace("GameNameParameter", GameNameParameter.c_str());
ParamsMap.Emplace("BuildOperatingSystemParameter", BuildOperatingSystemParameter.c_str());
ParamsMap.Emplace("BuildS3BucketParameter", BuildS3BucketParameter.c_str());
ParamsMap.Emplace("LambdaZipS3BucketParameter", LambdaZipS3BucketParameter.c_str());
ParamsMap.Emplace("LambdaZipS3KeyParameter", LambdaZipS3KeyParameter.c_str());
ParamsMap.Emplace("ApiGatewayStageNameParameter", ApiGatewayStageNameParameter.c_str());
ParamsMap.Emplace("AccountId", AccountId.c_str());
ParamsMap.Emplace("LaunchPathParameter", LaunchPathParameter.c_str());
ParamsMap.Emplace("UnrealEngineVersionParameter", UnrealEngineVersionParameter.c_str());
ParamsMap.Emplace("EnableMetricsParameter", EnableMetricsParameter.c_str());
return ParamsMap;
}
};
struct ContainerInstanceTemplateParams : BaseInstanceTemplateParams
{
std::string ContainerGroupDefinitionNameParameter;
std::string ContainerImageNameParameter;
std::string ContainerImageUriParameter;
std::string FleetUdpFromPortParameter;
std::string FleetUdpToPortParameter;
std::string TotalVcpuLimitParameter;
std::string TotalMemoryLimitParameter;
ContainerInstanceTemplateParams() = default;
virtual void FromMap(const TMap<FString, FString>& InMap) override
{
const FString* InAccountId = InMap.Find("AccountId");
const FString* InApiGatewayStageNameParameter = InMap.Find("ApiGatewayStageNameParameter");
const FString* InContainerGroupDefinitionNameParameter = InMap.Find("ContainerGroupDefinitionNameParameter");
const FString* InContainerImageNameParameter = InMap.Find("ContainerImageNameParameter");
const FString* InContainerImageUriParameter = InMap.Find("ContainerImageUriParameter");
const FString* InGameNameParameter = InMap.Find("GameNameParameter");
const FString* InLambdaZipS3BucketParameter = InMap.Find("LambdaZipS3BucketParameter");
const FString* InLambdaZipS3KeyParameter = InMap.Find("LambdaZipS3KeyParameter");
const FString* InLaunchPathParameter = InMap.Find("LaunchPathParameter");
const FString* InFleetUdpFromPortParameter = InMap.Find("FleetUdpFromPortParameter");
const FString* InFleetUdpToPortParameter = InMap.Find("FleetUdpToPortParameter");
const FString* InTotalVcpuLimitParameter = InMap.Find("TotalVcpuLimitParameter");
const FString* InTotalMemoryLimitParameter = InMap.Find("TotalMemoryLimitParameter");
const FString* InUnrealEngineVersionParameter = InMap.Find("UnrealEngineVersionParameter");
const FString* InEnableMetricsParameter = InMap.Find("EnableMetricsParameter");
if (InAccountId && InApiGatewayStageNameParameter && InContainerGroupDefinitionNameParameter
&& InContainerImageNameParameter && InContainerImageUriParameter && InGameNameParameter
&& InLambdaZipS3BucketParameter && InLambdaZipS3KeyParameter && InLaunchPathParameter
&& InFleetUdpFromPortParameter && InFleetUdpToPortParameter && InTotalVcpuLimitParameter
&& InTotalMemoryLimitParameter && InUnrealEngineVersionParameter && InEnableMetricsParameter)
{
AccountId = Convertors::FSToStdS(*InAccountId);
ApiGatewayStageNameParameter = Convertors::FSToStdS(*InApiGatewayStageNameParameter);
ContainerGroupDefinitionNameParameter = Convertors::FSToStdS(*InContainerGroupDefinitionNameParameter);
ContainerImageNameParameter = Convertors::FSToStdS(*InContainerImageNameParameter);
ContainerImageUriParameter = Convertors::FSToStdS(*InContainerImageUriParameter);
GameNameParameter = Convertors::FSToStdS(*InGameNameParameter);
LambdaZipS3BucketParameter = Convertors::FSToStdS(*InLambdaZipS3BucketParameter);
LambdaZipS3KeyParameter = Convertors::FSToStdS(*InLambdaZipS3KeyParameter);
LaunchPathParameter = Convertors::FSToStdS(*InLaunchPathParameter);
FleetUdpFromPortParameter = Convertors::FSToStdS(*InFleetUdpFromPortParameter);
FleetUdpToPortParameter = Convertors::FSToStdS(*InFleetUdpToPortParameter);
TotalVcpuLimitParameter = Convertors::FSToStdS(*InTotalVcpuLimitParameter);
TotalMemoryLimitParameter = Convertors::FSToStdS(*InTotalMemoryLimitParameter);
UnrealEngineVersionParameter = Convertors::FSToStdS(*InUnrealEngineVersionParameter);
EnableMetricsParameter = Convertors::FSToStdS(*InEnableMetricsParameter);
}
}
virtual TMap<FString, FString> ToMap() const override
{
TMap<FString, FString> ParamsMap = {};
ParamsMap.Emplace("AccountId", AccountId.c_str());
ParamsMap.Emplace("ApiGatewayStageNameParameter", ApiGatewayStageNameParameter.c_str());
ParamsMap.Emplace("ContainerGroupDefinitionNameParameter", ContainerGroupDefinitionNameParameter.c_str());
ParamsMap.Emplace("ContainerImageNameParameter", ContainerImageNameParameter.c_str());
ParamsMap.Emplace("ContainerImageUriParameter", ContainerImageUriParameter.c_str());
ParamsMap.Emplace("GameNameParameter", GameNameParameter.c_str());
ParamsMap.Emplace("LambdaZipS3BucketParameter", LambdaZipS3BucketParameter.c_str());
ParamsMap.Emplace("LambdaZipS3KeyParameter", LambdaZipS3KeyParameter.c_str());
ParamsMap.Emplace("LaunchPathParameter", LaunchPathParameter.c_str());
ParamsMap.Emplace("FleetUdpFromPortParameter", FleetUdpFromPortParameter.c_str());
ParamsMap.Emplace("FleetUdpToPortParameter", FleetUdpToPortParameter.c_str());
ParamsMap.Emplace("TotalVcpuLimitParameter", TotalVcpuLimitParameter.c_str());
ParamsMap.Emplace("TotalMemoryLimitParameter", TotalMemoryLimitParameter.c_str());
ParamsMap.Emplace("UnrealEngineVersionParameter", UnrealEngineVersionParameter.c_str());
ParamsMap.Emplace("EnableMetricsParameter", EnableMetricsParameter.c_str());
return ParamsMap;
}
};
class IAWSScenario
{
public:
virtual ~IAWSScenario() = default;
virtual const char* const* GetParamNames() const = 0;
virtual FText GetTooltip() const = 0;
virtual FString GetFolderName() const = 0;
virtual FText GetUserName() const = 0;
virtual FString GetScenarioPath() const = 0;
virtual FString GetScenarioInstancePath() const = 0;
virtual int SaveFeatureInstanceTemplate(IAWSAccountInstance* AwsAccountInstance, const TMap<FString, FString>& InParams) = 0;
virtual int UploadGameServer(IAWSAccountInstance* AwsAccountInstance, const std::string& ServerFolderPath, const std::string& ExtraServerResourcesPath) = 0;
};
} // namespace AwsScenarios

View File

@@ -0,0 +1,39 @@
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
#pragma once
#include "Base/ScenarioWithGameServer.h"
#include "GameLiftCoreConstants.h"
namespace AwsScenarios
{
class SingleRegionFleet : public ScenarioWithGameServer
{
public:
static const FText& Name()
{
return Menu::DeploymentServer::kSingleRegionFleet;
}
static TUniquePtr<IAWSScenario> Create()
{
return MakeUnique<SingleRegionFleet>();
}
virtual FText GetTooltip() const override
{
return Menu::DeploymentServer::kSingleRegionFleetTooltip;
}
virtual FString GetFolderName() const override
{
return Menu::DeploymentServer::kSingleRegionFleetFolder;
}
virtual FText GetUserName() const override
{
return Name();
}
};
} // namespace AwsScenarios

View File

@@ -0,0 +1,39 @@
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
#pragma once
#include "Base/ScenarioWithGameServer.h"
#include "GameLiftCoreConstants.h"
namespace AwsScenarios
{
class SpotFleets : public ScenarioWithGameServer
{
public:
static const FText& Name()
{
return Menu::DeploymentServer::kSpotFleets;
}
static TUniquePtr<IAWSScenario> Create()
{
return MakeUnique<SpotFleets>();
}
virtual FText GetTooltip() const override
{
return Menu::DeploymentServer::kSpotFleetsTooltip;
}
virtual FString GetFolderName() const override
{
return Menu::DeploymentServer::kSpotFleetsFolder;
}
virtual FText GetUserName() const override
{
return Name();
}
};
} // namespace AwsScenarios