一个多人在线动作游戏的互联网连接性问题

3
简短的故事:我和朋友正在制作一款多人动作游戏,我们认为playn非常适合这个项目。虽然Android、Java和HTML5支持最重要,但如果没有必要,我们不想削减其他平台的支持。
问题是现在我们想要实现网络部分。我们已经实现了一个功能强大的服务器,并打算使用长轮询HTTP请求进行通信。我们现在估计需要一种方式来运行一个线程,该线程使用消息和两个多线程安全队列进行通信。其中一个队列用于传入消息,可以由update()部分消费,另一个队列用于向服务器发送传出消息。
有没有办法在不失去平台支持的情况下实现这一点?或者有没有其他想法如何实现这一点?
1个回答

4
PlayN目前没有跨平台支持与服务器建立持久的套接字连接。您需要实现自己的跨平台抽象。您可以在HTML5后端使用WebSockets,还可以寻找适用于Android和其他平台的WebSockets库。
您也可以使用Nexus库,它专为PlayN设计,提供客户端/服务器通信。但是,它将抽象层次显著提高到了仅在客户端和服务器之间传递简单消息以上的程度,因此,实现自己简单基于WebSockets的通信可能比学习Nexus的工作方式更容易。

线程问题怎么办?你如何在不同的平台上实现线程?关于Websockets,是的,我想那将是解决问题的最佳方案。你认为我们是否应该以良好的方式实现它,以便稍后可以将其打补丁到playn中? - Hirschen
对于需要线程的平台,您可以使用本地平台API创建线程。在Web浏览器中,您不需要线程来使用WebSockets,浏览器会为您处理这些事情。 - samskivert
此外,您不需要将事物结构化以便可以将它们打补丁到PlayN中。您可以简单地创建自己的跨平台网络API,该API使用与PlayN相同的跨平台处理方法和相同的平台,并且想要使用您的库的游戏可以使用它。这就是Nexus所做的。它不必成为PlayN的一部分。 - samskivert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接