我的游戏引擎现在由一个工作的单人部分组成。我现在开始考虑如何做多人游戏部分。
我发现很多游戏其实并没有真正的单人模式,但是当你一个人玩的时候,你实际上也托管了一个本地服务器,几乎所有的东西都像在多人游戏中一样运行(除了可以传递数据包通过替代路线以获得更好的性能)
我的引擎需要进行重大重构以适应这个模型。将有三种可能的模式:专用客户端、专用服务器和客户端-服务器(侦听模式)
- 游戏行业中使用监听服务器模型的频率如何?
- 它有什么(缺点)优点?
- 我还有什么其他选择?
我的游戏引擎现在由一个工作的单人部分组成。我现在开始考虑如何做多人游戏部分。
我发现很多游戏其实并没有真正的单人模式,但是当你一个人玩的时候,你实际上也托管了一个本地服务器,几乎所有的东西都像在多人游戏中一样运行(除了可以传递数据包通过替代路线以获得更好的性能)
我的引擎需要进行重大重构以适应这个模型。将有三种可能的模式:专用客户端、专用服务器和客户端-服务器(侦听模式)
我会看看我是否能尽我所能回答这个问题:
游戏行业中使用监听服务器模型的频率如何?
当谈到大多数在线游戏时,您会发现绝大多数游戏都使用客户端-服务器架构,尽管并不总是像您想象的那样。以任何 Source 游戏为例。大多数将使用具有主服务器架构的标准客户端-服务器(列出可用的游戏),因为一个人将托管一个专用服务器,任何拥有客户端的人都可以加入它。
但是,您有一些游戏和服务,例如 Left 4 Dead、英雄联盟和一些 Xbox Live 游戏,它们采用的方法略有不同。这些都使用带有控制服务器的客户端-服务器架构。这里的主要思想是有人创建了一个不“运行”任何游戏的专用服务器。控制服务器会创建一个“大厅”,当游戏开始时,控制服务器会将它们添加到队列中,当轮到大厅时,它会选择一个匹配的专用服务器(根据位置/速度,可用性,许多因素),并将玩家分配到该服务器。只有这样服务器才能真正“运行”游戏。这是相同的想法,但有点简化,因为客户端不需要“选择”服务器,
当然,最大的客户端-服务器模型是 MMO 模型,其中一个或多个服务器运行一个持久的世界,处理几乎所有的数据和逻辑。使用这种模型的一些比较有名的游戏是魔兽世界、无尽的任务等等。
那么监听服务器在哪里适合呢?老实说,并不是那么好,但是,您仍然会发现很多游戏都在使用它。例如,大多数 Source 游戏都允许创建监听服务器,许多 Xbox Live 游戏都允许创建(已经有一段时间了,但我相信 Counter Strike 以及 Quake 4 和许多其他游戏都允许)。但总的来说,由于客户端-服务器模型的优势,它们似乎不受欢迎,这将我们带到了下一点。
它有什么(缺点)优点?
首先也是最重要的:性能. 在客户端-服务器模型中,客户端将在游戏的每个循环中处理本地更改(例如输入、图形、声音等)。在循环结束时,它会打包相关数据(例如,玩家移动了吗?如果移动了,移动到哪里?他/她现在在看哪里?速度?他们开枪了吗?如果是,关于子弹的信息。等)并将其发送到服务器进行处理。服务器将获取这些数据并确定每件事是否有效,例如,用户是否以指示黑客的方式移动(稍后会详细介绍),移动是否有效(有任何障碍?),是否来自玩家的子弹1 击中玩家 2?等等。然后服务器将其打包,并将其发送给客户端,然后客户端更新任何必要的内容,例如在玩家被击中时调整生命值,如果确定玩家正在入侵,则踢出玩家等。
然而,监听服务器必须同时处理所有这些。由于我假设您熟悉编程,您可能会意识到游戏可以从计算机上夺走多少能量,尤其是设计不佳的游戏。添加网络处理、安全处理等以及客户端游戏,您可以看到性能会受到严重影响的地方,至少就标准处理而言。此外,大多数服务器在快速网络上运行,并且是旨在承受网络流量的服务器。如果监听服务器的网络很慢,整个游戏都会受到影响。
第二个安全性,如前所述,服务器将做的主要事情之一是确定玩家是否正在利用游戏。您可能已经将它们视为 Punkbuster、VAC 等。运行这些程序有一套非常复杂的规则,例如,确定黑客与非常优秀的玩家之间的区别。如果您无法抓到黑客,这对您的游戏将非常不利,但如果您对被诬告的黑客采取行动,则更糟。
监听服务器通常无法处理客户端的游戏、服务器处理和黑客检测,在大多数情况下,像 Punkbuster 这样的检测器很难(如果不是不可能的话)在监听服务器上运行,因为它是如果没有必要的处理能力,它很难正常运行,因为通常游戏逻辑优先于安全性,如果不允许检测器处理一帧,它可能会丢失定罪所需的数据。
最后,游戏性。服务器最大的地方就是它们是持久的,这意味着即使每个人都离开了,服务器也会继续运行。如果您有一个在夜间没有太多活动的流行服务器,这很有用,人们仍然可以在准备好玩时加入,而不必等待它重新上线。
在监听服务器中,主要缺点是一旦托管监听服务器的客户端离开,游戏要么必须转移给另一个玩家(在某些情况下在游戏中创建一个可能持续几分钟的 lul),要么必须完全结束. 这在大型服务器上并不可取,因为主机必须保持在线(浪费服务器中的一个插槽,以及他/她的计算机能力,这也会减慢游戏速度),或者为所有人结束游戏。
然而,尽管存在这些问题,监听服务器确实有一些优势。
易于设置:大多数监听服务器只不过是点击“新游戏”并让人们加入。对于只想和朋友一起玩,又不想找空的专用服务器或与其他人一起玩的人来说,这很容易。
适合测试:如果一个人拥有一台专用服务器并希望更改其配置,那么测试通常是一个更好的主意先说配置。用户要么必须创建专用服务器的备份并盲目地进行更改,唯一的选择是在出现问题时回滚,创建一个新的专用服务器来测试它们,或者只创建一个简单的监听服务器测试它们。在第 1 点中,这些通常更容易启动和配置。尤其如此,因为大多数专用服务器不在管理员的直接访问范围内(大多数专用服务器是从远程位置租用的)。与管理员当前所在的机器相比,将配置更改以及重启命令等推送到远程位置需要更长的时间。
资源较少:在大多数专用服务器中,具有相同 IP 的用户无法连接到专用服务器(这意味着,客户端必须托管服务器,或者玩,他们不能同时做这两者)。如果客户希望在他/她自己的服务器上玩,他们通常需要第二台机器来托管服务器,或者购买或租用专用服务器以便他们可以在上面玩。一个监听服务器只需要一台机器,这可能是客户端唯一可以使用的东西。
无论哪种情况,都有优点和缺点,你需要用你愿意设计和实现的东西来权衡它们。根据我的经验,我相信如果你要实现一个监听服务器,它会被使用,如果只是为了一些希望与朋友一起玩耍或测试设置的用户。
最后:
我还有什么其他选择?
这是一罐工业蠕虫。实际上,任何类型的网络架构都可以应用于视频游戏。然而,据我所见,就像大多数互联网通信一样,大多数都归结为某种形式的客户端-服务器模型。
如果我没有回答您的问题,或者您需要扩展的内容,请告诉我,我会看看我能做些什么。