2014-02-07 93 views
1

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

+0

有趣的问题 - 你能否澄清一下这句话:“我希望远程玩家死于与本地玩家相同的障碍/位置”? –

回答

0

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

0

所以我实现的解决方案是我把所有的远程播放器都放在后面,这样他们就可以有足够的时间接收本地播放器在特定障碍上死亡的信息。最后还有一条直线路径,我只是再次同步球员。所以结果显示正确。