java - 多人游戏

标签 java multiplayer

我正在尝试创建一个多人游戏,

  1. 服务器每2个玩家创建1个房间(我的游戏是PvP,一对一)
  2. 每个房间处理游戏逻辑
  3. 我将使用 Java.Util.Timer 作为我的游戏循环
  4. 服务器 FPS = 5
  5. 每个房间都会处理玩家移动和少量物理

关于实际问题:

根据以下几点,我应该使用什么样的游戏循环?以下每种游戏循环的优缺点是什么。

  1. 每个房间都有自己的游戏循环(计时器)
  2. 在单个游戏循环(计时器)中处理所有房间
  3. 所有房间都在一个游戏循环中处理,但是当房间总数 = 50 时,服务器将创建另一个新的游戏循环。

编辑

到目前为止我尝试了什么:

我在第 1 点使用了游戏循环,但是有些房间没有机会更新他们的游戏循环。我很困惑我是否需要更改我的游戏循环,或者我是否需要在每个循环中更改我的代码,或者问题是否是因为 Java.Util.Timer

最佳答案

最终,这取决于您需要提供更多信息。

你在处理不同的游戏,或者在不同的房间“比赛”,我认为是因为你说你的游戏是 1v1。

如果您不需要在各个“房间”运行时在它们之间传输数据,那么使用单独的循环就没有意义。如果您在服务器上托管游戏,那么每个“房间”都应该作为不同的进程并行处理。

另请注意,如果根本不需要传输数据,那么您实际上应该使用直接 TCP/UDP 连接。

如果你详细说明,我会更好地回答,但我建议你看看这个。它是用 C++ 而不是 Java 编写的,但它仍然可能有帮助

Verifying sent packets on real time network using SFML

关于java - 多人游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29314078/

相关文章:

java - 一个巨大的3D立方体的加工如何划分?

ios - iOS 上多人游戏的实时消息传递

javascript - chrome.socket 如何用于广播或多播?

java - java中的实时套接字

ios - 回合制多人游戏 (Game Center, iOS) - 关闭 GKMatchmakerViewController 并呈现自己的用户界面来玩回合

java - 如何在java中使用lambda表达式添加Map

java - 删除子类时,Hibernate 不会删除主行

java - jackson JSON 反序列化 : array elements in each line

ios - 替换 GKTurnBasedMatch 参与者属性中的玩家

java - 为什么 CheckBoxMenuItem 不生成操作事件?