使用 Game Manager 部署内部版本

本文章列出了使用 Game Manager 为虚拟机部署/创建内部版本的常规步骤。

如果是首次部署内部版本,建议使用 Windows Runner C# SampleWrapper Sample 进行部署。 这两者都会提供实际部署服务器所需的全部资产。

注意

为了使用和查看 PlayFab 多人游戏服务器,需要从 Game Manager 中启用该功能。 有关说明,请参阅 启用 PlayFab 服务器功能

有关可用于每个参数的值的详细信息,请参阅 内部版本定义

通过游戏管理器部署的步骤

  1. 登录到 Game Manager

  2. 转到 我的工作室和游戏 页面,并选择你的游戏以显示仪表板

  3. 转到 多人游戏>服务器 页面,在右上方选择“新建内部版本”以创建新的内部版本。

  4. 从生成详细信息开始,使用描述性字符串作为生成名称

  5. 在开发期间,选择有限免费使用的服务器,如 Dasv4。 若要了解有关定价的详细信息,请参阅 PlayFab 多人游戏服务器的计费

  6. 为每台计算机的服务器设置值

    以下图像显示了信息部分中使用的值。 生成详细信息,包括生成名称、Dasv4 的虚拟机选择,以及每台计算机 2 个服务器

  7. 接下来是服务器详细信息部分,需要从中选择 OS 类型(WindowsLinux)。 然后,根据所选的 OS 选择服务器类型(进程或容器)。

注意

对于 Lunux 平台,需要创建自己的容器映像。 有关详细说明,请参阅创建 创建和部署 Linux 容器映像。 如果已上传容器映像,它将出现在 映像 菜单中。 若要使用,请选择该映像。

选择 OS 类型后,可以选择服务器类型。 根据 OS/服务器类型,你可以启用以下功能。

  • 虚拟机指标预览版:通过启用此功能,可以看到系统级指标,例如 CPU、内存、网络等。若要了解详细信息,请阅读我们的 VM 性能指标(预览版)文章
  • Windows 核心预览版:允许你在测试版本上测试 Windows 操作系统的最新版本,以查看游戏如何使用较新的操作系统运行。 有关详细信息,请参阅 Windows 操作系统修补程序更新
  • 自动故障转储收集:允许在 Windows 容器 服务器类型上启用自动故障转储收集。 可以选择执行完整转储、小型转储还是自定义转储。 有关详细信息,请阅读 启用自动收集故障转储

进程模式的服务器详细信息

下图显示了在选择 Windows 作为平台,但使用基于进程的服务器类型时,在 OS 部分使用的值。 还可以选择使用基于 Linux 进程的服务器。 选择 Windows 进程为 OS 和服务器类型的服务器详细信息

容器模式的服务器详细信息

下图显示了选择 Linux 作为平台,但使用基于容器的服务器类型时,在 OS 部分使用的值。 还可以选择使用基于 Windows 容器的服务器。 选择 Linux 容器作为 OS 和服务器类型的服务器详细信息

生成资产

  1. 在资产下方,选择“上传”。 导航到包含已编译的 PlayFab 多人游戏服务器内部版本的文件夹,然后选择要上传的 .zip 包。

Windows 服务器的资产

  • 对于 Windows 平台,必须将 PlayFab 游戏服务器内部版本作为资产上传。 要了解如何创建 PlayFab 游戏服务器内部版本,请参阅 创作游戏服务器内部版本。 上传资产以修改和自定义 Windows 容器映像。 Windows 服务器中资产的装载路径应位于 C 驱动器中。

Windows 容器服务器的资产

Windows 服务器的资产需要位于 C 驱动器中,否则 API 可能会返回错误。 只有容器才需要装载路径。

注意

请勿为基于进程的服务器提供装载路径。

Linux 服务器的资产

  • 对于 Linux 平台,上传资产是可选操作,因为可以将游戏服务器作为容器映像的一部分包含在内。 但你仍必须具有游戏服务器,请确保装载路径在要上传的容器中有效。

如果要上传资产:

  • 设置 C:\Assets 或选择其他路径作为装载路径
  • C:\Assets\YourGameServerBuild.exe 设置为启动命令

MPS 上新内部版本的资产部分以及启动命令。

网络设置

  1. 对于网络,设置端口号、名称和协议。

为容器服务器类型设置端口

如果使用容器服务器类型,应指定端口号。

例如,在容器服务器类型的游戏管理器中,可以指定:

  • 端口名称:“gameServerPort”
  • 端口号:7777
  • 协议:UDP

游戏管理器中容器服务器类型的网络设置

然后,在代码中执行类似如下所示的操作

int port = 7777; // since you already know the port
GameServer gs = new GameServer(port);
gs.start();

注意

在容器模式下,每个游戏服务器在其自己的网络命名空间上运行。 这就是每个游戏服务器可以侦听同一端口的原因。 容器端口动态映射到虚拟机上的唯一端口。 但是,在进程模式下,所有游戏服务器都在同一网络命名空间中运行。 让所有游戏服务器侦听同一端口将造成冲突,因此需要从 GSDK 获取 ServerListeningPort。

设置进程服务器类型的端口

对于进程服务器类型,应该使用 GSDK 检索端口号。 不要在生成定义中包括端口号。

游戏管理器中进程服务器类型的网络设置

然后,在代码中执行类似如下所示的:

var gsc = GameServerSDK.GetConnectionInfo();

var gp = gsc.Where(x=>x.Name=="gameServerPort").Single();

GameServer gs = new GameServerPort(gp.ServerListeningPort);

若要查看完整的示例代码,请转到 GSDK/CSharp/GSDK_CSharp_Standard 中的 GameServerConnectionInfo.cs。从 GSDK 获取端口的上述代码示例在容器模式下也可用。

启动命令

基于容器服务器的启动命令

启动命令应该是游戏可执行文件的绝对路径(包括装载路径),它应该包含所有必需的参数。 例如,启动命令可能类似于C:\Assets\wrapper.exe -g C:\Assets\fakegame.exe arg1 arg2。 只有在基于 Windows 容器服务器时,才需要将 "C:\Assets" 部分添加到启动命令的绝对路径。 这是因为这是你的游戏资产提取的目录。

基于 Windows 进程的服务器的启动命令

启动命令是上传资产中的相对路径。 如果可执行文件直接包含在资产文件夹中,则只需使用 <yourGameServerBuild.exe>。 如果它在另一个文件夹内(例如 GameDirectory),则启动命令将是 gameDirectory/YourGameServerBuild.exe。

  1. 在区域下,选择要部署服务器的区域。 然后指定待机服务器数和最大服务器数。
  2. 选择“保存”以开始部署过程。 将转到内部版本主页。 该内部版本将显示 部署 状态,如下图所示。

几分钟后,内部版本应处于 已部署 状态。 这意味着已部署服务器并且可以进行分配。 有关分配游戏服务器的详细信息,可以查看 此处,要试验服务器分配,则可以使用 MpsAllocatorSample

配置区域信息

部署内部版本后,仍然可以修改以下参数。

  • 区域
  • 待机服务器
  • 最大服务器数

要配置区域设置:

  • 请转到 服务器>内部版本 页面
  • 选择要修改的内部版本
  • 在“区域”选项卡上,转到 按区域划分的服务器 部分
  • 添加/删除区域并修改服务器编号

Game Manager 中已部署的内部版本

提示

在开发过程中,请关闭任何未使用或不正常的区域,以避免 VM 核心小时使用。 核心小时使用从 VM 启动期间开始,一直持续到 VM 关闭为止。 除非区域的目标待机服务器达到 0 或区域被删除,否则不会自动关闭区域中的 VM。

关闭 VM

有三种方法可以关闭 VM

  1. 将区域的目标待机设置为 0,此操作将仅关闭此区域的 VM。
  2. 从内部版本中删除特定区域。
  3. 删除整个内部版本,此操作将关闭此内部版本中所有区域的 VM。

另请参阅