实时服务器接口 - Amazon GameLift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

实时服务器接口

当实时脚本初始化时,将返回到实时服务器的接口。本主题介绍了可通过接口使用的属性和方法。了解有关编写实时脚本的更多信息,并查看创建实时脚本中的详细脚本示例。

该实时接口提供对以下对象的访问:

  • 会话

  • 玩家

  • 游戏消息

  • 配置

实时会话对象

使用这些方法来访问与服务器相关的信息和执行与服务器相关的操作。

getPlayers()

检索当前连接到游戏的玩家的对等连接 ID 列表。返回一组玩家对象。

语法

rtSession.getPlayers()

broadcastGroupMembershipUpdate()

触发向玩家组传输更新后的组成员资格列表。指定要广播的成员资格 (groupIdToBroadcast) 和接收更新的组 (targetGroupId)。组 ID 必须为正整数或“-1”以表示所有组。有关用户定义的组 ID 的示例,请参阅实时服务器脚本示例

语法

rtSession.broadcastGroupMembershipUpdate(groupIdToBroadcast, targetGroupId)

getServerId()

检索服务器的唯一对等连接 ID 标识符,这用于将消息路由到服务器。

语法

rtSession.getServerId()

getAllPlayersGroupId()

检索默认组的组 ID,该组包含当前连接到游戏会话的所有玩家。

语法

rtSession.getAllPlayersGroupId()

ProcessEnding()

触发实时服务器来终止游戏服务器。必须从实时脚本调用此函数才能从游戏会话中完全退出。

语法

rtSession.processEnding()

GetGameSessionId()

检索当前正在运行的游戏会话的唯一 ID。

语法

rtSession.getGameSessionId()

getLogger()

检索用于日志记录的接口。使用此项来记录将捕获到游戏会话日志中的语句。日志记录程序支持使用“info”、“warn”和“error”语句。例如:logger.info("<string>")

语法

rtSession.getLogger()

sendMessage()

通过 UDP 通道将使用 newTextGameMessagenewBinaryGameMessage 创建的消息从实时服务器发送给玩家收件人。使用玩家的对等连接 ID 确认接收方。

语法

rtSession.sendMessage(gameMessage, targetPlayer)

sendGroupMessage()

通过 UDP 通道将使用 newTextGameMessagenewBinaryGameMessage 创建的消息从实时服务器发送给玩家组中的所有玩家。组 ID 必须为正整数或“-1”以表示所有组。有关用户定义的组 ID 的示例,请参阅实时服务器脚本示例

语法

rtSession.sendGroupMessage(gameMessage, targetGroup)

sendReliableMessage()

通过 TCP 通道将使用 newTextGameMessagenewBinaryGameMessage 创建的消息从实时服务器发送给玩家收件人。使用玩家的对等连接 ID 确认接收方。

语法

rtSession.sendReliableMessage(gameMessage, targetPlayer)

sendReliableGroupMessage()

通过 TCP 通道将使用 newTextGameMessagenewBinaryGameMessage 创建的消息从实时服务器发送给玩家组中的所有玩家。组 ID 必须为正整数或“-1”以表示所有组。有关用户定义的组 ID 的示例,请参阅实时服务器脚本示例

语法

rtSession.sendReliableGroupMessage(gameMessage, targetGroup)

newTextGameMessage()

创建包含文本的新消息,使用 SendMessage 函数将该消息从服务器发送到玩家接收方。消息格式类似于在 Realtime 客户端开发工具包中使用的格式(请参阅 RTMessage)。返回 gameMessage 对象。

语法

rtSession.newTextGameMessage(opcode, sender, payload)

newBinaryGameMessage()

创建包含二进制数据的新消息,该消息使用 SendMessage 函数,从服务器发送到玩家接收方。消息格式类似于在 Realtime 客户端开发工具包中使用的格式(请参阅 RTMessage)。返回 gameMessage 对象。

语法

rtSession.newBinaryGameMessage(opcode, sender, binaryPayload)

玩家对象

访问与玩家相关的信息。

player.peerId

游戏客户端连接到实时服务器并加入游戏会话时分配给游戏客户端的唯一 ID。

player.playerSessionId

游戏客户端连接到实时服务器并加入游戏会话时引用的玩家会话 ID。

游戏消息对象

使用这些方法访问实时服务器接收到的消息。从游戏客户端收到的消息具有 RTMessage 结构。

getPayloadAsText()

以文本形式获取游戏消息有效载荷。

语法

gameMessage.getPayloadAsText()

gameMessage.opcode

消息中包含的操作代码。

gameMessage.payload

消息中包含的有效负载。可以是文本或二进制数据。

gameMessage.sender

发送消息的游戏客户端的对等连接 ID。

gameMessage.reliable

布尔值,指示通过 TCP (true) 还是 UDP (false) 发送消息。

配置对象

配置对象可用于覆盖默认配置。

configuration.maxPlayers

实时服务器可以接受的最大客户端/服务器连接数。

默认值为 32。

configuration.pingIntervalTime

服务器尝试向所有连接的客户端发送 ping 命令以验证连接是否正常的时间间隔(以毫秒为单位)。

默认值为 3000ms。