首页 / JAVA / java – Udp服务器太慢了?
java – Udp服务器太慢了?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Udp服务器太慢了?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2206字,纯文字阅读大概需要4分钟。
内容图文
因此,我正在做一个MMO,我正在进步很多,6个月编程这个东西.
问题是我正在测试离线我的游戏,今天我有一个绝妙的想法,移植我的服务器并使其在线,我知道它会稍微慢一点,但它可怕!太滞后!!!游戏无法播放.
我像这样管理我的数据包….
播放器想要向上移动,客户端将movePacket发送到服务器,服务器接收它,移动服务器中的播放器并将新位置发送给所有客户端……
每次怪物移动,服务器都会向所有客户发送新位置……
我以为我是在发送数据包,但我只是通过播放器的移动进行测试……它似乎有很大的延迟来接收数据包并将它们发送给客户端….
我做这件事我错了吗?
解决方法:
滞后总是在线游戏的问题.虽然你当前的方法是标准的做事方式,但你发现滞后变得无法忍受(1990年代和2000年初的常见问题).最好的方法是采用与几乎所有现代游戏相同的方法,与客户端一样多,只使用权威服务器来解决客户所做的预测之间的差异.以下是一些减少感知延迟的有用方法:
>客户端预测
对于MMO来说,这可能就是您所需要的.客户端预测的基本思想是在本地弄清楚要做什么.在玩家想要向上移动的游戏中,他发送一个包含[请求:1内容:moveup]的数据包,然后在收到服务器的响应之前,客户端显示Player向上移动一个(除非你已经知道这样的举动)是无效的,即向上移动意味着撞到墙上).如果您的服务器非常慢,那么播放器也可能在收到响应之前向右移动,因此您的数据包下一个数据包可能看起来像[请求:2内容:moveright],此时您将播放器显示在右侧.请记住,此时播放器已经向上移动,直到服务器甚至确认向上移动是有效的移动.现在,如果服务器响应数据包1之后的新播放器位置应该是向上并且数据包2之后的位置应该是正确的那么一切都很好.但是,如果让我们说其他玩家的步骤恰好在玩家之上,则服务器可以在新位置响应玩家.此时,玩家将“传送”到服务器告诉他应该是的任何地方.这种情况不会经常发生,但一旦发生,它就会非常明显(你可能已经注意到它在商业fps游戏中).
>插值
在这一点上你可能对MMO游戏很好,但万一它不是(或将来参考)插值是你的下一步.这里的想法是发送更多关于价值变化的费率的数据,以帮助其他玩家的移动更顺畅.这与在数学中使用泰勒系列来预测函数值的概念相同.在这种情况下,您可以为游戏中的所有实体发送位置以及速度甚至加速度数据.这样,新位置可以计算为x = x v * t 0.5 * att,其中t是帧速率.再次,您在服务器实际确认这是正确的位置之前显示玩家的预测位置.当来自服务器的下一个数据包到来时,你大部分时间都不可避免地会出错,但你发送的数据速率越多,你就会越少,因此其他实体的远程传输就越小.
如果您想要更详细地了解如何处理在线游戏中的延迟,请阅读多人游戏中的迷你圣经:http://www.gabrielgambetta.com/fast_paced_multiplayer.html
内容总结
以上是互联网集市为您收集整理的java – Udp服务器太慢了?全部内容,希望文章能够帮你解决java – Udp服务器太慢了?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。