为什么MMORPG仍然使用多台服务器?


18

MMORPG,一些英雄联盟甚至是《星际争霸2》之类的MOBA通常会迫使您选择服务器。通常,它们是美国,欧盟和东南亚国家/地区(MMORPG),每个地点都有很多。我可以看到几年前这是必须的,但是现在随着AWS和类似产品的问世,它们使您可以无缝地扩展“服务器能力”,为什么还需要单独的服务器?

我的思路是这样的(以《星球大战:旧共和国》为例):-您始终处在一个星球上,与其他星球是孤立的“实例”。-如果一个星球上的人数过多,SW:TOR会创建一个新的世界实例,并将玩家放置在那里。-如果您离开世界/切换实例,则会显示一个加载屏幕

那么,为什么游戏不能为这个星球创建一个实例。这个执行个体(只有这个执行个体)在您的资料库中拥有您目前的资料,并管理x个播放器。x-50播放器进入该实例后,将启动一台新服务器,并在该实例上生成新的人员。保留50个位置以切换到您的组等。

在所有三个主要区域都可能有一个实例来将等待时间保持在较低的水平,但是如果您可以忍受140ms的延迟,那它将允许您仍然与SEA等其他玩家一起玩(这仍然没什么大不了的)。

无论何时切换实例或前往另一个世界,当前服务器都会将所有数据提供给下一台服务器,从而确保您不需要一个大型的集中式数据库。您仍然可以定期获取更新以进行分析。

当您注销或服务器失去连接时,然后可以将数据传输到针对存储数据进行了优化的海量数据库中。然后可以优化实例服务器以实现高吞吐量。

是否有任何特定原因无法解决?我还有其他问题吗?


那么,其中许多游戏都必须重写其引擎中的大部分内容以支持这一事实,该怎么办?花费更多的时间和金钱可以增加更多的内容。
Xavon_Wrentaile '16

我不建议更改现有游戏,而是建议为什么从一开始就选择设计。
mmlac

Answers:


12

MMORPG,一些英雄联盟甚至是《星际争霸2》之类的MOBA通常会迫使您选择服务器。通常,它们是美国,欧盟和东南亚国家/地区(MMORPG),每个地点都有很多。我可以看到几年前这是必须的,但是现在随着AWS和类似产品的问世,它们使您可以无缝地扩展“服务器能力”,为什么还需要单独的服务器?

AWS似乎没有那么明显的解决方案。它的成本可能很高,在某些情况下可能比使用内部数据中心要高(例如,对于发布者,这些成本可能在多种产品中摊销)。另外,可能会担心在个人控制范围之外存储敏感的二进制文件和日志。最后,实际的计算能力并不总是在MMO中​​分离“服务器”群体的原因。

我的思路是这样的(以《星球大战:旧共和国》为例):-您始终处在一个星球上,与其他星球是孤立的“实例”。-如果一个星球上的人数过多,SW:TOR会创建一个新的世界实例,并将玩家放置在那里。-如果您离开世界/切换实例,则会显示一个加载屏幕

实际上,《激战2》所做的事情与此非常相似。映射是由单个服务器进程模拟的,并根据映射人口上限和一些启发式性能根据需要创建溢出实例。

激战2有两个主要的数据中心,一个在美国,一个在欧洲-这些数据中心之间存在交叉交叉(主要用于贸易邮递和商务系统),但是总的来说,它们存在于这种配置中,因此参与者德国,法国等不会对美国游戏服务器造成更高的延迟。在数据中心内,玩家被分类为“家庭世界”(或用“乡土语言”分类);但是这样做的原因之一是最大程度地减少了客户可以看到并需要向其报告的玩家数量。扩展到更多服务器硬件将无法解决该问题的客户端方面。服务器端其他报告路径的组合爆炸可能是:

是否有任何特定原因无法解决?我还有其他问题吗?

您遗漏了很多东西,但是它们大部分都是细节(由于它们被认为是商业秘密,因此我不会解释我们如何处理它们)与如此高级别的概述类型的问题无关。我认为您的建议中最大的缺陷是,当玩家转移时,试图将玩家数据移交给新服务器。这是一个复杂的问题,无法很好地扩展,实际上将播放器数据存储在服务器的集中式系统上可能更好。如果您不使用这些数据库和主运行时记录存储来存储数据,那将是非常可行的。


@Josh,您是否会说,发行权也是决定为全球不同地区创建和维护独立服务器的重要因素?
Trevor Powell,

我不确定您的意思是什么,您是在谈论将欧盟版本作为不同的SKU进行价格调整(因此也希望使服务器后端保持鲜明性吗?)。

7

主要是关于延迟。

首先,在地理位置上靠近您的服务器可以减少延迟。如果服务器在世界的另一端,那么与服务器仅几步之遥相比,您将看到更多的延迟。

其次,AWS之类的服务并非为实时工作而设计。它们专为高吞吐量而设计,但要花一点时间。如果您的网页一次加载的时间比平时长250毫秒,那么没人在乎,但是如果您的游戏比平时长250毫秒来处理一条消息,则可能严重影响游戏玩法。这就是为什么MMO几乎总是托管在专用硬件上的原因。

但这也与游戏设计有关。如果您使每个人看起来都在同一个世界中,但是当区域变得太满时不得不划分区域,人们会感到沮丧,因为他们无法在指定的聚会地点找到朋友。这类问题将扩展到行会,大规模PvP战斗等。如今,玩家已经习惯了实例化,但是某些区域有望共享。如果您拥有完全独立的服务器,那么至少这里没有什么奇怪的。

最后,还有其他技术问题要考虑。即使每个实例都与其他实例完全隔离,通常仍需要通过它们进行通信的各种服务。跨服务器通信很难在实时软件中很好地完成,并且过去已导致MMO的各种漏洞利用和错误。特别地,将权威的玩家数据从一个传递到另一个是有风险的。因此,开发人员通常会谨慎行事,并且清楚地划分了服务器之间的边界,从而减少了跨服务器的通信量。


“如果您有完全独立的服务器,那么至少这里没有什么奇怪的。” 好吧,那您就不能和朋友一起玩了。在SW:TOR中,它告诉您组长是哪个实例,您可以立即切换到该实例。我(个人)认为这足够了。感谢您的技术见解,这确实有助于我了解当前的问题!
mmlac

1
当然,有些游戏可以让您像这样切换实例,但是对于地牢和任务区域而言,它比在共享会议和社交区域中的效果要好得多。最终,尽管技术问题更加严重。
Kylotan

正如我在对Philipp的评论中所提到的那样,我认为您可以在没有实例的情况下经营首都和主要城市。
mmlac

3

其实我相信答案是不是网络或体系结构相关的,而是游戏相关,通常在这种类型的游戏有事件,而这些事件是根据对谁在服务器上玩的人最舒适的时限超时,这通常是与人们居住的时区有关,因此与欧盟和美国有关。

另一个原因是要在世界之间建立隔离,这样,如果有一个过于强大的团队,他们就不会为每个玩过的人弄乱游戏,而您总是可以进入一个没有“挑战性”的世界。

在服务器CPU能力方面,尽管当今的计算机非常强大,但是一台计算机可以处理的总是存在限制,因此有必要在各个世界之间建立隔离,以防止游戏超载,并让人们选择他们想要的世界。玩耍,以便他们可以和朋友一起玩。水平缩放不仅仅是拥有机器的问题,还需要您的应用程序能够在水平缩放的体系结构中工作,并且当您同时进行成千上万的“动作”并相互影响时,这并不是那么容易。需要同步所有内容。我认为跨多台计算机执行此操作非常困难。


至少在SW:TOR中,仅对您正在使用的当前实例有影响。这意味着您在实例1中被杀死的世界首领在实例2中仍然不会受到伤害/产卵。因此分离已经存在。我可以看到在电源方面使用不同服务器的原因,但是在这种情况下,它们也可以像这样扩展,因此您没有人为限制。时间不应该引起任何关注,因为当地人都会参加当地活动。如果您碰巧在线,为什么不应该允许您加入?它不是为您的时区量身定制的。
mmlac 2013年

我曾经在欧盟时区(在他们创建欧盟服务器之前)在美国服务器上玩《天堂2》,我可以告诉你,这真是个bit子!如果我想参加突袭和城堡围困,我必须在凌晨3点醒来,因为那是全部发生的时间。因此,时间绝对是一个问题。

是的,当您在错误的时区中只有一台服务器时,时间就是一个问题。以我的想法,您在世界各地都有人在线。如果您想参加凌晨3点的突袭,那就继续吧!现在,您是SOL,必须等到“您的”服务器突袭(可能是晚上10点的每个Saturady)启动时,您才没有时间。因此,下午3点去欧盟突袭。那有意义吗?
mmlac 2013年

2

自动实例怎么了?当某个地点的人口过多时,您只需将1000名玩家放入10个不同的实例中即可。

问题在于,网络游戏与社区息息相关。想象一下,您与以前见过的人安排了一次会议,并且在给定时间都在那儿时您不会看到彼此,因为你们都处在不同的情况下?这很烦人,并且破坏了沉浸感。

如何预防?可以通过将每位玩家始终放置在同一实例中来完成操作,这样,当您一次遇到另一位玩家时,可以确保当您在同一位置时再次遇到该玩家。您将永远不会遇到分配给其他实例的那些玩家。

但是,当您想与游戏外的人见面时怎么办?就像您邀请的现实生活中的朋友一起玩游戏吗?为了使这种情况发生,您将需要能够在创建角色时选择实例。就像从易于记忆的名称的实例列表中一样。不幸的是,名称“ instance”似乎使普通用户感到困惑。他们不习惯这个词。使用习惯的术语会更好吗?像... 服务器这样的术语?


1
不要混淆术语实例和服务器。实例允许您在彼此之间切换。服务器通常是原子的。没有进出。与人见面:将每个人放在一个实例中,您的首都将有20.000个人。同时。这既行不通,也不理想,这就是为什么无论如何都必须创建实例。我的思路是使这些实例成为全局实例,而不是仅限于服务器。
mmlac 2013年

但是我认为关键是您通常希望人们在故意共享的区域中拥有可预测的体验。出于性能原因,您必须对它们进行分区,但是应该与“每个人”共享它们,因此理想情况下,您应具有固定的分区(例如服务器)而不是变量(例如实例)。我认识的MMO很少会涉及这种类型的区域,因为出于社区和分组的原因,每个人都可以看到那里的每个人,这被认为很重要。
Kylotan
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.