Answers:
“保留在单个游戏世界中”的MMO术语是单个碎片。 在线EVE是唯一尝试将每个玩家塞入单个碎片的大型MMO。
幸运的是,他们发表了一篇非常有趣的文章,介绍了如何进行。
(来源:gamasutra.com)
坏消息。您一般无法在线应用EVE的技术。他们的解决方案绝对适合其特定类型和实现。
注意:对于EVE Online的所有超级单片网络,它们都使用一个数据库。他们无法为分布式数据库设计可扩展,一致,适度实时的解决方案。
无论哪种方式,阅读它们的工作方式都应该有助于您设计自己的解决方案。但是要当心,您正在尝试解决一个非常困难的问题。
建议不要先分发您的游戏服务器,而是先探索其他途径。
您的第一步应该是将游戏服务器的直接数据库访问分离,并使用针对特定用途的中间件为服务器准备数据(即XML,JSON)。它们将能够处理任何数量的数据库,更重要的是能够为您提供特定于应用程序的缓存选项。高速缓存所有内容,仅在必要时才打开数据库。进行大量访存,很少(而不是许多)小型查询来实现您的方案中的最佳性能。
您选择的数据库还可能允许您操作集群,从而可以轻松扩展可用的数据库资源并更快地提供结果,但这是一个主题,需要很多经验,并且需要专门的数据库管理员来设置和维护-并且也不太适合独立预算。
关于游戏服务器:一种常见的策略是使用多个服务器,其中每个服务器管理游戏世界的一部分。每个用户通常只需要了解周围发生的事情,因此按地区划分世界是有意义的。不幸的是,当您拥有一个没有边界的开放世界,而不是一个由封闭区域和玩家之间传送的世界组成的世界时,情况变得更加复杂。当您拥有开放的世界时,您需要一种无缝地在区域之间转移玩家的方法,以及一种同步服务器之间边界附近区域的方法。那是一个棘手的问题。
关于数据库: SQL数据库通常伸缩性很差。它们不是为分发而设计的。但是目前,NoSQL数据库(例如MongoDB或Cassandra)出现了一个相当新的趋势,该数据库被设计为分布在多个服务器上。通过添加更多服务器,它们使添加容量变得更加容易。那么为什么不将所有大型游戏切换到它们呢?因为:
因此,当您的项目已经非常进展时,切换到另一个数据库解决方案可能会带来很大的风险,并且会花费大量时间和精力。