LibGDX - 将跨平台客户端连接到服务器(HTML5/GWT、iOS、Android 和桌面)
LibGDX - Connecting cross-platform clients to a server (HTML5/GWT, iOS, Android and Desktop)
周末我为我正在制作的游戏设置了所有网络。我基于本教程:GamesFromScratch.com Basic LibGDX Networking。它说它只支持 TCP,但我对此没有意见,因为我可以想出一些办法,而且网上有很多 material 介绍如何在没有 UDP 的情况下制作实时游戏。完成后,我在桌面上测试了它,android 然后在 HTML5/GWT 上。桌面和 android 工作但 GWT 没有。我做了一些研究,发现 Gdx.net 不支持 GWT,这篇文章没有警告我:/基本上现在我正在尝试找到一个适用于所有 libgdx 平台的替代解决方案。
我研究了带有套接字 IO 的 Websockets。这是我为 Client and Server 找到的 Java 个库。服务器库说它与令人放心的客户端库配合得很好。这似乎是一个很好的解决方案,但我有几个问题:
- 客户端库可以在所有平台上运行吗? 它似乎可以在 android 和桌面上运行,因为它们不需要转换为另一种语言但是 GWT 和 iOS 呢?而且不仅能正常工作,还能使用服务器库连接服务器
- 使用websockets有什么需要注意的地方吗?
谢谢。
编辑: 我做了更多研究,发现 Jetty。我环顾四周,它似乎与 GWT 兼容,我只需要知道它是否也与 iOS 兼容。我也可以使用 Jetty 作为我的服务器 api 吗?
您可以使用 Kryonet 为 PC 提供网络,Android 和 iOS(未测试)。在此库中,您可以构建服务器端或客户端应用程序。
在 GWT 中,你有 WebSocket,你必须使用其他库来连接服务器。
当您开始游戏时,您可以为 GWT 注入正确的实现客户端,例如:gwt-websockets 和 kryonet 用于其他平台。
接下来,你必须自己更改kryonet默认的序列化实现,支持json。在 my project 我使用 LibGDX json 序列化。
目前,我没有对 gwt 的支持,但我会在近期的功能中处理它。
我认为 Jetty 对客户来说太重了,而且也不是那么简单。但是Spring,你可以轻松创建基于REST或http通信的服务器服务。
我做到了。在过去的几天里我做了很多研究,我终于在 whosebug.com 上找到了 this post,它告诉我 2 个很棒的库,包括一个我可以与支持 GWT 的客户端一起使用的库。
它工作得很好,唯一的问题是我必须为客户端使用 2 个 WebSocket 库,一个在 html 上,另一个用于所有其他平台,但这没关系,至少它可以工作。
周末我为我正在制作的游戏设置了所有网络。我基于本教程:GamesFromScratch.com Basic LibGDX Networking。它说它只支持 TCP,但我对此没有意见,因为我可以想出一些办法,而且网上有很多 material 介绍如何在没有 UDP 的情况下制作实时游戏。完成后,我在桌面上测试了它,android 然后在 HTML5/GWT 上。桌面和 android 工作但 GWT 没有。我做了一些研究,发现 Gdx.net 不支持 GWT,这篇文章没有警告我:/基本上现在我正在尝试找到一个适用于所有 libgdx 平台的替代解决方案。
我研究了带有套接字 IO 的 Websockets。这是我为 Client and Server 找到的 Java 个库。服务器库说它与令人放心的客户端库配合得很好。这似乎是一个很好的解决方案,但我有几个问题:
- 客户端库可以在所有平台上运行吗? 它似乎可以在 android 和桌面上运行,因为它们不需要转换为另一种语言但是 GWT 和 iOS 呢?而且不仅能正常工作,还能使用服务器库连接服务器
- 使用websockets有什么需要注意的地方吗?
谢谢。
编辑: 我做了更多研究,发现 Jetty。我环顾四周,它似乎与 GWT 兼容,我只需要知道它是否也与 iOS 兼容。我也可以使用 Jetty 作为我的服务器 api 吗?
您可以使用 Kryonet 为 PC 提供网络,Android 和 iOS(未测试)。在此库中,您可以构建服务器端或客户端应用程序。 在 GWT 中,你有 WebSocket,你必须使用其他库来连接服务器。 当您开始游戏时,您可以为 GWT 注入正确的实现客户端,例如:gwt-websockets 和 kryonet 用于其他平台。
接下来,你必须自己更改kryonet默认的序列化实现,支持json。在 my project 我使用 LibGDX json 序列化。
目前,我没有对 gwt 的支持,但我会在近期的功能中处理它。
我认为 Jetty 对客户来说太重了,而且也不是那么简单。但是Spring,你可以轻松创建基于REST或http通信的服务器服务。
我做到了。在过去的几天里我做了很多研究,我终于在 whosebug.com 上找到了 this post,它告诉我 2 个很棒的库,包括一个我可以与支持 GWT 的客户端一起使用的库。
它工作得很好,唯一的问题是我必须为客户端使用 2 个 WebSocket 库,一个在 html 上,另一个用于所有其他平台,但这没关系,至少它可以工作。