首页> 中国专利> 一种无缝世界游戏服务器系统

一种无缝世界游戏服务器系统

摘要

本发明公开了一种无缝世界游戏服务器系统,包括客户端、远程控制服务器、代理服务器、登陆服务器、节点服务器以及世界管理服务器,其中:所述远程控制服务器用于管理代理服务器的启动时机;所述代理服务器用于处理与所有客户端之间的通信,并将所述通信转发给系统中的其它服务器;所述登陆服务器用于验证客户端的登陆;所述节点服务器用于管理无缝世界中的一个区段;所述世界管理服务器用于将无缝世界划分成不同的管理区段,并将所述不同的管理区段分配给不同的节点服务器。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-03-31

    授权

    授权

  • 2017-03-22

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20160715

    实质审查的生效

  • 2017-02-22

    公开

    公开

说明书

技术领域

本发明涉及计算机领域,特别涉及一种无缝世界游戏服务器系统。

背景技术

大多数大型多人在线角色扮演游戏都需要大世界场景的支持,但传统的游戏服务器,不支持无缝的大世界场景,一个物理上本来无缝的大世界场景因为服务器设计限制被人为分割成一个个逻辑的场景,玩家在不同场景之间移动时要载入画面等机制等待加载场景、角色等。严重影响了玩家的代入感与游戏体验。也给关卡设计师的设计增加了难度与工作量。

发明内容

本发明的目的在于克服现有技术问题的缺陷,提供一种无缝世界游戏服务器系统,以达到大大缩短游戏服务器的开发周期,增强游戏的体验和表现。

根据本发明,提供一种无缝世界游戏服务器系统,包括客户端、远程控制服务器、代理服务器、登陆服务器、节点服务器以及世界管理服务器,其中:

所述远程控制服务器用于管理代理服务器的启动时机;

所述代理服务器用于处理与所有客户端之间的通信,并将所述通信转发给系统中的其它服务器;

所述登陆服务器用于验证客户端的登陆;

所述节点服务器用于管理无缝世界中的一个区段;

所述世界管理服务器用于将无缝世界划分成不同的管理区段,并将所述不同的管理区段分配给不同的节点服务器。

优选地,所述系统还包括一数据库,用于存储玩家的信息。

优选地,所述数据库包括SQL、Oracle以及SQLServer。

优选地,当满足启动条件后,所述远程控制服务器发送一个包含上线命令的数据包给代理服务器,以开始接受客户端的连接请求。

优选地,所述启动条件包括确定登陆服务器启动以及世界管理服务器已经将不同的管理区段分配给不同的节点服务器。

优选地,所述代理服务器包括IO完全端口,以实现服务多个并发的客户端连接。

优选地,所述客户端连接使用数组进行维护。

优选地,还包括主控的重定向器,所述客户端连接至所述重定向器,所述重定向器根据当前负载以及从客户端的延迟来确定客户端使用的代理服务器。

优选地,所述登陆服务器接收代理服务器转发过来的未知客户端的连接请求,一旦通过验证,所述登录服务器就会通知客户出生点的代理服务器和处理出生位置的节点服务器。

优选地,所述世界管理服务器还用于回复来自登陆服务器以及节点服务器的请求。

本发明的有益效果是:

本发明针对目前游戏服务器系统存在的缺陷,提供了一种无缝世界游戏服务器系统,所述系统为高性能、可伸缩、轻量级游戏服务器系统,解决了目前游戏服务器开发中的难点,使得游戏服务器的开发变得简单,并且具有如下优势:

1、大大增强游戏的表现力和玩家体验,一个无缝世界中的玩家可以自由尽兴地漫步、探险和游历,在“区域”之间没有物理屏障阻碍玩家的旅行,而且在区域间转移的时候没有载入画面,在无缝的世界中,设计师不再需要在区域边界之间放迷宫,而且限制很少,他们的想象可以自由驰骋,无缝世界有利于任何游戏类型,因为它是服务器的核心,游戏特定的世界可以存在于它的上层,MMORPG游戏会受益于一个玩家可以游历的巨大的、连续的世界,而FPS游戏可以让世界延展到辽阔的地形中,去掉物理区域极大地推动了玩家在游戏中的沉浸感;

2、开发模型快速、易上手,基于约定优先于配置的原则,让代码达到最大的简化;

3、架构的可伸缩性和可扩展性好,本发明的技术方案在服务器扩展和应用扩展上非常方便;

4、轻量级,虽然是分布式架构,但启动非常迅速,占用资源少。

附图说明

下面结合附图和实例对本发明作进一步说明:

图1是根据本发明的一种无缝世界游戏服务器系统模块框图。

具体实施方式

参考图1,本发明提供了一种无缝世界游戏服务器系统,包括:客户端、远程控制服务器、代理服务器、登陆服务器、节点服务器以及世界管理服务器,其中,远程控制服务器用于管理代理服务器的启动时机;代理服务器用于处理与所有客户端之间的通信,并将所述通信转发给系统中的其它服务器;登陆服务器用于验证客户端的登陆;节点服务器用于管理无缝世界中的一个区段;世界管理服务器用于将无缝世界划分成不同的管理区段,并将所述不同的管理区段分配给不同的节点服务器。

根据本发明的优选实施例,从一开始,最少有三个服务器:代理服务器、登录服务器和节点服务器。因为节点服务器的数量可以变化,而且不想手工向配置文件中添加东西,所以将使用一个自动注册系统。不同的节点服务器在启动的时候将把它们自己注册到世界管理服务器。这个策略可以随意地改变节点服务器的数量,而不用改变配置文件的任何一行。

根据本发明的优选实施例,使用远程控制服务器来管理代理服务器的启动时机,远程控制服务器让代理服务器等待一个特殊的数据包,包含一个“上线”的命令。这种方式可以精确地控制代理服务器什么时候上线。这个数据包只有在远程控制器的所有条件都达成了之后才会发送。这些条件包括:确定登录服务器启动以及世界管理器把世界区段发给节点服务器等。

远程控制器不仅仅是一个实用的工具,而且是一个调度服务器启动时机的实用工具。避免手工控制代理服务器,那会导致人为错误和其他伴随的东西。

根据本发明的优选实施例,使用代理服务器用于处理与所有客户端之间的通信,并将所述通信转发给系统中的其它服务器。一般来说,为了游戏服务器的安全,并不希望把服务器架构暴露给外部世界。达到这一点的方法是让所有的通信都通过一个代理服务器,让它转发给正确的接收器。这项技术的优点是只有一个对外的入口点,对客户端隐藏了真实的服务器分布。如果需要改变服务器分布、数量或内部协议,可以那么做,客户端会一无所知,因为它们只知道代理。

代理服务器将处理所有客户端和服务器之间到来和发出的数据包,因此处理了大部分流量。代理服务器可以使用IO完全端口(IOCP)来实现,因为它不占用太多资源,并可以服务很多并发的客户连接。

而在实际部署中,可以用多个代理服务器来分担负载。客户端可以连接到一个主控的重定向器,它将根据当前负载和从客户端的延迟(ping时间)告诉客户端应该启用哪个代理服务器。这可以让代理服务器分布在世界中,而对客户端只保持着一个连接点。

当代理服务器收到一个来自未知客户端的连接时,就会把它转发给登录服务器来验证。一旦用户通过了验证,登录服务器就会通知客户出生点的代理服务器和处理出生位置的节点服务器。

客户连接在内部通过一个简单的数组进行维护,这个数组进行从客户端ID到它应该连接到的节点服务器之间的转换。客户端ID是数组的索引,当代理服务器从登录服务器收到验证确认的时候,由它处理客户端ID。代理服务器在启动的时候会分配这个数组,知道它能支持的最大连接数。为了快速管理客户端的连接和断线,它还保存了一个无用连接的列表。为了最小化恶意用户在客户连接的时候做出欺骗的可能性,在它将要连接的节点服务器上保存连接细节。偶尔要检查收到的数据包是否真的来自于合法的客户端。

根据本发明的优选实施例,使用登陆服务器用于验证客户端的登陆。登录服务器负责检查玩家的信息,得到出生点的坐标,找出正确的节点服务器,并把连接切换上去。这通过要求节点服务器处理的那部分世界的世界管理器来完成。登录服务器会处理数据库查找并通知世界管理服务器,因为希望代理服务器尽可能地轻量。

玩家的信息存放在标准的SQL数据库中。为了让实现更加简单,mySQL是一个好的选择,因为它不仅可以处理大量频繁的小请求,而且是免费开源的。实际安装中需要参考其他数据库解决方案,包括Oracle和SQLServer。在产品的环境中,也要考虑在数据库前端有代理/队列服务器,以根据重要性队列化获取/更新。同时可以把数据库存放在内存中。偶尔需要一次性保存物理内存,以在服务器崩溃的情况下有一个数据库的物理拷贝。但是,尽量保持最小化,而且可以在另一个服务器中来完成这件事(使用主从复制)。

根据本发明的优选实施例,使用节点服务器用于管理无缝世界中的一个区段。节点服务器是世界的存放者,是无缝世界中的客户端表现和服务端内存状态之间发生冲突的最终仲裁者。它们执行的是玩家和他周围的交互的健全检查,以使所有东西都保持整洁,而且还给游戏世界中的很多部分带来生命。例如,它将提醒玩家,现在正吹着某个方向的5km/h的风。

因为在线游戏试图让玩家探索一个巨大的开放世界,所以每个节点服务器都会管理一个小区段。由于需要分割游戏世界,传统的划区域在线世界没有表现(至少不在这个数量级)的无缝世界实现就会有不可忽视的复杂开销。玩家和/或NPC之间的交互有了新的意义,因为当交互开始的时候,它们现在可以在两个不同的服务器上。这会导致各种各样的行为,当在设计让玩家获取/交换/给予“物品”的事务系统的时候,必须非常小心。为了清楚起见,任何可以在玩家或NPC之间交换的会影响游戏的东西,比如物质物品、要求物(物质的或“口头的”),等等,将被放到“物品”类之中。

为了管理跨边界的交互,节点服务器不仅需要管理在它们区段中的世界,而且还需要知道外面的东西,把它叫做边界区域。边界区域略微伸展过两个区段的边界。这个区域,虽然属于其他服务器,也需要让节点服务器告诉它的客户端已经接近该服务器已知区域的边界,即使它已经位于另一个节点服务器管理的部分世界。

为了让同一个对象同时出现在两个服务器上,引入代理对象的概念,它是一个服务端对象,表示在另一个节点服务器上的主控对象的代理。当两个在边界不同边的玩家之间开始一个事务的时候,服务器将在代理对象上执行事务,而不是执行真的位于另一个节点服务器上的副本。

边界区域的最小大小必须至少是玩家认知半径的大小,以避免两个在边界不同边的玩家可能看不到相同的东西,更糟糕的是一个可能看不见另一个,并因此引发问题。如果让边界区域略微大于玩家的认知半径,那在新对象作为代理复制到相邻的节点服务器的时候,将减少视觉弹出的可能性。

根据本发明的优选实施例,使用世界管理服务器用于将无缝世界划分成不同的管理区段,并将所述不同的管理区段分配给不同的节点服务器。当世界管理服务器分发出所有的世界区段之后,它会发一个消息给远程控制服务器,告诉它世界已经分布好了。这能确保在世界的区段还没有被管理,即不可访问之前,就接受玩家的连接。

在带状服务器的设计中,连接到世界管理服务器并申请一片世界的后续请求是被忽略的,因为没有提供备用的节点服务器;同时,世界区段的数量在启动的时候己经知道了,所以当节点服务器连接的时候,它们会立刻被分配一个世界区段。

世界管理服务器的另一个任务是回复来自登录服务器和节点服务器的请求,关于哪个节点服务器处理世界的哪个部分。这对一个玩家从一个会话切换到另一个会话的情况很重要,如果服务器关闭了,就不能保证那个节点服务器会处理那个玩家断线时的那部分世界。它让从手工指定每个节点服务器的世界边界中解放出来,这样就可以自动处理把新的节点服务器引入到的分布式系统之中的情况,不管是因为扩充还是因为一个服务器失效。

根据本发明的优选实施例,本发明的无缝世界游戏服务器系统可以实现动态管理世界区段。

如果一个节点服务器过于拥挤,世界管理服务器会收到一个启动备用处理的请求。在需要的时候,通过改变边界大小或把当前世界区段切分成两个,把另一半交给备用节点服务器,可以减轻服务器的负担。节点服务器支持管理具体的直接传输,而不用通过代理对象的创建(一般与跨节点服务器边界的实体相关)。

让备用节点服务器获取失效的节点服务器的负载可以从硬件错误中恢复,而不会中断服务。如果一个节点服务器监视着硬件消息,它就可以对此起作用。不必因为一个多余的电源关闭,就为了维护而关闭游戏服务,节点服务器可以告诉世界管理服务器它的状态。世界管理器会启动一个备用节点服务器,并把失效的节点服务器所管理的世界区段赋给它。当所有管理实体的传输完成之后,失效的节点服务器就可以安全地移除了。

因为实体传输的绝对大小,需要渐进地去做。如果把实体负载从节点服务器A传输到节点服务器B,在一个操作中完成会很消耗。取而代之的是,通过移动节点服务器边界,并每次只迁移世界区段的一部分,虽然事实上在边界移动的时候大量代理对象将会建立和删除,但是这样的传输更为平滑。

有了动态边界,远程控制服务器也可以作为世界区段的界面,让管理员有能力控制它们确切的布局和大小,可以具体地管理世界的划分。没有了静态划分的限制,管理员就可以在计划游戏的哪个地方会出现大量玩家之前,就修改世界区段的大小。

根据本发明的优选实施例,本发明的无缝世界游戏服务器系统可以实现专用服务器计算AI(Artificial Intelligence,人工智能)。

节点服务器会把AI看作一个普通的客户端,让它们通过专用的端口连接(这个端口用来做服务器之间的通信),因为它们可以看作是“可信任”的客户端。一些与世界交互的双重检查或AI活动的验证可以忽略。AI服务器可以通过其他端口来连接,而不是与外部世界通信的端口。(在一个实际的服务器中,这完全可以考虑使用另一个网卡)只有在连接的时候,当服务器要开始管理AI实体的时候,才会设置“可信任实体”标记。

以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变型或替换均包含在本申请权利要求所限定的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号