本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
GameLift 添加到您的游戏客户端
将亚马逊 GameLift 集成到需要游戏会话信息的游戏组件中,创建新的游戏会话并将玩家添加到游戏中。根据您的游戏架构,此功能位于后端服务中,用于处理玩家身份验证、配对或游戏会话布局等任务。
有关如何为 GameLift 托管游戏设置配对的详细信息,请参阅GameLift FlexMatch开发者指南。
在后端服务 GameLift 上设置
添加代码以初始化游戏客户端并存储密钥设置以供使用 GameLift。此代码必须在任何依赖的代码之前运行 GameLift。
-
使用默认客户机配置或创建自定义客户机配置对象。有关更多信息,请参见 AWS::Client::ClientConfiguration
(C++) 或 AmazonGameLiftConfig(C#)。 客户端配置指定目标位置和端点。位置决定了在响应请求时与哪些资源(例如舰队、队列和匹配者)进行 GameLift 交互。默认的客户机配置指定美国东部 (N) 要使用任何其他位置,请创建自定义配置。
-
初始化 GameLift 客户端。将 Aws:GameLift::GameLiftClient ()
(C++) 或 AmazonGameLiftClient() (C#) 与默认客户端配置或自定义客户端配置一起使用。 -
添加一种为每个玩家生成唯一标识符的机制。有关更多信息,请参阅生成播放器 ID:
-
收集并存储以下信息以在联系 GameLift 时使用:
-
目标舰队-大多数 GameLift API 请求必须指定目标队列。为此,请使用舰队 ID 或指向目标舰队的别名 ID。使用舰队别名,你可以在不发布游戏客户端更新的情况下将玩家从一个舰队切换到另一个舰队。
-
目标队列 — 如果您的游戏使用多舰队队列来放置新的游戏会话,则可以指定要使用哪个队列。要指定目标队列,请使用队列名称。
-
Amazon证书 — 对的所有调用都 GameLift 必须为主持游戏Amazon Web Services 账户的用户提供证书。这与您设置 GameLift 舰队时使用的帐户相同。要提供对您的后端服务器的访问权限,请为玩家创建Amazon Identity and Access Management (IAM) 用户或用户组。还要创建一个 Aws:::AWSCredentials
(C++) 对象,其中包含玩家用户组的 IAM 访问密钥和密钥。有关查找密钥的帮助,请参阅 IAM 用户指南中的管理 IAM 用户的访问密钥。
-
获取游戏会话
添加代码以发现可用的游戏会话并管理游戏会话设置和元数据。
搜索活跃的游戏会话
SearchGameSessions用于获取有关特定游戏会话、所有活动会话或符合一组搜索条件的会话的信息。此调用会为每个与您的搜索请求匹配的活动游戏会话返回一个GameSession对象。
使用搜索条件获取经筛选列表,列出可供玩家接入的活动游戏会话。例如,您可以按照以下方式筛选会话:
-
排除已满的游戏会话:
CurrentPlayerSessionCount = MaximumPlayerSessionCount
. -
根据会话运行的时间长度选择游戏会话:评估
CreationTime
。 -
根据自定义游戏属性查找游戏会话:
gameSessionProperties.gameMode = "brawl"
.
管理游戏会话
使用以下任意一项操作来检索或更新游戏会话信息。
-
DescribeGameSessionDetails() — 除游戏会话信息外,还获取游戏会话的保护状态。
-
UpdateGameSession() — 根据需要更改游戏会话的元数据和设置。
-
GetGameSessionLogUrl— 访问存储的游戏会话日志。
创建游戏会话
添加用于在已部署的队组中启动新游戏会话并使其可供玩家接入的代码。创建游戏会话有两个选项,具体取决于你是在多个Amazon Web Services 区域区域还是在单个区域部署游戏。
在多位置队列中创建游戏会话
用于在队列中请求新的游戏会话。StartGameSessionPlacement要使用此操作,请创建一个队列。这决定了新游戏会话的 GameLift 放置位置。有关队列及其使用方法的更多信息,请参阅设置 GameLift 队列以放置游戏会话。
创建游戏会话位置时,指定要使用的队列名称、游戏会话名称、最大并发玩家数以及一组可选的游戏属性。您也可以选择提供自动加入游戏会话的玩家列表。如果您包含相关区域的玩家延迟数据,则 GameLift 使用此信息在为玩家提供理想游戏体验的舰队上放置新游戏会话。
游戏会话放置为异步操作。在您提出请求后,您可以让请求成功或超时。您也可以随时使用取消请求StopGameSessionPlacement。要检查您的安置申请的状态,请调用DescribeGameSessionPlacement。
在特定舰队上创建游戏会话
CreateGameSession用于在指定队组上创建新会话。这一同步操作成功与否取决于该队组是否拥有托管新游戏会话所需的资源。 GameLift 创建新游戏会话并返回GameSession对象后,您可以将玩家加入该会话。
使用此操作时,请提供舰队 ID 或别名 ID、会话名称以及游戏的最大并行玩家数。您可以选择包括一组游戏属性。游戏属性在键值对的键值对的数组中定义。
如果您使用 GameLift 资源保护功能限制一个玩家可以创建的游戏会话数量,请提供游戏会话创建者的玩家 ID。
与玩家一起参加游戏会话
添加代码以在活跃的游戏会话中保留玩家位置,并将游戏客户端连接到游戏会话。
-
在游戏会话中预留玩家的空位
要预留玩家位置,请在游戏会话中新建一个玩家会话。有关玩家会话的更多信息,请参阅玩家如何连接游戏。
创建新玩家会话的方法有两种:
-
用于StartGameSessionPlacement在新游戏会话中为一名或多名玩家保留老虎机。
-
使用或使用CreatePlayerSession游戏会话 ID 为一名或多名玩家预留玩家老虎机。CreatePlayerSessions
GameLift 首先验证游戏会话是否接受新玩家并且有可用的玩家插槽。如果成功,则为玩家 GameLift 保留一个插槽,创建新的玩家会话并返回一个PlayerSession对象。此对象包含游戏客户端连接到游戏会话所需的 DNS 名称、IP 地址和端口。
玩家会话请求必须包括每个玩家的唯一 ID。有关更多信息,请参阅生成播放器 ID:
玩家会话可以包含一组自定义玩家数据。这些数据存储在新创建的玩家会话对象中,您可以通过调用 DescribePlayerSessions() 来检索该对象。 GameLift当玩家直接连接到游戏会话时,还会将此对象传递给游戏服务器。请求多个玩家会话时,为每个玩家提供一串映射到请求中玩家 ID 的玩家数据。
-
-
Connect 游戏会话
将代码添加到游戏客户端来检索包含游戏会话的连接信息的
PlayerSession
对象。使用此信息与服务器建立直接连接。-
您可以使用指定的端口和分配给服务器进程的 DNS 名称或 IP 地址进行连接。
-
如果您的游戏服务器验证传入的玩家连接,则引用玩家会话 ID。
建立连接后,游戏客户端和服务器进程直接通信,无需参与 GameLift。服务器与之保持通信 GameLift 以报告玩家的连接状态、健康状态等。如果游戏服务器验证传入的玩家,则它会验证玩家会话 ID 是否与游戏会话中的保留时段相匹配,并接受或拒绝玩家连接。当玩家断开连接时,服务器进程会报告连接断开。
-