当前位置:  开发笔记 > 编程语言 > 正文

实时游戏服务器最有效的Java实现是什么?

如何解决《实时游戏服务器最有效的Java实现是什么?》经验,为你挑选了1个好方法。

我正计划构建一个Java服务器来处理客户端之间的实时游戏通信.什么是最好的Java实现类型,可以有效地,并且希望在客户端和服务器之间高速准确地进行通信(比如每秒5-15个数据包)?我知道有很多类型的Java网络API(即ObjectInputStream和ObjectOutputStream,DatagramPacket,KyroNet等),但我不确定这种情况下最有效和/或最常用的实现是什么.我认为大多数实时游戏都使用UDP通信方法,但我理解随之而来的可靠性问题.是否有UDP实现具有某种形式的流量控制?无论如何,提前谢谢!



1> mikera..:

需要考虑的一些事项:

Java NIO非常好,可以处理您正在寻找的吞吐量/延迟.不要使用任何旧的网络/序列化框架和API

延迟非常重要.你基本上想要一个基于NIO的最小层,它允许你以最小的开销发送非常快速,小的,个人的消息.

根据游戏的不同,您可能需要TCP或UDP或两者.对于重要消息使用TCP,对于游戏继续不是严格必需的消息使用UDP,或者将其包含在将来的更新中(例如,FPS中的位置更新)

有些人通过UDP实现他们自己的类似TCP的消息传递协议用于实时游戏.这可能比它的价值更麻烦,但如果你真的需要优化特定类型的通信,请注意它作为一种选择

对于实时游戏,您几乎总是在进行自定义序列化(例如,只发送增量而不是对象位置的完整更新) - 所以请确保您的框架允许

鉴于此,我建议采用以下方法之一

Kryonet - lightwieght,可定制,专为此目的而设计

Netty - 略微更加面向企业,但功能强大,功能强大且可扩展

基于NIO自己滚动 - 很棘手但如果你想要非常细粒度的控制可能.我以前做过这个,但回想起来我可能应该选择Kryonet或Netty

祝好运!

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有