LibGDX - 连接跨平台客户端到服务器(HTML5/GWT、 iOS、 Android 和桌面)

5
上周末我为我正在制作的游戏设置了所有的网络。我参考了这个教程:GamesFromScratch.com Basic LibGDX Networking。它说它只支持TCP,但是我还是可以想出一个办法并且网上有很多材料可以告诉我如何在没有UDP的情况下制作实时游戏。完成后,我在桌面、安卓和HTML5/GWT上进行了测试。桌面和安卓可以运行,但是GWT不能。我做了一些研究发现Gdx.net不支持GWT,可惜那篇文章没有警告我。现在我正在尝试找到一个替代方案,可以在所有libgdx平台上使用。

我研究了Socket.IO中的Websockets。这里是我为它找到的Java库: 客户端服务器。服务器库称其与客户端库兼容,这让人放心。看起来这是一个很好的解决方案,但是我有几个问题:

- 客户端库会在所有平台上工作吗?看起来它会在安卓和桌面上工作,因为他们不需要转换成另一种语言,但是GWT和iOS呢?而且不仅仅要工作,还要能够使用服务器库连接到服务器。

- 在使用websockets时有什么需要注意的吗?

谢谢。

编辑:我做了更多的研究,发现了Jetty。我查找了一下,看起来它是GWT兼容的,我只需要知道它是否也与iOS兼容。那么我可以将Jetty用作我的服务器api吗?

2个回答

2
我做到了。过去几天里,我进行了大量的研究,并最终在stackoverflow.com上找到了这篇文章,告诉我有两个很棒的库,其中一个支持GWT客户端。
它的表现很出色,唯一的问题是我需要为客户端使用2个WebSocket库,一个用于html,另一个用于其他所有平台,但没关系,至少它可以工作。
这两个库是:ClientServer

从那时起,我一直在使用gdx-websockets!它将2个websocket客户端合并为一个。我正在对其进行一些工作,尝试实现SSL支持。https://github.com/czyzby/gdx-lml/tree/master/websocket - vedi0boy

0

你可以使用Kryonet,它为PC、Android和iOS(未经测试)提供网络支持。在这个库中,你可以构建服务器端或客户端应用程序。 在GWT中,你有WebSocket,但你必须使用其他库来连接服务器。 当你开始游戏时,你可以注入正确的实现客户端,例如:gwt-websockets和kryonet适用于其他平台。

接下来,你必须通过自己的方式更改kryonet默认的序列化实现,支持json。在我的项目中,我使用了LibGDX json序列化。

目前,我没有为gwt提供支持,但我会在不久的将来进行研究。

在我看来,Jetty对于客户端来说太重了,而且并不是很简单。但是,借助Spring,你可以轻松创建基于REST或http通信的服务器服务。


但是服务器将不得不处理Websockets和Kryonet。我已经使用Kryonet一年多了,我想找到一个支持GWT的解决方案。谢谢你的回答。 - vedi0boy

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