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

Amazon GameLift 和游戏客户端/服务器交互

本主题描述了客户端应用程序、游戏服务器和 Amazon GameLift 服务之间的交互。另请参阅 Amazon GameLift–游戏服务器/客户端交互 示意图。

设置新的服务器进程

  1. Amazon GameLift 服务在 Amazon Elastic Compute Cloud (Amazon EC2) 实例上启动新的服务器进程。

  2. 服务器进程属于启动进程,将调用以下服务器 API 操作:

    • InitSDK() 初始化服务器软件开发工具包。

    • ProcessReady() 通信就绪,可接受游戏会话,并指定连接端口和游戏会话日志文件的位置。

    它会等待 Amazon GameLift 服务回调。

  3. Amazon GameLift 服务将 EC2 实例的状态更改为 ACTIVE,包含 0 个游戏会话和 0 个玩家。

  4. Amazon GameLift 服务在服务器进程处于活动状态时开始定期调用 onHealthCheck 回调。服务器进程必须在一分钟内报告运行状况是否正常。

创建游戏会话

  1. 客户端应用程序调用客户端 API 操作 CreateGameSession()

  2. Amazon GameLift 服务搜索游戏会话数为 0 的活动服务器。如果找到,则执行以下操作:

    • 使用服务器进程在 ProcessReady() 中报告的端口设置创建新的 GameSession 对象,然后将其状态设为 ACTIVATING。

    • 通过 GameSession 对象响应客户端应用程序请求。

    • 在服务器进程中调用 onStartGameSession 回调,传递 GameSession 对象。

  3. 服务器进程运行 onStartGameSession 回调函数。当准备好接受玩家连接时,服务器进程将调用服务器 API 操作 ActivateGameSession() 并等待玩家连接。

  4. Amazon GameLift 服务GameSession 状态更改为 ACTIVE。

将玩家加入游戏会话

  1. 客户端应用程序使用游戏会话 ID 调用客户端 API 操作 CreatePlayerSession()

  2. Amazon GameLift 服务将检查游戏会话状态(必须为 ACTIVE)并在游戏会话中查找开放的玩家位置。如果有可用位置,它将执行以下操作:

    • 创建新的 PlayerSession 对象并将其状态设置为 RESERVED。

    • 通过 PlayerSession 对象响应客户端应用程序请求。

  3. 客户端应用程序使用玩家会话 ID 直接连接到服务器进程。

  4. 服务器进程调用服务器 API 操作 AcceptPlayerSession() 来验证玩家会话 ID。如果通过验证,则 Amazon GameLift 服务会将 PlayerSession 对象传递到服务器进程。服务器进程接受或拒绝连接。

  5. Amazon GameLift 服务执行以下操作之一:

    • 如果连接被接受,则将 PlayerSession 状态设置为 ACTIVE。

    • 如果客户端应用程序的原始 CreatePlayerSession() 调用在 60 秒内未收到响应,PlayerSession 状态将改为 TIMEDOUT 并重新开放游戏会话中的玩家位置。

从游戏会中删除玩家

  1. 客户端应用程序从服务器进程断开连接。

  2. 服务器进程检测丢失的连接并调用服务器 API 操作 RemovePlayerSession()

  3. Amazon GameLift 服务PlayerSession 状态更改为“COMPLETED”并重新开放游戏会话中的玩家位置。

关闭游戏会话

关闭游戏会话

  1. 服务器进程调用服务器 API 操作 TerminateGameSession()

  2. Amazon GameLift 服务将执行以下操作:

    • GameSession 状态改为 TERMINATED。

    • 将游戏会话日志上传到 Amazon Simple Storage Service (Amazon S3)。

    • 更新队组使用率,以指示服务器处于空闲状态(0 个游戏会话,0 个玩家)。

终止服务器进程

  1. 服务器进程将执行以下操作:

    • 运行正常关闭服务器进程的代码。

    • 调用服务器 API 操作 ProcessEnding() 以通知 Amazon GameLift 服务。

  2. Amazon GameLift 服务将执行以下操作:

    • 上传游戏会话日志到 (如果有) 到 Amazon S3。

    • 更改服务器进程状态为 TERMINATED。

    • 根据队组的运行时配置回收实例资源。

响应关闭请求

  1. Amazon GameLift 服务将调用服务器进程的 onProcessTerminate 回调。此调用将用于关闭已报告运行状况不佳或连续三分钟不响应运行状况查询的服务器进程。

  2. 服务器进程运行 onProcessTerminate 回调函数,触发服务器的终止进程,以调用 ProcessEnding() 结束。

  3. Amazon GameLift 服务在响应收到 ProcessEnding() 调用或五分钟后将执行以下操作:

    • 上传游戏会话日志到 (如果有) 到 Amazon S3。

    • 更改服务器进程状态为 TERMINATED。

    • 根据队组的运行时配置回收实例资源。