2017-04-22 99 views
11

我正在开发使用Libgdx的流行游戏Pong的在线版本。我已经开始使用Google的Realtime Multiplayer服务在玩家之间发送游戏数据,但我无法弄清楚如何解决我面临的同步问题。如何同步播放服务实时多人游戏

此时发送的信息是玩家的桨,所以当我移动时,我将新的位置发送给对手。当对手收到它时,时间已经过去并且同步丢失。

我知道在使用最慢连接的移动之间应该有一些等待时间,但是如何让它看起来平滑呢?

回答

1

这个问题并没有明确的答案,但有很多策略让人们适应解决这种情况。

从使用UDP协议开始(如果你使用基于套接字的通信,我会推荐你​​,因为每个ms都在实时游戏中很重要,我认为google api有UDP,这是不可靠的消息传递。 -api)用于消息交换到插值,航位推测,客户端预测等等。

这是一个非常大的话题在这里回答。当我制作我的多人坦克游戏时,我做了一些事情让事情看起来更平滑。

  1. 使用UDP协议发送移动到服务器。
  2. 我会在客户端为玩家保留两个条目。一个是当前值,另一个是要设置的值。然后我将乘以一个平滑因子如0.3f的当前值直到它不等于要设置的值。 (这有助于减少抖动)
  3. 我会通过TCP发送重要消息。

我提到的观点描述了我在我的游戏中所做的事情,但可以在任何情况下使用。虽然我会建议你阅读本网站上的文章,名字叫做Gaffer on Games

这个领域又很大,没有答案可以帮助你。我在这个话题上做了论文,但仍不能给你一个明确的答案。您将不得不阅读大量文章,并根据您的需求建模您的学习内容。

0

您需要使用某种类型的Animation Interpolation这将意味着桨不“瞬移”到新的位置,但慢慢地开始移动有,在接收到新的位置后。