Local DS
1. 概述
为了便于在非生产环境中快速部署游戏到 DS,PGOS 提供了local DS 机制。这使您可以在local(非云端)DS 上部署游戏,而无需在 DS 或游戏客户端中添加任何额外代码。这种类型的 DS 会作为可用的 DS 被纳入 PGOS 工作系统中,并分配给游戏客户端,如下图所示:
localDS机制适用于以下场景:
- 项目开发阶段的游戏调试。
- 小规模内部游戏测试。
2. 整体使用流程
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:
如上图所示,创建一个名为MyPlacer
的local Placer:
- Placer 名称:名称只能包含字母和数字,且必须以字母开头。最大长度为128个字符,local Placer 名称必须唯一。
- 查找 DS 超时时间:这是向 Placer 发送战斗会话放置请求时的最长等待时间。可以设置为10到600秒之间,创建后无法修改。
创建local Placer 后,您将看到如下界面:
3.2 关联匹配/房间
您只能修改需要在local Placer(local DS)上放置对战会话的匹配/房间配置。
将local Placer 关联到匹配配置
前往对战 > 匹配,找到游戏中要使用的匹配配置,并按以下方式编辑:将Placer
属性更改为MyPlacer
。
将local Placer 关联到房间配置
前往Battle > Lobby,找到要在游戏中使用的房间配置,并按以下方式编辑:将Placer
属性更改为MyPlacer
。
3.3 将DS绑定到localPlacer
创建localPlacer时,您可以从Placer信息中获取localPlacer ID:
现在,您可以将此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 将自动从本地机器获取。
3.4 启动DS进程实例
完成上述操作后,您的DS将被设置为local DS模式。现在,您可以直接在本地设备上为其启动进程实例。这些实例将与指定的local Placer关联。您可以启动多个进程实例,或在多个本地设备上启动实例。从门户网站,您可以看到local Placer的当前local DS列表,如下图所示:
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 模式匹配 :
匹配成功,进入战斗:
开始战斗:
现在,您可以进入门户网站并在local Placer 中检查local DS 实例状态:
战斗会话被放置在local DS实例上,端口为7777。您可以点击战斗会话ID进入该战斗会话的详细信息页面:
local DS 现已运行,您可以在本地机器上进行测试/调试。
4. 维护活跃的local DS
由于local DS 的活跃进程实例数量不像云环境那样能自动保证,您可能需要找到一个自动维护local DS 数量的解决方案。例如,编写一个系统命令脚本来自动维护所需数量的可用local DS 进程。
5. 注意事项
- 确保运行local DS 的本地机器具有顺畅的出站和入站网络通信。
- 如果local DS 进程被调试器暂停超过 8 小时,PGOS 将会将其从local DS 列表中移除。