我正在尝试在this tutorial的帮助下将Kryonet集成到Slick2D游戏中。我正在尝试创建服务器/客户端基础结构,用户可以在其中创建服务器或加入服务器来玩两人游戏。
该教程建议将整个游戏对象添加为“网络侦听器”,但是在我的Slick2D游戏中,GameContainer和StateBasedGame仅在整个应用程序中可用。
GameContainer包装了我的游戏对象,并且该游戏对象扩展了StateBasedGame。我不知道如何集成KryoNet。
我真的很难找到可以帮助我的信息,因此任何指导都是很棒的。
最佳答案
您应该创建一个GameServer类和一个GameClient类。游戏逻辑进入GameServer,渲染进入GameClient。如果您的游戏逻辑与渲染代码混合在一起,请查看一些模型视图控制器的说明(这里是一篇不错的文章:http://www.badlogicgames.com/wordpress/?p=2668)。
让我告诉您,通常服务器和客户端是完全不同的应用程序,有时让用户托管服务器是不可行的,因为这可能涉及配置防火墙等。
因此,GameServer应该扩展侦听器,创建kryonet服务器的实例,并将其自身添加为服务器的侦听器。 GameClient应该类似地扩展Client,创建kryonet的Client实例,并将其自身添加为客户端的侦听器。
如果将当前游戏状态类的引用传递给GameClient,则GameClient可以与之通信并告诉它要渲染什么,然后游戏状态可以告诉客户端要作为输入发送的内容。同样,如果将对当前游戏状态类的引用传递给GameServer,则服务器可以向游戏逻辑提供输入,然后游戏逻辑可以告诉服务器向客户端发送什么。
我建议您在IP回送上创建一个简单的消息传递程序,以熟悉kryonet。
关于java - Kryonet和Slick2D,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13822955/