无缝超大规模虚拟游戏世界平台的制作方法

文档序号:6562802阅读:219来源:国知局
专利名称:无缝超大规模虚拟游戏世界平台的制作方法
无缝超大规模虚拟游戏世界平台A、 技术领城本发明涉及到大型多人在线虚拟世界、网络游戏、网络教育、网络金融和网络商务等相关网络虚拟开发技 术。B、 背豕拔术目前主S^型网络游戏盼游鹏郷是由多块相互3拉的子世界(Zone)构成。这一g^早由Everi)uest采用,后 ^^Sony进一步完對吏得多个jfeM界的实例(Shard)可以运行在同一^Sfl艮务器上以g5Pf大量的并发用户。由 于服务翻理旨幼的限制, 一个iS Xfeffl:界的实例,通常会用一舰务器来共同服务,每台服务器服务8MK界的-个 T*。以目前的S^水平而言,以45度角的2DJSm为例,^ti!OT:界的实伊HS可以支持2000-4000并发用户。 每一付世界可容纳的并飾户繊鈔。由开世界相互粒,ft^ 世^l似^VH拉的房间,iS^ft不同 子世界间切换需要Jia—醜别的IRJl例如麟门等等。这有两方面的问题第一,对s^卩游戏设计者而言由于子世界的as分割jfi^戏世界的不j^^吏得'3m世界与真实世界相似性降低,游鹏界给人的感觉是"假的"世界,限制了磁^^和微设计的自由度;第二,在具將现中,WE不同子世界间切syt常需要关闭e^粒的驗,并ftaji的魏,在网^ 糊艮务器资源紧张的时候,Sf^ft的fti^常会规,以致于據会掉线,严fi^)微條,有时还^i^M加严重的丢顿&幾备的问题,对运营商誠很大压力。造成该问题的本质是在目前,舰发平台中,i^艮务器集群中的服务器间不膨對亍 协调工作,各自为政。山于单台服务微理會yj柳蹄ij,磁在游5^tit界中漫游时.不可避免的S^艮务器,舰界,如何ihS种離 不影响據的舰條鹏了超大^)t拟JSmtS界的一个必鄉解决的问题。有别愤通分布式i愤,例如大鹏 并行科学计算中的舰同步和指令同步,在游戏中我们还要关注磁的兴鹏(Area of Interest, AOI)以及離 服务MiaJi界时对W^^的影响。?E^种I^下,;tfe^j同步和消息的发布与接^it5)S—个M^的而EjZ、须要 解决的一个问题。其次,当大S!^世界的网络8^营时,往往ffiffi图分成很多片,每片固定錢一个服务器上,当公测时,由于喊 众多,导舰飾需魏對艮多的服务器,收费后,疏数量下滑,这,会产生服务器资源浪费,运营后大量職 可能聚敏某--区域,如剰艮务器管理固魏图片集,将; * 微图8 1 5 的不灵雕,1^3&^部爐而大劁艮务器闲置的后果,i的以规则几ffiw&图片作为麟单位的动^a^算^^m设计人员誠很大的限制。另外'现在网络游湖艮务器群组也^ii存在各功能系^,紧的问题,J&S系统的可伸縮性很差。c,麵審一无缝的跨服务器的超大规模虚拟游戏世界'幼案可以附

图1 P标,游鄉艮务驗群中的相剁路器舰瓶卽路总线以发布者/接競(Pub/Sub)模i爐行 相关信息的交换,并同时ffiffl操作原语进行系统间的协作,共同 :界的支持。^ift^包括高速实时消息 服务总线,游微界动态戈盼算法及实现,娜艮务器间操作原语设计及实现,这S^的合理誠决定了无缝的跨服务器超大规模虚拟游戏世界实现的鲁棒性、灵活性和实用性。其中的创新点包括基于规则的消ma滤及转发机制、规贝鹏动 界划分、月艮务器间实时5ff^移机舰二无缝的跨股务器边界角色迁移该问题,决方案由附图2 ,在+B^的服^is之间的ajx)jttt^"—定^g的動[],就是说图中的灰色区域③由服务器&.和服务器1:_共同处理。也就是说,假Sgi家p最初由xJda,当5^Cp班入ES1以后,他的状态由i和 L"^处理,可以形象的比喻为p在iL上有一个邀i。,一来,i和L就可以把p当作自己的^^iS行相应的 鹏。 当多台服务器同时处理同一玩家时,iS5^状态在相^SR争器上的一致性,特别是多个S^ft服务器边界交 互的ftfeK^问题,附图2.1, 2.2, 2.3, 2.4 ,了两"t^A和B泡艮务l&Ji界的不同,瞎况下的32S 鹏,需要说明的^S些,是由虚拟世界弓像的地图系郷分布5^享内存的内部算法,对ifel^S人员 錢明的。 玩家实际,艮务,理边界时的5!t^K态的实时^以&Sif 包渐点 利用分布式共享内存的思想,借助ifi^来日益成熟的分布5^技术,我们设计并初步实现了利用多台服务 糊理内存但相互"共享"的分布iW^池,该技术可以保iiM^的唯一性,使《雜程得至i胸化,不需要考 虑多服务器间的同步以及分布sWm的管理(创建,状态^"以及清除)。 对職自身、職间、1 机器人间的操作指令的基于娜|』鹏{6^发,比如只读信息附旨令是不会被 转发到其棚艮务器内的影子或复葡淋的。
g实P^BB务^raJa界时的flSS^j"m的指令协议三为娜世靴化的分布錄糊戏对象*案可以如附图3,,具体来讲所有ase^均由分布s(msse^隹护,而不是由处理它的每4具体的服务 棘完成。分布s^mw夕htitt^生命周期"imc力能,例如赠婉健、对象的顿和对象的删除。同时分布S^系S^严格的同步机制,可以将多台服务器对同一^tfiM访问lfW^优化的串行化.以保ffix^的唯H4。以魏一个已经雜的鄉为伊涞讲,当一台服务翻访问j赠时要^aia下的主要步骤1. 向分布sm,申请对^^tm的访问2. 分布式对象系统检测,象的合法性,以及是否有ftfl^艮务器已经获得i^tm的访问如Stt何一个条件 TO合,将返回无效;否贝l树iM^JS行力嫩并返回i^句柄;3. 服务器根据分布iW^系统返回作如下判断如果** 等待一定时间并返回1 (或取消该请求如果拿 到鄉句柄,itfA4)4. 对^!^ia行相幾作,并将魏后)f^回分布5^魏5. 分布iO^象系舰^miS行 ^并腿回结果给相划艮务器对^f^Wf解锁,允许其棚路器对其访问狱效 分布5W^絲的设计和实现中鄉管理和存储的效柳鄉性是一4^a点财W^锁机制的设计是另 - 一个关键点。色渐点 为虚拟世界优化的分布錄享内存加内存中的分布^ga^Jg库 游^^主柳复第i鹏多台服务器间娜同錢的最小化'只有jfeiJ3(^在一1H十勒贞内被改变的属财 会被同步到其棚艮务器的复伟咻内。四游戏世界的划分及管理 世界的动态划分及动态负载分布方案由附图4所示,ilisW服务器负载的实时监控,激门可以掌握游棚艮务器集 群中的负载分布情况,并通知地图划分服务,劍艮务将根据事前制定好的娜腿摘姚图戈盼并通知和协调服务器集群进行负载的重新分布。负载的重Jf分布分为发散和集中两类型,发散的算法的总ftj^鹏用下面的伪代码给出//first try to distribute to neighbors leftLoad = DistributeToNeighbors(GSi, targetLoad); v^iile (leftLoad <= targetLoad) {//Find a new lightly loaded candidate GSj = FindUnvisitedLightestServer(); if (not found) return; //No more resources //Distribute to lightest loaded game server PartitionGraph(GSi, GSj, targetLoad);其中附图5的划分机制是将^图戈i份成两个或多个具W3giSS的子图,^ftS的和应鹏可t^e划分目标。 附图5.1描述了地图 的 ^帝1臓程,自"^的^* 5#完善的回退步骤以保证 14界信息的一致性仓噺点 系统实时监控并E^获得的监控信息进行相关性处理B^得服务^群的真实负载分布 高效的^tt界的动态划分与融合算法SpreadLoad (GSi, targetLoad)DistributeToNeighbors(GSi, targetLoad):while (GSi leftLoad 〉 targetLoad and neighbor unvisited)( GSj = GetLightestLoadedNeighbor(GSi): PartitionGraph (GSi, GSj, targetLoad);和完整性。 服务l^^负i^移的实现D、附两说稱附图1:无缝的跨服务器超大规模虚拟游戏世界的解决方案附图2, 2.1, 2.2, 2.3, 2.4:无缝的跨服务器边界角色迁移的解决方案附图3:为虚拟世界优化的分布式共享游戏对象的解决方案附图4:游戏世界的动态划分及动态负载分布方案附图5, 5.1:概要划分机制及搬家,附图6:系统架构附图7: m及周ii^的il^:架构附图8:智能负糊離翻路(ILM)的繊lj她图算法E、具体实ifc力式^gag构如附图6,图中代理服务器(Proxy),游戏服务器(Game Server)都是基于Linux操作系统 并且使用EPoll网络通信技术。基于上述平台的单台网络服务器并发连接能够达到数万个,稳定连接也能 在一万左右。较之于Windows系统的服务器,大大减少服务器数目,极大地节省运营成本。附图7的逻辑 架构图中描述了系统中的关键服务器都可以以群组方式伸縮,如代理服务器群,游戏服务器群,登录服务 器群,数据库缓冲服务器群,和游戏数据服务器群,这样整体系统可以支持数百万人的并发连接和在同- 巨大无缝世界的交互。系统使用代理服务器(Proxy)集群组承担所有客户端(Client)连接,因此系统能够服务的人数只和代 理服务器数目相关,通常可以服务的人数在10万到100万之间。对于网络游戏,这样的人数已经足够成 为超大型游戏世界。代理服务器还在玩家跨服时提供透明路由的功能。游戏服务器(Game Server)用于具体承担游戏世界的逻辑服务,例如玩家移动、战斗、交易、聊天等服 务。游戏服务器从代理服务器接受玩家动作指示,根据游戏设计人员设计的响应逻辑计算结果,再通过代 理服务器返回给玩家,就完成了玩家在游戏中的行为。以玩家聊天实例上述过程。首先玩家在客户端敲入 想要说的话,通过游戏客户端发送到代理服务器,代理服务器将玩家聊天信息发到相应的游戏服务器处理, 游戏服务器过滤玩家聊天信息后,将处理结果以及相应的信息发到代理服务器,再由代理服务器返回玩家, 客户端显示聊天信息。前面说到游戏服务器具体承担游戏逻辑,其中与实现无缝超大规模虚拟游戏世界相关连的概念是图中Map, 系统将世界划分成若干个Map,将所有Map分组,每组由一台游戏服务器托管,也就是说世界增大就可以 使用增加游戏服务器的方式来解决。登录服务器集群(Login Server)和代理服务管理服务器(Proxy Manager Server)提供玩家登录和定位, 以及智能分配两个代理服务器连接(互为备份)给玩家客户端的功能。URS (Universal Resource Server)资源管理服务器提供虚拟世界动态资源的上传、管理和按需下载的功 能。它与客户端配合一起提供支持玩家的最优的虚拟世界安装、浏览和交互的体验。至此,无缝超大规模虚拟游戏世界搭建已经完毕。下面将解决因为玩家跨越游戏服务器引起的服务器之间 的必须信息来往处理。依据M印划分的规则,当玩家发生行为时游戏服务器测知玩家与Map的关系以及相 邻Map的关系,决定1. 玩家位于游戏服务器托管Map的物理边界区域,需要通知相邻服务器创建该玩家的影子(Agent), 使相邻服务器中其他玩家能够看见该玩家,并且能够知道改玩家的行为。这样就使得后面的玩家 跨越服务器的时候,不至于突然看见这个玩家冒出来。因此便能够实现玩家透明跨服。2. 玩家已经跨越服务器,也就是从他原来所在的服务器托管的M印到了相邻的服务器托管的Map。 游戏服务器通知玩家新到的服务器,玩家已经在服务器里面了。这样原来的影子就无缝变成玩家, 而玩家原来所在的服务器的人就变成影子,原服务器里面其他人仍然可以感知这个玩家的行为。 实现玩家透明无缝跨服。关于地图智能划分的概要流程、搬家流程、游戏对象优化同歩的实现算法在前面的发明内容和图示中已详 细描述过。下面描述ILM如何进行监视服务器状态并自动重新划分地图并发出搬家指令的详细流程。一、ILM的配置文件一个虚拟世界的地图被划分成若干个NXN的格子,这些格子是ILM计算的基本单位。 目前虚拟世界中的地图有三种情况1. 普通格子,我们称其为MapUnit2. 不可拆分的若干个组合在一起的格子,我们称其为zone3. 孤岛,也就是不从物理上和大地图相邻的岛 假设一个游戏有两大片地图,两个孤岛,图如附图8.1:zone的概念假设游戏开发者规定1号和5号、7号和11号地图各自组成一个zone,每个Zone都必 须在相同的服务器上。17号、21号、22号以及24号和28号也各自成为一个Zone。 孤岛的概念孤岛就是只能通过传送到达的地图,比如监狱、副本。用配置文件描述上面的图所示的一个4X4的map和一个4X3的map,在加上两个孤岛如下 [mapljMapUnit MapUnitName ZoneID1MapUnitl12MapUnit20MapUnit304MapUnit40MapUnit516MapUnit607MapUnit78MapUnit809MapUnit9010MapUnitlO011MapUnitll212MapUnit12013MapUnit130MapIDServerID14MapUnit140115MapUnit150116MapUnit1601[map2JMapIDMapUnkNameZoneIDMapID17MapUnit173218MapUnit180219MapUnit190220MapUnit200221MapUnit213222MapUnit223223MapUnit230224MapUnit244225MapUnit250226MapUnit26027MapUnit270228MapUnit284[map3]MapDMapUnhNameZoneIDMapID29MapUnit2903[map4]MapIDMapUnigNameZoiieIDMapID30MapUnit3004ZoneID相同的为一个zone,搬家时不可拆分,必须'为0时,意味着该MapUnit自身是一个独立的Zone。 二、ILM的重新划分地图算法ServerIDServerID ServerID一个整体添加或者删除。当MapUnit的ZoneID大体算法需要解决的问题有* 重新划分地图时需要考虑--个zone不能拆分的问题* 因为出现了 zone,所以"桥"的概念由"连接同—服务器管押的两片地图的唯-'MapUnit"变为连接同 —服务器箭—理的两片地图的唯一 Zone",如附图8.2,如果22和23作为一个zone,如果需要把22和23 都要同时搬家,这样子就属于桥搬家,是不允许的。至于如何计算桥,举例,把22, 23从地图列表 中扣除,从17开始相邻拓扑,这个拓扑集合将会越来越大,如果这个拓扑集合把本服务器管理的所 有的地图列表即(17,18,19,20,25,26,27,28)全都包含,那22, 23将会是个桥。*孤岛的迁移应该有--定的优先集,因为孤岛的迁移相对来说比较简单,不需要通过复杂的计算。所以 一个服务器在比较多时应优先考虑把孤岛迁移出去*跨连续地图管理的情况,也就是一个服务器管理了 m叩l的若干个地图片和map2的若干个地图片。 为了保持地图的连续性,我们应该尽量把一片地图划归一组服务器管理,另一片地图划归另一组服务 器管理,在非常有必要的情况下才进行这种迁移,但需要只把一个map边界的地方搬给另外一个m叩 的server组来接受,并且一有机会马上迁移回去,从而避免一片地图被更多的server管辖而造成频繁 跨服。但这时也要考虑边界属于zone的情况。当这种情况发生时,要把迁移了的地图记录一个标志, 并且这些地图的下一次迁移目的服务器必须是原最初搬来的服务器。* 初始化时如何把地图均等划分到各个server上,第一种流程,第一个服务器连接过来的时候,所有地 图全部归它管理,第二个服务器加入的时候也放到空闲服务器列表里,第三个服务器加入的时候也放 到空闲服务器列表里,直到达到需要重新划分地图的条件时再执行划分地图算法。第二种流程,在配置文件里指定哪些地图规哪些服务器管理,这样必定整齐划一,以后的重新划分地 图也是在这样良好的基础上进行管理,但该流程的灵活性差一些。根据虚拟世界的特性可以选用一种 流程。* 当重新划分地图并制定搬家计划时,如果有若干路径都满足条件,应该选择待搬地图和目标服务器连 接更紧凑的那种情况如附图8.3,每个不同颜色背景的MapUnit属不同服务器管理,假设背景淡蓝色的服务器需要被 搬家,10和12都可以搬,但10和左侧的服务器有两条边相接,而12和上边服务器只有一条边相接, 这种情况下我们搬10而不搬12。这时可能也会产生一个问题如果背景为粉红的服务器上有10人,而背景为白色的Server上有 9个人或者8个人时应如何处理呢?虽然搬10从地图上的分布结构更合适些,但10的目标服务器人 数却偏多,为解决此问题引入一个"可容忍差值"的定义。在可容忍差值范围内,尽量保证地图的完 整性。所以同样在选择被搬地图的时候,需要把人数最小的MapUnit以及和其他M叩Unit上人数和最 小人数差值在"可容忍差值"内的所有MapUnit都作为待选MapUnit。* 评估,评估模块利用复合价值函数评估智能划分地图算法的意义迁移方案,函数的输入包括迁移后地 图上的人数、服务器的CPU忙度和网络流量,比如一个地图从Server A搬到Server B的时候,发现 搬完之后不合适,需要重新制定迁移计划。综上所属,ILM重新划分地图算法并产生迁移计划的流程如附图8.4, MLJX衡出哪个地图需要被迁移 的步骤中,优先考虑孤岛的情况,之后在下一步的"搬家后结果可行?"步骤中发现目的服务器加上孤岛 后也需要被迁移,孤岛将不被搬走。
权利要求
1. 一种基于互联网通用协议,用于开发超大规模虚拟现实世界、游戏世界的中间件。
2. —种用于实现权利要求i所述的集群基本软件模型,其特征是游湖艮务^^群中的相划艮务器aa消息服 务总线以发布者/接受者(Pub/Sub)模式进行相^ft息的交换,并同时i柳操作原语进行系统间的协作,共同 ^ t游舰界的支持。
3. —种用于实i贴又利要求2戶腿的技术,辦征是高速实附肖息服务总线。
4. 一种用于实i贼利要求2戶腿的算法以及实现,^JT征是游舰界动态划分。
5. —种用于实iJW又利要求2戶M的设计及实现,,征5iftffW艮务器之间的系统tM乍可以ffiffl原语。
6. —种用于实现权利要求1所述的无缝的跨服务器边界角色迁移系统,其特征是a) 多台服务器处理同一个角色,该玩家状态在相关服务器上能够一致。b) 旨实际,艮务 界时,) Wtl汰态的倉辦实时转移和MI开。
7. —种用亍实现权利要求1所述的分布式共享对象系统,其特征是所有游戏对象都由分布式对象系统来 维护。分布式对象系统对外提供对象声明周期管理,提供对象的同步控制机制,提供分布式轻量级分 布式数据库;并优化了对象的同步,使得同步的数量最小化。
8. —种用于实现权利要求1所述的世界划分系统,其特征a) 高效的游戏世界的动态划分与融合算法。b) 集群内负载转移。
9. 一种用于实现权利要求1所述的架构设计,其特征是使用登录服务器组承担登录任务、使用游戏服务 器集群承担逻辑计算、使用代理服务器承担客户端与游戏服务器网络消息转发的任务、使用URS(Universal Resource Server)服务器承担实时客户端资源下载的任务。
全文摘要
由于服务器处理能力的限制,一个游戏世界的实例,通常会用一组服务器来共同服务,每台服务器服务游戏世界的个子集。每一个子世界可容纳的并发用户数非常少。由于单台服务器处理能力的限制,玩家在游戏世界中漫游时,不可避免的要跨越服务器的物理边界,如何让这种跨越不影响玩家的游戏体验就成了超大规模连续游戏世界的一个必须要解决的问题。同时,在游戏中我们还要关注玩家的兴趣域(Area of Interest,AOI)以及跨越服务器物理边界时对相关玩家的影响。在这种前提下,状态的同步和消息的发布与接受就变成一个复杂的而且必须要解决的一个问题。其次,当大规模世界的网络游戏运营时,往往把地图分成很多片,每片固定在某一个服务器上,当公测时,由于玩家众多,导致运营商需要准备很多的服务器,收费后,玩家数量下滑,这时就会产生服务器资源浪费,运营后大量玩家可能聚集在某一区域,如果服务器管理固定地图片集,将带来进行地图重新调整分配的不灵活性,最终造成局部过载而大量服务器闲置的后果,一般的以规则几何形状地图片作为搬家单位的动态搬家算法会给游戏设计人员造成很大的限制。另外,现在网络游戏服务器群组也普遍存在各功能系统关联过紧的问题,造成系统的可伸缩性很差。本发明正是为解决上述提到的问题而设计开发的。
文档编号G06F19/00GK101266633SQ20061014502
公开日2008年9月17日 申请日期2006年11月29日 优先权日2006年11月29日
发明者蓬 叶 申请人:优万科技(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1