【问题标题】:Unity Multiplayer player synchronizationUnity Multiplayer 玩家同步
【发布时间】:2014-02-07 10:38:06
【问题描述】:

我正在开发一款统一的手机游戏。这就像一个多人版本的寺庙奔跑。因为这个游戏是为移动而设计的,所以延迟的波动通常在 200 毫秒到 500 毫秒之间。 由于路径是预先确定的,并且用户可以执行的操作是有限的(跳跃、滑动、使用加电等),远程播放器会继续在路径上运行,直到它从本地播放器接收到更新的状态。 这种策略通常效果很好,因为我只需要通过网络发送有限数量的数据,但在特定情况下我遇到了问题。 在游戏中,玩家会死在特定的位置(障碍物)。 我希望远程玩家死在与本地玩家相同的障碍物/位置,但由于发送消息的延迟,远程玩家在收到死亡消息时会越过障碍物。 有没有办法让玩家同步死亡。 我尝试的其中一件事是将远程玩家移回本地玩家的死亡位置,但这不仅在视觉上看起来很尴尬,而且还会引发其他同步问题。 还有其他更好的方法吗?

【问题讨论】:

  • 有趣的问题 - 你能稍微澄清一下这句话“我希望远程玩家和本地玩家死在相同的障碍物/位置”吗?

标签: networking mobile synchronization unity3d multiplayer


【解决方案1】:

我可能推荐的一种方法是让一个玩家扮演服务器(而不是真正的服务器)的角色。服务器播放器将完成所有计算,如移动、跳跃、创建场景等。然后服务器播放器将发送所有数据与客户端播放器同步。客户端玩家获取数据并处理游戏状态。客户端播放器也可以将他的动作(左右跳跃滑动)发送到服务器播放器。这样,两个玩家都将拥有相同的游戏状态,例如位置,死亡。您还需要通过添加一些预测来处理延迟。

【讨论】:

    【解决方案2】:

    所以我实施的解决方案是我将所有远程玩家都放在后面,这样他们就有时间接收本地玩家在特定障碍物上死亡的信息。最后有一条直接的路径,我只是再次同步播放器。以便正确显示结果。

    【讨论】:

      猜你喜欢
      • 2016-12-21
      • 2019-02-24
      • 2021-04-15
      • 2019-11-10
      • 2015-02-12
      • 2018-08-03
      • 1970-01-01
      • 2021-06-27
      • 2020-09-14
      相关资源
      最近更新 更多