11

我正在使用 Libgdx 开发流行游戏 Pong 的在线版本。我已经开始使用 Google 的 Realtime Multiplayer 服务在玩家之间发送游戏数据,但我不知道如何解决我面临的同步问题。

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

我知道使用最慢的连接在移动之间可能应该有一些等待时间,但是我怎样才能让它看起来流畅呢?

4

1 回答 1

1

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

对于消息交换到插值、航位推算、客户端预测等只是少数。

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

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

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

同样,这个领域是巨大的,没有答案可以帮助你。我就这个主题做了我的论文,但仍然不能给你一个明确的答案。您将必须阅读大量文章并根据需要对所学内容进行建模。

于 2017-04-24T20:00:08.913 回答