游戏引擎设计:多人和侦听服务器


10

我的游戏引擎现在包括一个有效的单人游戏部分。我现在开始考虑如何做多人游戏部分。

我发现很多游戏实际上没有真正的单人游戏模式,但是当单独玩游戏时,您实际上也在托管本地服务器,并且几乎所有内容都像在多人游戏中一样运行(除了数据包可以通过通过替代路线以获得更好的性能)

我的引擎将需要进行重大重构以适应此模型。将有三种可能的模式:专用客户端,专用服务器和客户端-服务器(侦听模式)

  • 在游戏行业中,监听服务器模型多久使用一次?
  • 它的(缺点)有什么优点?
  • 我还有什么其他选择?

4
第一个问题是无关紧要的。为什么该行业如何运作很重要?他们没有尽一切所能。
共产主义鸭子

Answers:


11

我将看看我是否能最好地回答这个问题:

在游戏行业中,监听服务器模型多久使用一次?

对于大多数在线游戏,您会发现大多数游戏都使用客户端-服务器架构,尽管并不总是以您认为的方式进行。以任何Source游戏为例。大多数将使用具有主服务器架构的标准客户端服务器(列出可用的游戏),因为一个人将托管一台专用服务器,任何有客户端的人都可以加入。

但是,您有一些游戏和服务,例如《 Left 4 Dead》,《英雄联盟》和一些XBox Live游戏,它们采用的方法略有不同。这些都使用带有控制服务器的客户端-服务器体系结构。这里的主要思想是有人创建了一个专用服务器,该服务器不会“运行”任何游戏。控制服务器将创建各种“大厅”,当游戏开始时,控制服务器会将它们添加到队列中,轮到大厅时,它将选择一个匹配的专用服务器(根据位置/速度,可用性,众多因素),并将播放器分配给该服务器。只有这样服务器才能真正“运行”游戏。这是相同的想法,但有所简化,因为客户端不需要“选择”服务器,

当然,最大的客户端-服务器模型是MMO模型,其中一台或多台服务器运行一个持久的世界,可以处理几乎所有数据和逻辑。使用该模型的一些较著名的游戏是《魔兽世界》,《无尽的任务》等。

那么侦听服务器在哪里适合呢?老实说,并不是很好,但是,您仍然会发现许多使用它的游戏。例如,大多数Source游戏都允许创建侦听服务器,许多XBox Live游戏也可以创建(已经有一段时间了,但是我相信Counter Strike和Quake 4以及其他很多游戏都可以)。但总的来说,由于客户机/服务器模型的优势,它们似乎不受欢迎,这使我们进入了下一个观点。

它的(缺点)有什么优点?

首要:性能。在客户端-服务器模型中,客户端将在游戏的每个周期处理本地更改(例如输入,图形,声音等)。在周期结束时,它将打包相关数据(例如,玩家是否移动了?如果是,那么移动了?他/她现在在哪里看?速度?他们射击了吗?如果这样,子弹上的信息。等)并将其发送到服务器进行处理。服务器将获取这些数据并确定每件事是否有效,例如,用户是否以指示黑客入侵的方式移动(稍后再进行说明),该移动是否有效(以任何方式进行?),玩家的子弹是否发动了? 1个命中玩家2 ?,还有更多。然后,服务器将其打包,并将其发送给客户端,客户端随后将根据需要进行更新,例如调整玩家是否被枪击时的健康状况,确定玩家正在被黑客踢脚等情况。

但是,侦听服务器必须同时处理所有这一切。由于我假设您熟悉编程,因此您可能意识到游戏可以从计算机中窃取多少功率,尤其是设计较差的游戏。加上网络处理,安全性处理以及客户端的游戏,您至少可以看到标准处理可以看到性能受到严重影响的地方。此外,大多数服务器都在快速网络上运行,并且是设计用于承受网络流量的服务器。如果侦听服务器的网络速度很慢,则整个游戏将受到影响。

如前所述,第二安全性是服务器要做的主要事情之一,就是确定玩家是否在利用游戏。您可能已经将它们视为Punkbuster,VAC等。运行这些程序的规则非常复杂,例如,确定黑客与出色玩家之间的区别。如果您无法捉住黑客,那将对您的游戏非常不利,但是如果您对一个被错误指控的黑客采取行动,那将更加糟糕。

侦听服务器通常将无法处理客户端的游戏,服务器处理和黑客检测,并且在大多数情况下,像Punkbuster这样的检测器很难(即使不是不可能)在侦听服务器上运行,因为很难在没有必要的处理能力的情况下正确运行,因为通常游戏逻辑优先于安全性,并且如果不允许检测器处理一帧,则可能会丢失定罪某人所需的数据。

最后,玩法。服务器最大的优点是它们是持久的,这意味着即使每个人离开,服务器也将继续运行。如果您有一个受欢迎的服务器,该服务器在夜间没有太多活动,当人们准备好玩游戏时,他们仍然可以加入,而不必等待将其重新联机,这很有用。

在侦听服务器中,主要缺点是托管侦听服务器的客户端一旦离开,就必须将游戏转移到另一位玩家(在游戏中创建可能持续几分钟的游戏),或者必须完全结束。这在大型服务器上不是可取的,因为主机必须保持在线状态(浪费服务器上的插槽,以及他/她的计算机功能,这也可能减慢游戏速度),或者让所有人结束游戏。

但是,尽管存在这些问题,侦听服务器仍具有一些优势。

易于设置:大多数监听服务器仅是点击“新游戏”并让人们加入。对于只想和他们的朋友一起玩,而又不想尝试寻找空的专用服务器或与其他人一起玩的人们来说,这很容易。

适合测试:如果您拥有一台专用服务器并希望更改其配置,通常最好进行测试首先配置。用户要么必须创建专用服务器的备份,然后盲目地进行更改,否则唯一的选择是在出现问题时回滚,创建新的专用服务器以对其进行测试,或者仅创建简单的侦听服务器以进行更改。测试他们。在第1点中,这些通常更易于启动和配置。尤其如此,因为大多数专用服务器不在管理员的直接访问权限内(大多数专用服务器是从远程位置租用的)。与管理员当前使用的计算机相比,将配置更改以及用于重新启动的命令等推送到远程位置所花费的时间要长得多。

更少的资源:在大多数专用服务器中,具有相同IP的用户无法连接到专用服务器(这意味着客户端必须托管该服务器,或者播放该客户端,而他们不能两者都做)。如果客户希望在自己的服务器上玩游戏,他们通常将需要第二台计算机来托管服务器,或者购买或租用专用服务器,以便他们可以实际在其上玩游戏。侦听服务器仅需要一台机器,这可能是客户端可以使用的唯一东西。

无论哪种情况,两者都有优点和缺点,您需要权衡它们愿意设计和实现的内容。根据我的经验,我相信,如果您要实现一个监听服务器,那么它就会被使用,而对于其他一些希望与朋友一起玩耍或测试设置的用户来说,它只会有用。

最后:

我还有什么其他选择?

这是蠕虫的工业罐头。实际上,任何类型的网络体系结构都可以应用于视频游戏。但是,据我所见,就像大多数Internet通信一样,大多数归结为某种形式的客户端-服务器模型。

如果我没有回答您的问题,或者您需要扩展某些内容,请让我知道,我会尽力而为。


“在大多数专用服务器中,具有相同IP的用户无法连接到专用服务器(这意味着客户端必须托管该服务器,或者播放它们不能同时进行这两项操作)。” WAT?哪里?为什么?如果某些服务器显然具有这种毫无意义的任意限制,这并不意味着他在一个...
o0'

这是旧游戏的产物,当时计算机无法同时处理服务器算法,图形计算和游戏逻辑。许多专用服务器模型会阻止尝试从同一台计算机进行连接的客户端成功连接,这种做法在当今的某些游戏中仍然存在。我从来没有说过这适用于所有模型,也没有说过他必须按照特定的范例来建模。但是,从技术上讲,允许相同主机的连接会破坏专用服务器的目的,唯一的好处是在断开连接时使服务器保持活动状态。
shmeeps
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.