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

11

我正在使用Libgdx开发一个流行游戏Pong的在线版本。我已经开始使用Google的实时多人游戏服务将游戏数据发送给玩家,但我无法解决我面临的同步问题。

目前发送的信息是玩家的挡板位置,所以当我移动时,我会将我的新位置发送给对手。但在对手接收到信息的时候,时间已经过去了,同步就丢失了。

我知道在使用最慢的连接进行移动时可能需要一些等待时间,但如何使它看起来更加流畅呢?

1个回答

1
这个问题没有明确的答案,但有各种策略可以解决这种情况。从使用UDP协议(如果您正在使用基于套接字的通信,我会建议您这样做,因为实时游戏中每毫秒都很重要。我认为Google API有不可靠消息传递的UDP。再次声明,我没有使用过Google实时API)进行消息交换到插值、死 reckoning、客户端预测等只是其中的几个。
这是一个非常广泛的话题,在此无法详细回答。当我制作我的多人坦克游戏时,我做了一些事情使事情看起来更加流畅。
  1. 使用UDP协议将移动发送到服务器。
  2. 在客户端为玩家保留两个条目。一个是当前值,另一个是要设置的值。然后,我会将当前值乘以平滑系数,如0.3f,直到它等于要设置的值。(这有助于减少抖动)
  3. 我会通过TCP发送重要的消息。
我提到的这些点描述了我在游戏中所做的事情,但可以用于任何游戏。虽然我建议您阅读这个网站上的文章,名为Gaffer on Games

这个领域非常广泛,没有一个答案能够帮助你解决问题。我曾经在这个主题上写过我的论文,但仍然无法给出明确的答案。你需要阅读很多文章,并根据自己的需求进行模拟学习。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接