管理亚马逊GameLift启动游戏服务器的方式 - 亚马逊 GameLift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

管理亚马逊GameLift启动游戏服务器的方式

您可以设置托管 EC2 队列的运行时配置,为每个实例运行多个游戏服务器进程。这样可以更有效地使用您的主机资源。

队组如何管理多个进程

Amazon GameLift 使用队列的运行时配置来确定要在每个实例上运行的进程的类型和数量。运行时配置包含至少一个代表一个游戏服务器可执行文件的服务器进程配置。您可以定义额外的服务器进程配置,以运行与您的游戏相关的其他类型的进程。每个服务器进程配置都包含以下信息:

  • 游戏生成包中可执行文件的文件名和路径。

  • (可选)要在启动时传递给进程的参数。

  • 同时运行的进程数。

当队列中的实例激活时,它会启动运行时配置中定义的一组服务器进程。在多个流程中,亚马逊会GameLift错开每个流程的启动。服务器进程的生命周期有限。当它们结束时,亚马逊会GameLift启动新进程,以保持运行时配置中定义的服务器进程的数量和类型。

您可以随时通过添加、更改或删除服务器进程配置来更改运行时配置。每个实例都会定期检查队列的运行时配置是否有更新以实施更改。以下是亚马逊GameLift采用运行时配置更改的方式:

  1. 该实例向 Amazon 发送GameLift请求,要求提供最新版本的运行时配置。

  2. 该实例将其活动进程与最新的运行时配置进行比较,然后执行以下操作:

    • 如果更新的运行时配置删除了服务器进程类型,则该类型的活动服务器进程将继续运行直至结束。该实例不会取代这些服务器进程。

    • 如果更新的运行时配置减少了服务器进程类型的并发进程数,则该类型的多余服务器进程将继续运行直至结束。该实例不会取代这些多余的服务器进程。

    • 如果更新的运行时配置添加了新的服务器进程类型或增加了现有类型的并发进程,则该实例将启动新的服务器进程,最高可达到 Amazon GameLift 的最大值。在这种情况下,实例会在现有进程结束时启动新的服务器进程。

针对多个流程优化机组

要在队列上使用多个进程,请执行以下操作:

  • 创建一个包含要部署到队列的游戏服务器可执行文件的版本,然后将该版本上传到亚马逊GameLift。版本中的所有游戏服务器都必须在同一个平台上运行并使用 Amazon S GameLift erver SDK。

  • 使用一个或多个服务器进程配置和多个并发进程创建运行时配置。

  • 将游戏客户端与 Amazon SDK 版本 2016-08-04 或更高版本集成。

为了优化机队性能,我们建议您执行以下操作:

  • 处理服务器进程关闭情况,这样 Amazon GameLift 就可以高效地回收进程。例如:

    • 在调用服务器 API 的游戏服务器代码中添加关机程序ProcessEnding()

    • 在游戏服务器代码OnProcessTerminate()中实现回调函数以处理来自亚马逊的终止请求GameLift。

  • 确保 Amazon GameLift 关闭并重新启动不健康的服务器进程。GameLift通过在游戏服务器代码中实现OnHealthCheck()回调函数,向亚马逊报告健康状态。亚马逊GameLift会自动关闭连续三次报告均报告运行状况不佳的服务器进程。如果您不实施OnHealthCheck(),则亚马逊会GameLift假定服务器进程运行正常,除非该进程无法响应通信。

选择每个实例的进程数

在决定要在实例上运行的并发进程数量时,请记住以下几点:

  • Amazon 将每个实例的并发进程数GameLift限制为上限。队列服务器进程配置的所有并发进程总和不能超过此配额。

  • 为了保持可接受的性能水平,Amazon EC2 实例类型可能会限制可以同时运行的进程数量。测试游戏的不同配置,为您的首选实例类型找到合适的进程数。

  • Amazon 运行的并发进程数GameLift不超过配置的总数。这意味着从先前的运行时配置到新配置的过渡可能会逐渐发生。