java - Kryonet 和 Slick2D

标签 java networking network-programming slick2d kryonet

我正在尝试在 this tutorial 的帮助下将 Kryonet 集成到 Slick2D 游戏中.我正在尝试创建一个服务器/客户端基础结构,用户可以在其中创建服务器或加入服务器来玩两人游戏。

本教程建议将整个游戏对象添加为“网络监听器”,但是在我的 Slick2D 游戏中,GameContainer 和 StateBasedGame 仅在整个应用程序中可用。

GameContainer 包装了我的游戏对象,这个游戏对象扩展了 StateBasedGame。我不知道如何集成 KryoNet。

我真的很难找到可以帮助我的信息,所以任何指导都会很棒。

最佳答案

您应该创建一个 GameServer 类和一个 GameClient 类。游戏逻辑在 GameServer 中,渲染在 GameClient 中。如果您的游戏逻辑与渲染代码混合在一起,请查看一些 Model View Controller 解释(这里有一篇不错的文章:http://www.badlogicgames.com/wordpress/?p=2668)。

让我告诉你,通常服务器和客户端是完全不同的应用程序,有时让用户托管服务器是不可行的,因为它可能涉及配置防火墙等等。

所以GameServer应该扩展Listener,创建一个kryonet的Server实例,并将自己作为一个监听器添加到服务器。 GameClient 应该类似地扩展 Client,创建 kryonet 的 Client 实例,并将自己添加为客户端的监听器。

如果您将当前游戏状态类的引用传递给 GameClient,GameClient 可以与其通信并告诉它要渲染什么,然后游戏状态可以告诉客户端将什么作为输入发送。同样,如果您将当前游戏状态类的引用传递给 GameServer,服务器可以向游戏逻辑提供输入,然后游戏逻辑可以告诉服务器将什么发送给客户端。

我建议在 IP 环回上创建一个简单的消息传递程序以熟悉 kryonet。

关于java - Kryonet 和 Slick2D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13822955/

相关文章:

android - 我的移动应用程序中的 HTTP 发布方法附加了未知字符串(来自 Nomadix?)

python - 维护多个套接字连接,同时通过 python 中的单个处理程序进行接收

c++ - boost::asio async_read 未接收数据或不使用回调

C# UDP 现有连接被远程主机强行关闭

c# - 我怎样才能得到可用的带宽率?

java - 在 cassandra 中使用计数器来处理多个 java 实例

java - 让 Java 集合二分搜索返回多个值

java - 了解数组的克隆方法

java - 录制按钮处于 Activity 状态时禁用其他按钮

C 客户端/服务器程序 : server sends answer multiple times when it shouldn't