Amazon GameLift
开发人员指南 (版本 )
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

上传生成包文件到 Amazon GameLift

一旦打包了您的游戏服务器文件,您必须将它们提供给 Amazon GameLift 以进行托管。执行此操作的方法是创建 Amazon GameLift 生成包。您可以通过两种方法来创建生成包:

  • 使用存储在目录中的游戏生成包文件创建生成包。这是最简单的方法。

  • 使用存储 Amazon S3 账户的游戏生成包文件创建生成包。

当您创建生成包时,将创建新游戏生成包记录。此记录包含唯一的生成包 ID (例如:build-75bf99cd-2dd8-2039-8074-ab24da1f80e4)、创建时间戳、上传的文件大小、状态和其他元数据。生成包立即进入已初始化状态,并保持在该处,直至 Amazon GameLift 获取生成包文件。成功获取游戏服务器文件之后,生成包进入 Ready 状态。

生成包处于准备就绪状态之后,您可以将其部署到新的 Amazon GameLift 队列。当您为生成包创建队组时,Amazon GameLift 设置新的队组实例并在每个实例上安装游戏服务器生成包。生成包文件安装在以下位置:

  • 对于 Windows 队组:C:\game

  • 对于 Linux 队组:/local/game

要对可能与生成包安装相关的队组激活问题进行故障排除,您可以远程访问队组实例进行调试。请参阅远程访问队组实例

创建文件包含在目录中的生成包

要创建游戏生成包,其中包含存储在任意位置(包括本地目录)的打包游戏服务器文件,请使用 AWS Command Line Interface (AWS CLI) 命令 upload-build。此命令在 Amazon GameLift 中创建一个新的生成包记录并从您指定的位置上传文件。

  1. 发送上传请求。 在命令行窗口中,键入以下命令和参数。

    aws gamelift upload-build --operating-system [supported OS] --build-root [build path] --name [user-defined name of build] --build-version [user-defined build number] --region [region name]
    --build-root

    您的生成包文件的路径。

    --operating-system

    生成包中所有服务器可执行文件可在其上运行的操作系统。使用该生成包创建的所有队组自动使用此操作系统。有效值为 WINDOWS_2012AMAZON_LINUX。此参数为可选项。如果未指定操作系统,Amazon GameLift 将使用默认值 (WINDOWS_2012)。该值以后不能更改。

    --region

    您要在其中创建生成包的区域的名称。您必须在要部署队组的区域中创建生成包。要在多个区域中部署,您必须为每个区域创建生成包并上传文件。如果您使用默认区域配置了 AWS CLI,则可以省略此参数。

    注意

    如果您在多个区域中运行,检查您当前的默认区域始终是一种很好的方法。使用 AWS CLI 命令 configure get (aws configure get region) 可查看您当前的默认区域。使用命令 configure set (aws configure set region [region name]) 设置默认区域。

    --name--build-version

    使用这些参数来描述您的生成包。这些元数据值可以在以后使用 update-build (或 AWS 开发工具包操作 UpdateBuild) 更改。

    在响应您的上传请求后,Amazon GameLift 服务提供上传进度,并在成功上传后返回新生成包记录 ID。上传时间取决于游戏文件的大小和连接速度。

    示例:

    aws gamelift upload-build --operating-system AMAZON_LINUX --build-root ~/mygame --name "My Game Nightly Build" --build-version "build 255" --region us-west-2
    aws gamelift upload-build --operating-system WINDOWS_2012 --build-root "C:\mygame" --name "My Game Nightly Build" --build-version "build 255" --region us-west-2
  2. 检查生成包状态。 使用 describe-build(或 DescribeBuild)查看新的生成包记录(包括当前状态)。您也可以在 Amazon GameLift 控制台中查看状态。

    在命令行窗口中,键入以下命令和参数。

    aws gamelift describe-build --build-id [build ID returned with the upload request] --region [region name]

    示例:

    aws gamelift describe-build --build-id "build-75bf99cd-2dd8-2039-8074-ab24da1f80e4" --region us-west-2

    在响应您的请求时,Amazon GameLift 服务会返回请求的生成包记录。此记录包含一组生成包元数据,包括状态、上传的文件大小和创建时间戳。

使用 Amazon S3 中的文件创建生成包

要使用存储在您 AWS 账户的 Amazon S3 存储桶中的打包游戏服务器文件创建游戏生成包,请使用 AWS CLI 命令 create-build。此操作会在 Amazon GameLift 中创建一个新的生成包并从您指定的 Amazon S3 存储桶中获取生成包文件。

  1. 将您的生成包文件存储在 Amazon S3 中。 创建一个 .zip 文件,其中包含打包的生成包文件,并将其上传到您 AWS 账户中的 Amazon S3 存储桶。记下存储桶标签和文件名;您在创建 Amazon GameLift 生成包时需要这些内容。

  2. 向 Amazon GameLift 提供对您的生成包文件的访问权限。 使用 AWS Identity and Access Management(IAM) 服务设置新的角色,以允许 Amazon GameLift 访问您的生成包文件。此步骤需要以下任务:(1) 创建角色并指定名称,(2) 附加允许 Amazon GameLift 代入角色的信任关系,以及 (3) 附加限制角色访问的权限策略。您可以根据需要尽可能严格地限制访问权限,甚至限制到存储桶中的特定文件。创建角色后,记录新角色的 Amazon 资源名称 (ARN),您在创建生成包时需要该名称。

    注意

    在 AWS CLI 工具中使用 IAM 命令来设置角色。IAM 控制台不允许您创建通用服务角色和添加或编辑策略。请参阅 IAM 用户指南主题创建用于服务的角色 (AWS CLI) 以获取具体帮助。

    附加以下策略到角色:

    • 限于 Amazon GameLift 的信任策略:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "gamelift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    • 仅允许针对指定 S3 存储桶的只读权限的内联权限策略:

      { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:GetObjectMetadata" ], "Resource": "arn:aws-cn:s3:::[BucketName]/*", "Effect": "Allow" } ] }
  3. 发送请求以创建新生成包。 使用 AWS CLI 命令 create-build(或 AWS 开发工具包操作 CreateBuild)创建新的生成包记录并告知 Amazon GameLift 您的生成包文件的存储位置。在此请求中,您必须指定 Amazon S3 位置,包括以下信息 (在您设置存储桶和访问角色时收集):

    • Bucket:包含您的生成包的存储桶名称。示例:“my_build_files”。

       

    • Key:包含您的生成包文件的 .zip 文件的名称。示例:“mygame_build_7.0.1, 7.0.2”。

       

    • Role ARN:分配给您创建的访问角色的 ARN。示例:“arn:aws-cn:iam::111122223333:role/GameLiftAccess”。

    在命令行窗口中,键入以下命令和参数。

    aws gamelift create-build --operating-system [supported OS] --storage-location "Bucket=[S3 bucket label],Key=[Build zip file name],RoleArn=[Access role ARN]" --name [user-defined name of build] --build-version [user-defined build number] --region [region name]

    示例:

    aws gamelift create-build --operating-system WINDOWS_2012 --storage-location "Bucket=gamelift-builds,Key=MyGame.zip,RoleArn=arn:aws-cn:iam::401680102694:role/gamelift" --name "My Game Nightly Build" --build-version "build 255" --region us-west-2

    在响应您的请求时,Amazon GameLift 服务会返回新创建的生成包记录。

更新您的生成包文件

一旦创建 Amazon GameLift 生成包,与之关联的生成包文件就无法更改。相反,您必须为每一组新文件创建新的 Amazon GameLift 生成包。如果您使用 upload-build 命令提供生成包文件,您无需执行任何特殊操作,因为 Amazon GameLift 自动为每个请求创建新的生成包记录。如果您使用 create-build 命令提供生成包文件,则使用其他名称将新生成包 .zip 文件上传到 Amazon S3 并通过引用新文件名创建生成包。

对于部署更新的生成包,请尝试这些提示:

  • 使用别名将玩家无缝传输到新游戏生成包。 当您将游戏客户端集成到 Amazon GameLift 时,请指定队组别名而不是队组 ID。这样您只需三步就可将玩家移动到新生成包:(1) 创建新生成包。(2) 创建队组来部署新生成包。(3) 将别名目标从旧队组更改到新队组。有关更多信息,请参阅使用别名

  • 设置自动生成包更新。按照包含示例脚本的 GameDev 博客文章自动部署到 Amazon GameLift,将 Amazon GameLift 部署集成到您的生成系统。