Version:

AWS GameLift Gem Resource Management

AWS GameLift Gem 提供了一个示例 AWS Cloud Development Kit (AWS CDK) 应用程序,可用于建模和部署以下 Amazon GameLift 资源:

先决条件

要部署 AWS CDK 应用程序,您必须具备以下条件:

设置

要了解如何设置虚拟环境和可用环境变量,请参阅 AWS GameLift Gem 的自述文件,网址为/Gems/AWSGameLift/cdk/README/.

准备服务器包

准备一个可以上传到 GameLift 的服务器包。有关更多信息,请参阅 适用于 Windows 的 AWS GameLift Gem 生成包打包.

更新队列配置

在部署 AWS CDK 应用程序之前,您必须更新在/Gems/AWSGameLift/cdk/aws_gamelift/fleet_configurations.py.

您可以在代码注释或 AWS CloudFormation用户指南的 Amazon GameLift 资源类型参考 中找到每个字段的描述。

有关配置 GameLift 队组以适合您的应用程序的最佳实践,请参阅 Amazon GameLift开发者指南的 GameLift 队组设计指南

Fleet alias

为了更轻松地将玩家流量从一个队组切换到另一个队组,您可以为每个 GameLift 队组目标定义一个别名。

要定义队列别名,请在队列的配置中添加以下数据块:

'alias_configuration': {

    # (Required) A descriptive label that is associated with an alias. Alias names do not need to be unique.
    'name': '<alias name>',

    # (Conditional) A type of routing strategy for the GameLift fleet alias if exists.
    # Required if alias_configuration is provided.
    'routing_strategy': {

        # The message text to be used with a terminal routing strategy.
        # If you specify TERMINAL for the Type property, you must specify this property.
        # Required if specify TERMINAL for the Type property,
        'message': '',

        # (Required) A type of routing strategy.
        'type': '<routing strategy type>'

    }
}

GameLift build

要创建队列,您可以在队列配置中提供以下内容之一:

  • 现有 GameLift 内部版本 ID
  • 压缩的本地服务器包的路径
使用现有 GameLift 内部版本

要指定现有生成 ID,请编辑队列的生成配置,例如以下示例。

'build_configuration': {

    # (Required) A unique identifier for a build to be deployed on the new fleet.
    'build_id': '<existing build id>'

}
上传本地服务器包

要从磁盘上传压缩的服务器包并自动创建 GameLift 版本,请提供本地文件路径和用于运行服务器的操作系统。由于使用 S3 来存储包文件,因此此功能会产生额外费用。

'build_configuration': {

    # (Required) The disk location of the local build file(zip).
    'build_path': '<path to the local build file>',

    # (Required) The operating system that the game server binaries are built to run on.
    'operating_system': 'WINDOWS_2012'

}
警告:
如果要将服务器部署到 Amazon Linux 2 实例,则必须指定“AMAZON_LINUX_2”作为操作系统。

运行时配置

要为每个实例运行多个游戏服务器进程,您可以设置队组的运行时配置。 AWS GameLift Gem 高级主题页面介绍了此设置的好处,以及支持每个服务器进程的唯一日志路径所需的启动参数。

以下示例在队列上运行两个 Windows Server 进程,并将日志文件写入“C:\game”下的不同子文件夹:

'server_processes': [
    {
        # (Required) The number of server processes using this configuration that
        # run concurrently on each instance.
        # Provide any integer not less than 1.
        'concurrent_executions': 1,
        
        # (Required) The location of a game build executable that contains the Init() function.
        # Game builds are installed on instances at the root:
        # Windows (custom game builds only): C:\game.
        # Linux: /local/game.
        'launch_path': 'C:\game\bin\server.exe',
        
        # (Optional) An optional list of parameters to pass to the server executable on launch.
        'parameters': '--sv_port 33450 --project-path=C:\game\process1 '
                    '--project-cache-path=C:\game\assets --engine-path=C:\game '
                    '-bg_ConnectToAssetProcessor=0'
    },
    {
        'concurrent_executions': 1,
        'launch_path': 'C:\game\bin\server.exe',
        'parameters': '--sv_port 33451 --project-path=C:\game\process2 '
                    '--project-cache-path=C:\game\assets --engine-path=C:\game '
                    '-bg_ConnectToAssetProcessor=0'
    }

]

(可选)更新 FlexMatch 配置

如果您的游戏支持 FlexMatch,则需要在部署 AWS CDK 应用程序之前更新在/Gems/AWSGameLift/cdk/aws_gamelift/flexmatch/flexmatch_configurations.py中定义的 FlexMatch 配置。

规则集正文

对战规则的集合,格式为 JSON 字符串,如以下示例所示。

有关设计对战规则集的说明,请查看 设计 FlexMatch 规则集 .

RULE_SET_BODY = '{"ruleLanguageVersion":"1.0","teams":[{"name":"Players","maxPlayers":4,"minPlayers":2}]}'

Acceptance required

一个标志,用于确定使用此配置创建的对战游戏是否必须被匹配的玩家接受。要要求接受,请设置为 True。

Required timeout

对战票证在超时之前可以保持进程中的最长持续时间(以秒为单位)。

Additional player count

对战中对未来玩家开放的玩家槽数。

Backfill mode

用于回填使用此对战配置创建的游戏会话的方法。

当您的游戏手动管理回填请求或不使用对战回填功能时,请指定 MANUAL。 指定 AUTOMATIC 让 GameLift 在游戏会话有一个或多个空槽时创建 StartMatchBackfill 请求。

BACKFILL_MODE = 'AUTOMATIC'

导航到 AWS CDK 应用程序文件夹

要设置 Python 环境并部署 AWS CDK 应用程序,请打开命令行窗口并导航到 AWS GameLift Gem 的“cdk”文件夹。

$ cd o3de\Gems\AWSGameLift\cdk

Synthesize stacks

要在更新队列配置后创建 AWS CloudFormation 模板,您必须合成 AWS CDK 应用程序中定义的堆栈。合成步骤可捕获定义 AWS 资源时的逻辑错误。

使用现有 GameLift 内部版本

如果队列配置文件中有现有的 GameLift 内部版本 ID,您可以通过在 AWS CDK 应用程序根文件夹下运行以下 AWS CLI 命令来合成堆栈:

$ cdk synth

启用可选功能

使用支持堆栈上传

如果您需要AWS CDK应用程序上传本地程序包并相应地创建 GameLift 版本,则必须启用“upload-with-support-stack”上下文变量:

$ cdk synth -c upload-with-support-stack=true --all

启用此可选功能后,将部署额外的 AWS CloudFormation 堆栈。额外的堆栈包含支持生成包上传和创建所需的 AWS 资源。’--all’ 参数告诉 AWS CDK 应用程序合成所有可用的堆栈。

创建游戏会话队列

建议您在合成堆栈时提供“create_game_session_queue”上下文变量,使用此 AWS CDK 应用程序创建可选的游戏会话队列。以下示例命令合成启用了此可选功能的应用程序:

$ cdk synth -c create_game_session_queue=true

创建 FlexMatch 资源

您还可以使用此 AWS CDK 应用程序创建对战配置和对战规则集,方法是在合成堆栈时提供“flex_match”上下文变量。以下示例命令合成启用了此可选功能的应用程序:

$ cdk synth -c flex_match=true

部署 AWS 资源

使用现有 GameLift 版本进行部署

如果您在队组配置文件中提供现有的 GameLift 内部版本 ID,则可以部署定义所有AWS资源的AWS CDK应用程序。要部署 CDK 应用程序,请在应用程序根文件夹下运行以下 AWS CLI 命令:

$ cdk deploy

部署可选功能

与使用“synth”命令类似,如果您希望AWS CDK应用程序上传本地软件包并自动创建 GameLift 版本,则必须提供上下文变量“create_game_session_queue”和“--all”:

$ cdk deploy -c upload-with-support-stack=true --all

要部署此 AWS CDK 启用了可选功能的应用程序,您必须在部署堆栈时提供相应的上下文变量。以下示例命令在启用所有可选功能的情况下部署应用程序:

$ cdk deploy -c upload-with-support-stack=true -c create_game_session_queue=true -c flex_match=true --all

更新 AWS CDK 应用程序

要更新现有的 AWS CDK 应用程序,请重新运行用于合成和部署应用程序的相同命令。

销毁 AWS CDK 应用程序

要销毁 AWS CDK 应用程序部署的所有 AWS 资源,请运行以下 AWS CLI 命令:

$ cdk destroy

如果您启用了任何可选功能,则可以通过提供相应的上下文变量和“--all”参数来销毁启用了所有可选功能的 AWS CDK 应用程序。以下命令将销毁启用了所有可选功能的 AWS CDK 应用程序:

$ cdk -c upload-with-support-stack=true -c create_game_session_queue=true -c flex_match=true --all