gpt4 book ai didi

c++ - 游戏引擎设计 : Multiplayer and listen servers

转载 作者:行者123 更新时间:2023-12-02 02:41:51 25 4
gpt4 key购买 nike

我的游戏引擎现在由一个有效的单人游戏部分组成。我现在开始考虑如何进行多人游戏部分。

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

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

  • 监听服务器模型在游戏行业中使用的频率如何?
  • 它的(缺点)优点是什么?
  • 我还有什么其他选择?
  • 最佳答案

    我会看看我是否能尽我所能回答这个问题:

    How often is the listen-server model used in the gaming industry?



    对于大多数在线游戏,您会发现大部分游戏都使用客户端-服务器架构,尽管并非总是如您所想。以任何 Source 游戏为例。大多数将使用具有主服务器架构的标准客户端-服务器(列出可用游戏),其中一个人将托管一个专用服务器,任何拥有客户端的人都可以加入它。

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

    当然,最大的客户端-服务器模型是 MMO 模型,其中一个或多个服务器运行一个处理几乎所有数据和逻辑的持久世界。使用这种模型的一些比较著名的游戏是魔兽世界、永恒任务等等。

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

    What are the (dis)advantages of it?



    首先是: 性能 .在客户端-服务器模型中,客户端将在游戏的每个循环中处理本地更改(例如输入、图形、声音等)。在循环结束时,它会打包相关数据(例如,玩家移动了吗?如果移动了,去哪里?他/她现在在看哪里?速度?他们是否射击了?如果移动了,子弹的信息。等)并将其发送到服务器进行处理。服务器将获取这些数据并确定是否每件事都有效,例如,用户是否以指示黑客的方式移动(稍后会详细介绍),移动是否有效(有任何阻碍?),是否来自玩家的子弹1 击中玩家 2?等等。然后服务器将其打包,并将其发送给客户端,客户端随后会更新任何必要的信息,例如如果玩家被击中则调整健康状况,如果确定玩家在进行黑客攻击则踢玩家等。

    然而,监听服务器必须同时处理所有这些。因为我假设您熟悉编程,所以您可能意识到游戏可以从计算机中夺走多少能量,尤其是设计不佳的计算机。添加网络处理、安全处理等以及客户端的游戏,您可以看到性能会受到严重影响的地方,至少就标准处理而言。此外,大多数服务器在快速网络上运行,并且是设计用于承受网络流量的服务器。如果监听服务器的网络很慢,整个游戏都会受到影响。

    第二 安全 ,如前所述,服务器要做的主要事情之一是确定玩家是否在利用游戏。您可能已经将这些视为 Punkbuster、VAC 等。运行这些程序有一套非常复杂的规则,例如,确定黑客与优秀玩家之间的区别。如果你不能捕获黑客,这对你的游戏来说是非常糟糕的,但如果你对一个被诬告的人采取行动,那就更糟了。

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

    最后, 游戏玩法 .服务器最大的特点是它们是持久的,这意味着即使每个人都离开了,服务器也会继续运行。如果您有一个在夜间没有太多事件的流行服务器,这很有用,人们仍然可以在他们准备好玩时加入,而不必等待它重新上线。

    在监听服务器中,主要缺点是一旦托管监听服务器的客户端离开,游​​戏必须转移到另一个玩家(在某些情况下在游戏中创建一个可以持续几分钟的间歇),或者必须完全结束.这在大型服务器上并不可取,因为主机必须保持在线(浪费服务器中的一个插槽和他/她的计算机能力,这也会减慢游戏速度),或者为每个人结束游戏。

    然而,尽管存在这些问题,监听服务器确实有一些优点。

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

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

    少资源 : 在大多数专用服务器中,具有相同 IP 的用户无法连接到专用服务器(也就是说,客户端必须要么托管服务器,要么玩,他们不能两者兼而有之)。如果客户希望在他/她自己的服务器上玩游戏,他们通常需要第二台机器来托管服务器,或者购买或租用专用服务器,以便他们可以实际玩游戏。监听服务器只需要一台机器,这可能是客户端唯一可以使用的东西。

    无论哪种情况,两者都有优点和缺点,您需要权衡它们与您愿意设计和实现的内容。根据我的经验,我相信如果你要实现一个监听服务器,它会被使用,如果只是为了一些希望和 friend 一起玩或测试设置的用户。

    最后:

    What other options do I have?



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

    如果我没有回答你的问题,或者你需要扩展一些东西,请告诉我,我会看看我能做些什么。

    关于c++ - 游戏引擎设计 : Multiplayer and listen servers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5133021/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com