我正在使用Libgdx开发一个在线版本的热门游戏Pong.我已经开始使用Google的实时多人游戏服务来在玩家之间发送游戏数据,但是我无法弄清楚如何解决我所面临的同步问题.
目前发送的信息是玩家的桨,所以当我移动时,我将我的新职位发送给对手.在对手接收时,时间已经过去,同步丢失.
我知道运动之间应该有一些等待时间,使用最慢的连接,但是如何让它看起来顺利呢?
解决方法
这个问题没有明确的答案,但有各种各样的策略,人们可以适应这种情况.
使用UDP协议(如果您正在使用基于套接字的通信,我将推荐您,因为每个ms在实时游戏中都是重要的,我认为google api具有UDP是不可靠的消息传递,再次,我没有google-realtime-api的经验)消息交换插值,推算,客户端预测等只是很少.
这是一个非常广泛的话题.当我做了我的多人坦克游戏我做了一些事情,使事情看起来更平滑一些.
>使用UDP协议将动作发送到服务器.
>我将在客户端为玩家保留两个条目.一个是当前值,一个是要设置的值.然后,我将使用0.3f的平滑因子乘以当前值,直到不等于要设置的值. (这有助于减少抖动)
>我会通过TCP发送重要消息.
我提到的几点描述了我在我的游戏中所做的,但可以用于任何一个.虽然我建议你阅读这个网站上的文章,称为Gaffer on Games
再次,这个领域是巨大的,没有答案可以帮助你.我做了这个话题的论文,仍然不能给你一个明确的答案.您将不得不阅读很多文章,并根据您的需要模拟您学习的内容.