跳到主要内容

Local DS

1. 概述

为了便于在非生产环境中快速部署游戏到 DS,PGOS 提供了local DS 机制。这使您可以在local(非云端)DS 上部署游戏,而无需在 DS 或游戏客户端中添加任何额外代码。这种类型的 DS 会作为可用的 DS 被纳入 PGOS 工作系统中,并分配给游戏客户端,如下图所示:

wecom-temp-df15701f564efe1cd39d8df6a79486c3

localDS机制适用于以下场景:

  • 项目开发阶段的游戏调试。
  • 小规模内部游戏测试。

2. 整体使用流程

sequenceDiagram Developer->>Portal: simply create a local placer Portal-->Developer: local placer id Developer->>Portal: associate local placer to match or lobby config Developer->>Local DS: add local placer id to DS config (bind DS to local placer) Developer->>Local DS: launch local DS process instances Developer->>Game Client: launch game client process instances Game Client->>PGOS: start battle with matchmaking or lobby PGOS->>Game Client: place the battle session to the local DS Game Client->>Local DS: connect to local DS, gameplay Local DS-->Game Client: gameplay

3. 详细使用指南

在学习如何使用local DS 之前,我们需要先明确以下概念:

  • local DS:与将 DS 打包成 Build 并上传至 PGOS 不同,local DS 可以在任意指定环境中运行,而不是由 PGOS 提供的 CVM。
  • local Placer:这是专门用于挂载local DS 的场所。与 Placer 一样,local Placer 可以关联匹配配置/房间配置。与 Placer 不同的是,local Placer 不需要关联fleet。您可以直接将local DS 注册到指定的local Placer。具体流程见下文。

3.1 创建local Placer

登录网页门户,进入您的游戏区服,然后转到DS & Builds > Placers

image-20220913194509960

如上图所示,创建一个名为MyPlacer的local Placer:

  • Placer 名称:名称只能包含字母和数字,且必须以字母开头。最大长度为128个字符,local Placer 名称必须唯一。
  • 查找 DS 超时时间:这是向 Placer 发送战斗会话放置请求时的最长等待时间。可以设置为10到600秒之间,创建后无法修改。

创建local Placer 后,您将看到如下界面:

image-20220913194754022

3.2 关联匹配/房间

您只能修改需要在local Placer(local DS)上放置对战会话的匹配/房间配置。 将local Placer 关联到匹配配置 前往对战 > 匹配,找到游戏中要使用的匹配配置,并按以下方式编辑:将Placer属性更改为MyPlacer

image-20230105193908165

将local Placer 关联到房间配置 前往Battle > Lobby,找到要在游戏中使用的房间配置,并按以下方式编辑:将Placer属性更改为MyPlacer

image-20230105193949344

3.3 将DS绑定到localPlacer

创建localPlacer时,您可以从Placer信息中获取localPlacer ID:

image-20220913200648635

现在,您可以将此local Placer ID 写入 DS 的 pgos_server_config.ini 文件中,以将 DS 绑定到指定的local Placer。文件位置如下:

  • 如果通过 UE 项目启动local DS,请查看目录:{GameProjectPath}\Saved\PgosRes\
  • 如果从打包程序启动local DS,请查看目录:{PackedGamePath}\{GameName}\Binaries\pgos_res

以下是相关配置项的说明:

  • local_placer_id:指定绑定到 DS 的local Placer。如果指定了值,则为local DS 模式。
  • local_ds_ip:指定要绑定到local DS 的 IP 地址(该地址将分发给游戏客户端以建立连接)。如果为空,PGOS 将自动从本地机器获取。

image-20230627174748767

3.4 启动DS进程实例

完成上述操作后,您的DS将被设置为local DS模式。现在,您可以直接在本地设备上为其启动进程实例。这些实例将与指定的local Placer关联。您可以启动多个进程实例,或在多个本地设备上启动实例。从门户网站,您可以看到local Placer的当前local DS列表,如下图所示:

image-20230523115046464

MyPlacer 有六个local DS实例,均处于 Idle 状态。这意味着它们可以接受战斗会话放置。通常,local DS实例状态随着DS进程和战斗会话状态而变化。但是,如果local DS进程异常终止,PGOS 后端将要执行三次健康检查,然后才能判断它已离线。为避免将新的战斗会话分配给有问题的DS实例,您可以从门户上的local Placer详细信息页面手动删除该DS实例。可能的local DS实例状态值:

  • Idle:local DS已准备就绪,可以接受战斗会话 。

  • Pending:PGOS 已在此local DS上放置战斗会话 ,但local DS尚未激活战斗会话。

  • Active:local DS已激活战斗会话 战斗会话 。

  • Offline:local DS处于离线状态。如果DS在连续 3 个 OnHealthCheck 回调中返回 FALSE,或者 OnHealthCheck 阻塞超过 3 个健康检查周期,则判定localDS处于离线状态。当localDS处于离线状态时,如果在 8 小时内的某个 OnHealthCheck 回调中返回 TRUE,则将从离线状态恢复。以下介绍两种典型场景:

    • local DS进程被调试器挂起。

    • local DS进程被异常终止,例如被杀死或崩溃。

3.5 启动游戏客户端进程实例

现在local DS已经准备就绪,您可以启动游戏客户端并发起战斗会话 。PGOS 后端会将战斗会话放在local DS上。以下以 PGOS Shooter 游戏客户端为例: 启动 1 vs 1 模式匹配 :

image-20240516150625183

匹配成功,进入战斗:

image-20240516150722846

开始战斗:

image-20240516153943131

现在,您可以进入门户网站并在local Placer 中检查local DS 实例状态:

image-20210813223945028

战斗会话被放置在local DS实例上,端口为7777。您可以点击战斗会话ID进入该战斗会话的详细信息页面:

image-20210813224304332

local DS 现已运行,您可以在本地机器上进行测试/调试。

4. 维护活跃的local DS

由于local DS 的活跃进程实例数量不像云环境那样能自动保证,您可能需要找到一个自动维护local DS 数量的解决方案。例如,编写一个系统命令脚本来自动维护所需数量的可用local DS 进程。

5. 注意事项

  • 确保运行local DS 的本地机器具有顺畅的出站和入站网络通信。
  • 如果local DS 进程被调试器暂停超过 8 小时,PGOS 将会将其从local DS 列表中移除。