游戏多人游戏

时间:2015-03-28 05:38:52

标签: java multiplayer

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

  1. 对于每2名玩家,服务器将创建1个房间(我的游戏是PvP,1对1)
  2. 每个房间都处理游戏逻辑
  3. 我将使用Java.Util.Timer作为我的游戏循环
  4. 服务器FPS = 5
  5. 每个房间都会处理玩家移动和小物理
  6. 关于实际问题:

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

你正在处理不同的游戏或不同房间的“匹配”,我接受它,因为你说你的游戏是1v1。

如果你不需要在各个'房间'之间传输数据,那么比单独的循环没有任何意义。如果您在服务器上托管游戏,则应将每个“房间”作为不同的并行处理。

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

如果你详细说明,我可以更好地回答,但我建议你看看这个。它是用C ++而不是Java,但它仍然可以提供帮助

Verifying sent packets on real time network using SFML

答案 1 :(得分:0)

我在考虑自己这样做。这取决于您对网络进行编码的方式。我正在使用kryonet库,所以我的解决方案可能与你的不同。

此外,如果没有更多信息,很难回答这个问题。你在制作什么类型的游戏?它的图形很重吗?你需要UDP / TCP连接吗?延迟是个问题吗?你打算实现线程吗?用户是与服务器交互还是直接相互连接或两者兼而有之? (你提到了房间,所以我假设有一台服务器。

基于有限的信息,我一般会推荐的是这样的。

服务器/主机循环---生成-----> Room1循环
                             ...............................................--- - > Room2 loop
       .............................................. ---- - > Room3循环

我很确定每个循环都需要fps,并且它们必须干净地分成主机循环,你需要玩这个。另外,请查看您的网络库以进行fps处理。

如果您没有使用网络库,我建议您使用一个。

我自己对网络循环有各种各样的想法,最好是让服务器促进两个用户之间的TCP连接,然后在匹配完成后将结果传回服务器。

我想对于来回发送的结果会有安全问题,但有办法解决这个问题。

祝你好运。