Unity多人游戏同步

时间:2014-02-07 10:38:06

标签: networking mobile synchronization unity3d multiplayer

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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