游戏多人游戏

问题描述 投票:4回答:2

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

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

关于实际问题:

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

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

编辑

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

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

java multiplayer
2个回答
0
投票

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

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

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

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

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

使用SFML验证实时网络上发送的数据包


0
投票

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

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

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

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

我很确定每个循环都需要fps,并且它们必须干净地分成主机循环,你需要玩这个。 还可以浏览一下您的网络库以进行fps处理。

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

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

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

祝好运。

© www.soinside.com 2019 - 2024. All rights reserved.