如何同步Play服务实时多人游戏

时间:2017-04-22 16:55:20

标签: java android libgdx multiplayer google-realtime-api

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

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

据我所知,使用最慢连接的动作之间可能会有一些等待时间,但是如何让它看起来更平滑呢?

2 个答案:

答案 0 :(得分:1)

这个问题没有明确的答案,但人们有各种策略可以解决这个问题。

使用UDP协议(如果您使用基于套接字的通信,我会推荐您,因为每个ms在实时游戏中都很重要。我认为google api有UDP,这是不可靠的消息。再次,我没有google-realtime的经验 - api)用于插值,航位推算,客户端预测等的消息交换只是少数。

这是一个非常广泛的主题,可以在这里回答。当我制作基于多人坦克的游戏时,我做了一些事情让事情看起来更顺畅。

  1. 使用UDP协议向服务器发送动作。
  2. 我将在客户端为玩家保留两个条目。一个是当前值,一个是要设置的值。然后我将当前值乘以0.3f等平滑因子,直到它不等于要设置的值为止。 (这有助于减少紧张情绪)
  3. 我会通过TCP发送重要消息。
  4. 我提到的要点描述了我在游戏中所做的一切,但可以在任何游戏中使用。虽然我建议你阅读这个名为Gaffer on Games

    的网站上的文章

    此区域很大,没有答案可以帮助你。我做了关于这个主题的论文,仍然无法给你一个明确的答案。您将需要阅读大量文章并根据您的需求对您学到的内容进行建模。

答案 1 :(得分:0)

你需要使用某种类型的Animation Interpolation,这意味着划桨不会传送"收到新职位后,在新职位上慢慢开始移动。