-1

我们有一个使用 SignalR 实现的游戏,它有几个玩家并加入了一个组。但是有些玩家可能会突然下线,我们要启动机器人来代替左边的玩家。我们当前的问题是当我们让一名玩家下线时,但游戏似乎卡在那里。有没有办法重新加入剩余的玩家和启动的机器人并继续游戏?谢谢你。

4

1 回答 1

0

如果我正确理解了您的问题,那么您将拥有一个多人游戏,其中每个用户都通过 SignalR 连接进行连接。你有玩家离线,你可以通过 OnDisconnect 事件在服务器上知道,你想用你自己的机器人玩家替换这些玩家。

我假设每个玩家都有一个唯一的 ID。这个唯一的 Id 需要与 connectionId 进行映射才能实现精确替换。uniqueId 也可以是 connectionId 本身。

对于您的问题的解决方案,您需要:

  • 找出哪个 uniqueId/connectionId 离线。
  • 从另一个客户端创建与 Hub 服务器的新连接,该客户端将是您的机器人玩家。
  • 将玩家的 uniqueId/connectionId(下线的那个)替换为您的活跃机器人玩家的 uniqueId/connectionId。
  • 将状态从离线玩家转移到机器人玩家。

但是,您的播放器可能在断开连接超时(默认为 30 秒)之前不会响应。如果您想很快知道您的播放器是否已离线,请减少 DisconnectTimeout。

注意:在继续之前检查减少超时对应用程序的性能影响。

于 2017-08-18T15:26:39.747 回答