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

Enp*_*npi 11 java android multiplayer libgdx google-realtime-api

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

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

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

Sne*_*neh 1

这个问题没有明确的答案,但人们可以采取多种策略来解决这种情况。

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

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

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

我提到的要点描述了我在游戏中所做的事情,但可以在任何游戏中使用。虽然我建议你阅读这个名为Gaffer on Games 的网站上的文章

同样,这个区域很大,没有答案可以帮助您。我就这个主题完成了我的论文,但仍然无法给你明确的答案。您将必须阅读大量文章并根据您的需要对您所学到的内容进行建模。