使用 Game Manager 部署内部版本
本文章列出了使用 Game Manager 为虚拟机部署/创建内部版本的常规步骤。
如果是首次部署内部版本,建议使用 Windows Runner C# Sample 或 Wrapper Sample 进行部署。 这两者都会提供实际部署服务器所需的全部资产。
注意
为了使用和查看 PlayFab 多人游戏服务器,需要从 Game Manager 中启用该功能。 有关说明,请参阅 启用 PlayFab 服务器功能。
有关可用于每个参数的值的详细信息,请参阅 内部版本定义。
通过游戏管理器部署的步骤
登录到 Game Manager
转到 我的工作室和游戏 页面,并选择你的游戏以显示仪表板
转到 多人游戏>服务器 页面,在右上方选择“新建内部版本”以创建新的内部版本。
从生成详细信息开始,使用描述性字符串作为生成名称
在开发期间,选择有限免费使用的服务器,如 Dasv4。 若要了解有关定价的详细信息,请参阅 PlayFab 多人游戏服务器的计费
为每台计算机的服务器设置值
以下图像显示了信息部分中使用的值。
接下来是服务器详细信息部分,需要从中选择 OS 类型(Windows 或 Linux)。 然后,根据所选的 OS 选择服务器类型(进程或容器)。
注意
对于 Lunux 平台,需要创建自己的容器映像。 有关详细说明,请参阅创建 创建和部署 Linux 容器映像。 如果已上传容器映像,它将出现在 映像 菜单中。 若要使用,请选择该映像。
选择 OS 类型后,可以选择服务器类型。 根据 OS/服务器类型,你可以启用以下功能。
- 虚拟机指标预览版:通过启用此功能,可以看到系统级指标,例如 CPU、内存、网络等。若要了解详细信息,请阅读我们的 VM 性能指标(预览版)文章
- Windows 核心预览版:允许你在测试版本上测试 Windows 操作系统的最新版本,以查看游戏如何使用较新的操作系统运行。 有关详细信息,请参阅 Windows 操作系统修补程序更新。
- 自动故障转储收集:允许在 Windows 容器 服务器类型上启用自动故障转储收集。 可以选择执行完整转储、小型转储还是自定义转储。 有关详细信息,请阅读 启用自动收集故障转储
进程模式的服务器详细信息
下图显示了在选择 Windows 作为平台,但使用基于进程的服务器类型时,在 OS 部分使用的值。 还可以选择使用基于 Linux 进程的服务器。
容器模式的服务器详细信息
下图显示了选择 Linux 作为平台,但使用基于容器的服务器类型时,在 OS 部分使用的值。 还可以选择使用基于 Windows 容器的服务器。
生成资产
- 在资产下方,选择“上传”。 导航到包含已编译的 PlayFab 多人游戏服务器内部版本的文件夹,然后选择要上传的 .zip 包。
Windows 服务器的资产
- 对于 Windows 平台,必须将 PlayFab 游戏服务器内部版本作为资产上传。 要了解如何创建 PlayFab 游戏服务器内部版本,请参阅 创作游戏服务器内部版本。 上传资产以修改和自定义 Windows 容器映像。 Windows 服务器中资产的装载路径应位于 C 驱动器中。
Windows 容器服务器的资产
Windows 服务器的资产需要位于 C 驱动器中,否则 API 可能会返回错误。 只有容器才需要装载路径。
注意
请勿为基于进程的服务器提供装载路径。
Linux 服务器的资产
- 对于 Linux 平台,上传资产是可选操作,因为可以将游戏服务器作为容器映像的一部分包含在内。 但你仍必须具有游戏服务器,请确保装载路径在要上传的容器中有效。
如果要上传资产:
- 设置 C:\Assets 或选择其他路径作为装载路径
- 将 C:\Assets\YourGameServerBuild.exe 设置为启动命令
网络设置
- 对于网络,设置端口号、名称和协议。
为容器服务器类型设置端口
如果使用容器服务器类型,应指定端口号。
例如,在容器服务器类型的游戏管理器中,可以指定:
- 端口名称:“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。
- 在区域下,选择要部署服务器的区域。 然后指定待机服务器数和最大服务器数。
- 选择“保存”以开始部署过程。 将转到内部版本主页。 该内部版本将显示 部署 状态,如下图所示。
几分钟后,内部版本应处于 已部署 状态。 这意味着已部署服务器并且可以进行分配。 有关分配游戏服务器的详细信息,可以查看 此处,要试验服务器分配,则可以使用 MpsAllocatorSample。
配置区域信息
部署内部版本后,仍然可以修改以下参数。
- 区域
- 待机服务器
- 最大服务器数
要配置区域设置:
- 请转到 服务器>内部版本 页面
- 选择要修改的内部版本
- 在“区域”选项卡上,转到 按区域划分的服务器 部分
- 添加/删除区域并修改服务器编号
提示
在开发过程中,请关闭任何未使用或不正常的区域,以避免 VM 核心小时使用。 核心小时使用从 VM 启动期间开始,一直持续到 VM 关闭为止。 除非区域的目标待机服务器达到 0 或区域被删除,否则不会自动关闭区域中的 VM。
关闭 VM
有三种方法可以关闭 VM
- 将区域的目标待机设置为 0,此操作将仅关闭此区域的 VM。
- 从内部版本中删除特定区域。
- 删除整个内部版本,此操作将关闭此内部版本中所有区域的 VM。