You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unreal Engine Pixel Streaming Matchmaker无法转发客户端至空闲Signalling Server

问题原因与解决方案

核心问题定位

从日志和配置来看,两台Cirrus(Signalling Server)已成功连接到Matchmaker,但Matchmaker判定无空闲服务器的原因在于:

  • Cirrus未配置明确的MaxPlayerCount,Matchmaker无法识别服务器容量
  • 两台Cirrus的PublicIp完全相同,导致Matchmaker无法区分不同实例
  • 无限制容量(MaxPlayerCount: -1)触发Matchmaker的空闲判定逻辑异常

分步解决方案

1. 为Cirrus配置明确的玩家容量

在两台Cirrus的config.json中添加MaxPlayerCount字段(根据单实例玩家数需求设置,比如单玩家实例设为1):

// Signalling Server 1 config.json
{
  // 原有配置不变
  "MaxPlayerCount": 1
}

// Signalling Server 2 config.json
{
  // 原有配置不变
  "MaxPlayerCount": 1
}

当MaxPlayerCount设为-1(无限制)时,Matchmaker无法正确判断服务器是否还有空闲位置,设置具体值后,Cirrus会主动向Matchmaker上报当前玩家数,Matchmaker即可正常判定空闲状态。

2. 修改PublicIp以区分不同Cirrus实例

由于两台Cirrus在同一机器的不同端口运行,需要让Matchmaker通过PublicIp标识区分它们:

  • SS1的config.json修改:
"PublicIp": "localhost:80"
  • SS2的config.json修改:
"PublicIp": "localhost:70"

Matchmaker依赖PublicIp作为Cirrus实例的唯一标识,相同的PublicIp会被识别为同一服务器,导致状态覆盖或判定错误。

3. 重启服务验证

按以下顺序重启所有服务:

  1. 关闭运行中的Matchmaker和两台Cirrus
  2. 先启动Matchmaker,等待日志显示Matchmaker listening on *:9999
  3. 分别启动两台Cirrus,确认日志显示Cirrus connected to Matchmaker localhost:9999
  4. 访问localhost:90,观察Matchmaker日志是否不再出现No empty Cirrus servers are available警告

4. 验证状态同步

保持Cirrus的LogVerbose: true配置,查看日志中是否有向Matchmaker发送playerCount更新的记录;同时查看Matchmaker日志,确认收到Cirrus的状态消息。


内容的提问来源于stack exchange,提问作者Dev Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 19:25:01