由于很多人对当前的服务器容量问题感到沮丧和困惑,我想我应该提供一个解释并帮助解决一些误解。 免责声明:我不为 Arrowhead 或 Sony 工作,也没有特殊的内部知识,但我是一名软件开发人员,对问题有一定的知识。
首先,我提一下问的最多的问题:为什么他们不能购买更多服务器? 有目共睹的,他们已经赚了足够的钱,或者索尼也会帮助他们,包括微软 Azure/亚马逊 AWS (服务器供应商)。他们可以在几分钟内为开发商提供所需数量的服务器。
从行业角度来看,有两种类型的扩展。 垂直(vertical)和水平(horizontal)。 垂直扩展是指获取更强大的服务器或投入更多服务器资源来解决问题。 水平扩展是指您获得更多服务器。 并非每个系统都可以轻松地在两个方向上扩展。 周一,Arrowhead 将服务器容量从 25 万增加到 36 万。 这是垂直典型的垂直扩展。 不幸的是,垂直扩展只能到这为止。 CPU 的运行速度有限,您只能获得有限的内核,并且服务器中只能容纳有限的 RAM(内存)。
好的,那么解决方案是水平扩展并获得更多服务器,对吧? 是的,但不完全是。 对于处理玩家连接的服务器来说,它需要拥有有关游戏世界的所有最新数据。 如果您添加更多服务器,您需要某种方法来使它们保持同步(稍后会详细介绍)。
“Palworld 可以,为什么 Helldivers 不行呢?” Palworld 的需求与Helldivers不同。 每个服务器都运行一个完全独立的世界。 他们不需要串联彼此或保持同步,因此他们只需投入更多服务器就可以有效地无限扩展他们的游戏(只要他们不想增加每台服务器的玩家数量)。 而回到《Helldivers》,我们所有人都在同一个游戏世界中玩。 这是游戏的核心机制。
我们还可以从开发人员最近的一条推文中获得一些见解,其中提到他们的数据库正在努力处理负载。 这就说得通了。 数据库为应用程序存储数据,它们很容易垂直扩展,但水平扩展就没那么容易了。 传统上来讲,数据库是拥有强大硬件的大型服务器的主要用途之一。 数据库也可以水平扩展,但需要更精细。 考虑到我们的数据库需要保持所有数据同步,以便所有玩家都可以在同一个游戏世界中玩游戏。 如果该数据每 30 分钟更新一次,但每秒请求数百万次,那么将该数据复制到我们需要处理所有这些请求的尽可能多的服务器将非常简单。 这就是像 Reddit(贴吧) 这样的服务能够轻松扩展以处理如此大规模用户的原因。 他们的数据库只需要在最终阶段保持同步(这当中当然有许多精细的代码已经内容,并且涉及大量的工程,在此我们暂时忽略)。 但游戏服务器不同,游戏数据需要不断更新,服务器请求可能成倍增长。 所有的请求不仅需要最新数据,还需要越快越好的获得该数据,否则游戏可能会出现问题。 在像 reddit 这样的服务上,这可能只是意味着页面加载需要更长的时间,或者用户可能必须刷新页面才能看到最新的帖子。 对于游戏来说,这可能意味着您无法获得奖励或游戏崩溃。 像这样水平扩展数据库要困难得多,如果您只是向其投入更多服务器,那么它们为保持同步而必须完成的工作量可能会导致性能更差。 我个人曾在一个系统上进行开发过,在该系统中,天真地尝试使用更多服务器来扩展数据库会导致查询时间延长近 10 倍。
我忽略了很多细节,但希望它能帮助人们理解为什么当前的问题不容易解决。 这也不是他们可以盲目投入更多人的事情。 两个女人用再短的时间也是生不出孩子的。
最后,我想指出,第一代的 helldivers 历史最高在线有大约 7000人 ,但平均不到 1000 人。如果他们设计的系统能够处理 10 倍于他们前作的玩家,那么玩家数量将达到 7 万人。开发商假设续作有10 倍的增长是相当疯狂的,但他们却更进一步,设计了可容纳25万人的服务器。 不幸的是,全平台可能有 50 万以上的玩家想要在同时游玩。这是令人难以置信的成功,这些数字可能远远超出了开发人员对helldivers 2最疯狂的预想。 (这些数字只是我所听到的。不能 100% 确定它们是否准确,但总体观点是正确的)。
首先,我提一下问的最多的问题:为什么他们不能购买更多服务器? 有目共睹的,他们已经赚了足够的钱,或者索尼也会帮助他们,包括微软 Azure/亚马逊 AWS (服务器供应商)。他们可以在几分钟内为开发商提供所需数量的服务器。
从行业角度来看,有两种类型的扩展。 垂直(vertical)和水平(horizontal)。 垂直扩展是指获取更强大的服务器或投入更多服务器资源来解决问题。 水平扩展是指您获得更多服务器。 并非每个系统都可以轻松地在两个方向上扩展。 周一,Arrowhead 将服务器容量从 25 万增加到 36 万。 这是垂直典型的垂直扩展。 不幸的是,垂直扩展只能到这为止。 CPU 的运行速度有限,您只能获得有限的内核,并且服务器中只能容纳有限的 RAM(内存)。
好的,那么解决方案是水平扩展并获得更多服务器,对吧? 是的,但不完全是。 对于处理玩家连接的服务器来说,它需要拥有有关游戏世界的所有最新数据。 如果您添加更多服务器,您需要某种方法来使它们保持同步(稍后会详细介绍)。
“Palworld 可以,为什么 Helldivers 不行呢?” Palworld 的需求与Helldivers不同。 每个服务器都运行一个完全独立的世界。 他们不需要串联彼此或保持同步,因此他们只需投入更多服务器就可以有效地无限扩展他们的游戏(只要他们不想增加每台服务器的玩家数量)。 而回到《Helldivers》,我们所有人都在同一个游戏世界中玩。 这是游戏的核心机制。
我们还可以从开发人员最近的一条推文中获得一些见解,其中提到他们的数据库正在努力处理负载。 这就说得通了。 数据库为应用程序存储数据,它们很容易垂直扩展,但水平扩展就没那么容易了。 传统上来讲,数据库是拥有强大硬件的大型服务器的主要用途之一。 数据库也可以水平扩展,但需要更精细。 考虑到我们的数据库需要保持所有数据同步,以便所有玩家都可以在同一个游戏世界中玩游戏。 如果该数据每 30 分钟更新一次,但每秒请求数百万次,那么将该数据复制到我们需要处理所有这些请求的尽可能多的服务器将非常简单。 这就是像 Reddit(贴吧) 这样的服务能够轻松扩展以处理如此大规模用户的原因。 他们的数据库只需要在最终阶段保持同步(这当中当然有许多精细的代码已经内容,并且涉及大量的工程,在此我们暂时忽略)。 但游戏服务器不同,游戏数据需要不断更新,服务器请求可能成倍增长。 所有的请求不仅需要最新数据,还需要越快越好的获得该数据,否则游戏可能会出现问题。 在像 reddit 这样的服务上,这可能只是意味着页面加载需要更长的时间,或者用户可能必须刷新页面才能看到最新的帖子。 对于游戏来说,这可能意味着您无法获得奖励或游戏崩溃。 像这样水平扩展数据库要困难得多,如果您只是向其投入更多服务器,那么它们为保持同步而必须完成的工作量可能会导致性能更差。 我个人曾在一个系统上进行开发过,在该系统中,天真地尝试使用更多服务器来扩展数据库会导致查询时间延长近 10 倍。
我忽略了很多细节,但希望它能帮助人们理解为什么当前的问题不容易解决。 这也不是他们可以盲目投入更多人的事情。 两个女人用再短的时间也是生不出孩子的。
最后,我想指出,第一代的 helldivers 历史最高在线有大约 7000人 ,但平均不到 1000 人。如果他们设计的系统能够处理 10 倍于他们前作的玩家,那么玩家数量将达到 7 万人。开发商假设续作有10 倍的增长是相当疯狂的,但他们却更进一步,设计了可容纳25万人的服务器。 不幸的是,全平台可能有 50 万以上的玩家想要在同时游玩。这是令人难以置信的成功,这些数字可能远远超出了开发人员对helldivers 2最疯狂的预想。 (这些数字只是我所听到的。不能 100% 确定它们是否准确,但总体观点是正确的)。