计算机系统的数据管理的制作方法

文档序号:1619339阅读:186来源:国知局
计算机系统的数据管理的制作方法
【专利摘要】一种计算机系统可将对应于逻辑空间的基准WAD加载至其存储器中,所述逻辑空间与由处理器运行的计算机应用关联。所述基准WAD包含与所述逻辑空间唯一关联的数据。在所述应用运行期间,零个或多个活动相位在所述逻辑空间中发生。相位与所述基准WAD唯一关联。在所述基准WAD中的数据对于所述相位中的每个保持加载。对于每个相位,所述系统加载零个或多个子WAD的不同集至存储器中。每个相位具有不同的对应的零个或多个子wad集。每个子WAD包含与对应的相位关联的数据。所述系统使用在所述基准WAD中的所述数据和在对应于所述给定相位的所述子WAD集中的所述数据来管理给定相位的所述活动。
【专利说明】计算机系统的数据管理
【技术领域】
[0001]本发明的实施方案涉及计算机系统,并且更具体而言涉及计算机系统的数据管理。
【背景技术】
[0002]允许多个用户合作参与的视频游戏近年来已经激增,并且可以在全世界的很多家庭中找到。
[0003]多个玩家的游戏可以使不同的玩家直接针对彼此竞争,诸如在射杀游戏中。多个玩家的游戏还可以使玩家合作以在游戏中实现希望的目标。合作游戏可以包含在战争模拟中的同一组的玩家、在冒险系列中有相同追求的玩家或从事其它刺激的任务的玩家。
[0004]在视频游戏设计中,转换单个玩家的游戏至多个玩家的合作游戏可以很困难,因为单个玩家的内容,诸如关卡和任务,通常在控制台上为单个玩家做出预算。即,在世界的每个空间中(in each room of the world)四处移动的一个玩家几乎占用所有整个中央处理单元(CPU)、存储器和流预算。为了保存记忆,当玩家进入每个空间时从存储器加载每个空间,并且卸载刚离开的空间。所述空间及其特征填满控制台的存储器。
[0005]在多个玩家的游戏中,多个玩家可以在同一时间设想探索不同的空间或关卡。用于控制台的紧张预算已经通过运输有比在非CO-OP游戏中可用细节少的单独的CO-OP任务组的多个玩家合作游戏而解决。遗憾的是较少细节是不希望的,尤其当用户习惯于参与单个玩家版本的视频游戏环境中的化身、非玩家角色、交互对象、背景和其它视频和音频项目的高等级细节时。用于多个玩家游戏的另一种解决方法是栓系(tethering)玩家的使用。
[0006]当将玩家栓系在一起时,一个玩家的机器具有例如在存储器中加载的空间的给定的逻辑空间的数据,并且该玩家的机器控制在该空间中发生的活动。然而,可能不加载其它空间的数据。在此类情况下,其它玩家受限在与那个具有在其机器上加载的空间数据的玩家相同的空间之内。试图移动到不同空间的另一个玩家被终止继续前进直至那个具有在其机器上加载的空间的玩家跟随他。通常,将玩家栓系在一起通过迫使玩家一起移动至每个空间中使得一次仅需要加载和服务一个空间来保存记忆。因此,用于多个玩家游戏的存储器和处理器预算不会显著超出单个玩家版本游戏的预算。遗憾的是常规的玩家栓系具有一个玩家可能想要离开其它玩家正参与游戏的空间的界限的缺点。因此,要找到在多个玩家游戏中不栓系玩家同时不需要用于客户端-服务器(client-server)架构的昂贵的中央服务器的解决方案。
[0007]当前设计视频游戏序列使得在游戏之内的物体以称为WAD的数据包被加载。术语“WAD”是“Where’s All the Data”(所有数据在哪里)数据集的首字母简称。WAD可包括数据,诸如给定游戏关卡的位图、声音和特征。当在游戏中的角色从在游戏之内的逻辑空间序列之内的一个逻辑空间移动至另一个逻辑空间,不加载当前WAD而加载下一 WAD集。因为WAD经由通过关卡的过程来推断而非明确限定,所以如果玩家在事件序列的中间开始,那么很难确定加载哪一个WAD。这使游戏的测试过程更困难,因为测试者仅仅为了测试可能接近序列末端的某个部分而将不得不参与整个序列。在玩家参与序列的一部分的情况下,存在建立哪些WAD的困难,因为存在许多不同类型的WAD,其可以是永久的或可变的。
[0008]由于缺乏存储施加至整个序列的全部变量和脚本的中央“父”(parent)WAD,所以关卡设计更复杂。目前,复杂的边缘情况使脚本发生故障。设计师已经将游戏编程在某些点明显暂停以允许系统检查是否已经加载正确的WAD。在游戏之内的一些物体需要贯穿整个事件序列。目前对于设计师没有简单的方法来确保将不会意外地复位此类物体的状态。在目前技术之下的多个玩家游戏中,根据玩家的位置为每个玩家单独加载WAD集。仍然难以确保为每个玩家加载相同的WAD集。
[0009]在一个现有系统之下,称为关卡标记系统,允许玩家彼此分开和独立移动。该关卡标记系统在2009年11月9日提交的共同分配的美国专利申请号12/614,977中描述,该专利申请的整体内容通过引用并入本文。在该系统之下,玩家可以在任何时段分开,这给予关卡设计相当的自由。该关卡标记系统不可以用于需要玩家之间合作并且仅在特定接合点分开的更有组织的游戏。用目前的WAD设计结构,玩家进入多个玩家游戏中间序列的视频游戏系统不可以确定应该从该中间点加载哪些WAD集,因为如上文所提及的,WAD从参与贯穿序列而推断。
[0010]在该情况下本发明的实施方案应运而生。
【专利附图】

【附图说明】
[0011]图1是图示根据本发明的实施方案的数据管理的方法的流程图。
[0012]图2图示实施本发明的实施方案的客户端-服务器网络架构。
[0013]图3图示实施本发明的实施方案的点对点(peer-to-peer)网络架构。
[0014]图4图示根据实施方案的点对点网络视频游戏控制台。
[0015]图5图示根据实施方案的有在各种位置中和有不同设置的项目的视频游戏显示。
[0016]图6A图示根据实施方案的使用关卡服务器和关卡客户端的多个玩家游戏。
[0017]图6B图示图6A的多个玩家游戏的随后的视图。
[0018]图6C图示图6B的多个玩家游戏的随后的视图。
[0019]图7A图示根据实施方案的使用关卡服务器和关卡客户端的多个玩家游戏。
[0020]图7B图示图7A的多个玩家游戏的随后的视图。
[0021]图7C图示图7B的多个玩家游戏的随后的视图。
[0022]图8A图示根据实施方案的使用关卡服务器和关卡客户端的多个玩家游戏。
[0023]图8B图示图8A的多个玩家游戏的随后的视图。
[0024]图8C图示图8B的多个玩家游戏的随后的视图。25
[0025]图8D图示图8C的多个玩家游戏的随后的视图。
[0026]图8E图示图8D的多个玩家游戏的随后的视图。
[0027]图9图示适用于本发明的实施方案的实例计算机系统。
[0028]现在附图将用于图示根据本发明的不同的实施方案。附图是实施方案的特定实例并且不应该解释为限制性实施方案,而是图示落在本发明的实施方案的范围之内的构成和步骤。【具体实施方式】
[0029]本发明的实施方案给计算机软件设计师提供根据脚本来随着时间改变给定的逻辑空间的方式,使得新WAD可以被加载用于在该逻辑空间中发生的不同的行动,并且然后在那些行动结束时被卸载。类似地,该概念可以用于允许通过加载/卸载对应于逻辑空间的不同部分的WAD来随着时间而调整逻辑空间的几何结构。因此,例如,如果逻辑空间表示竞技场,那么该竞技场的部分可能随着时间被破坏,或该竞技场的新部分可能变得可访问。
[0030]如本文所使用的,术语“逻辑空间”用于限定在计算机系统或计算机系统组上模拟的虚拟环境的一些部分或子部分。“逻辑空间”可被认为表示空间、游戏关卡、区域、部分、分区或其它虚拟区域。
[0031]另外,本发明的实施方案提供用于在给定逻辑空间,例如诸如在战神3(G0W3)中的冥王哈迪斯关卡或在G0W3开始时遇到的海神波塞冬的大的游戏关卡中,以高度线性序列行动处理脚本的方式。这些序列是高度线性的,其中玩家以预定的线性方式从一个遭遇横贯至随后的遭遇并且在该过程中使得玩家的机器必须加载和卸载随着玩家通过所述逻辑空间的对应于不同资产(例如表示艺术作品、敌人、物体、动画、网格、纹理等的数据)的许多WAD。
[0032]为了实施这两个参考案例,除了其它以外,本发明的实施方案使用本文称作“基准WAD”的数据集表示逻辑空间的基本“概念”,和在该逻辑空间中发生的行动过程期间仅在某些点上加载的一个或多个数据子集(本文称作子WAD)。
[0033]基准wad可被认为父WAD。基准WAD总是在给定计算机系统在特定逻辑空间,例如给定游戏关卡中时而加载。在游戏关卡的预测实例中,用于游戏关卡的基准WAD总是在该关卡时而加载,即使加载和卸载其它较小的关卡块(子WAD)。基准WAD可被视作“拥有”子WAD。为了表示在给定逻辑空间内发生的行动的不同阶段上加载的子WAD并且为了提供简单方式来描述为基准WAD加载的子WAD的不同的配置,本文使用术语“相位”。相位可被视作在逻辑空间内发生的行动的特定预定阶段。除了基准WAD以外,可以将具有O或更多“子WAD”的每个相位加载至存储器中。关于应该加载哪个子WAD用于给定相位的所有信息被统计地限定。因此,设计师可以指定由基准WAD表示的逻辑空间的许多不同的配置。再次参照关于在G0W3中的冥王哈迪斯关卡的实例,所有需要传送至后加入的玩家的是通知该玩家的机器加载对应于相关关卡的基准WAD和在该关卡中的当如相位的行动的子WAD。
[0034]本发明的实施方案特别有利于多个计算机系统访问公共逻辑空间的情况,例如在多个玩家的线上游戏中。如果给定计算机系统是用于给定逻辑空间的服务器,那么该系统还应该是用于该空间的任何子部分的服务器。为此,作为用于对应于给定基准WAD的逻辑空间的服务器的系统被自动分配为用于与给定基准WAD关联的所有子WAD的服务器。因此,用于给定基准WAD的服务器的系统总是用于与当前相位关联的任何子WAD的服务器。唯一可以改变相位的系统是用于基准WAD的服务器。
[0035]如果子WAD在给定计算机系统上运行,那么对应的基准WAD总是加载至该系统的存储器中。这使脚本更容易实施。与基准WAD关联的全局变量可以保持公用于给定相位的所有子WAD。用于给定相位的局部变量(例如开关的设置是接通还是断开)可以由该相位的子WAD处理。这确保在玩家分成不同的逻辑空间时,如果他们重聚在相同的逻辑空间中,那么他们将在相同的相位中。基准wad —般可包含可穿过逻辑空间全局访问的变量,而子WAD可包含该子WAD的局部变量。子WAD —般不从其它子WAD读取变量。例如,如果相位100需要知道在相位10中控制杆是否被拉开,全局布尔变量“LevelPulled”将被放入基准WAD。如果不需要在子WAD之外访问(读取)该变量,则其将被代替地放在子WAD中。
[0036]在本发明的实施方案中,当卸载子WAD时,与该子WAD关联的局部变量的最近设置可被存储或可复位至初始值,这取决于局部变量的相关度。例如,在一些游戏模式,诸如玩家横贯线性关卡的co-op中,可存储关卡的状态。在其它游戏模式,诸如在竞技场中的竞争比赛中,相位可仅仅用于再配置竞技场空间并且子WAD的先前状态可不相关。在此类情况下,子WAD的状态在卸载时可能不被存储。
[0037]基准WAD可被认为是数据集合,其限定给定逻辑空间并且将所述给定逻辑空间从在诸如游戏应用的计算机程序应用的环境之内的其它逻辑空间区分开。例如,在具有多个关卡的游戏程序的情况下,不同的基准WAD可与每个不同的关卡关联。随着用于该关卡的相位继续进行,可以将与当前相位关联的子WAD加载至存储器中。这避免了存储器的无效使用,例如如果将给定关卡的所有敌人同时加载至存储器可能导致的。
[0038]在本发明的实施方案中,给定玩家的机器可以具有对应于加载至其存储器中的多个逻辑空间的多个基准WAD,但是机器逻辑上一次仅在一个此类逻辑空间中。机器可被视作“在逻辑空间中”,如果在用于该空间的基准WAD中的脚本确定与该机器关联的玩家角色发生了什么。通过实例的方式,仅存在一个服务器机器每基准WAD,但是多个玩家逻辑上可“在相同的基准WAD中”。为此描述的另一种方式是玩家一次可仅由一个基准WAD “拥有”。例如,如果玩家角色死亡,那么撰写在当前基准WAD中的角色的脚本是决定如何再刷出该玩家。用于给定逻辑空间的相位可以由耦接至该机器的多个机器跟踪。在给定逻辑空间中的每个机器具有与控制该逻辑空间的机器,本文有时称为控制机器而本文有时称为“基准WAD的服务器”相同的相位。基准WAD由控制机器设置。子WAD可以加载至不同于控制机器的机器的存储器中并且由那些其它的机器使用。此类其它机器本文一般称为“非控制机器”并且有时还称为基准WAD的“客户端”。非控制机器可以访问逻辑空间意味着他们可以与由基准WAD和子WAD中的数据限定的资产交互,但是非控制机器不可以控制逻辑空间的相位的改变。
[0039]在本发明的实施方案中,只有控制机器控制相位的改变和加载子WAD。如果用于给定逻辑空间的基准WAD从控制机器的存储器卸载,那么程序可以记住基准WAD的最近状态包括该逻辑空间的相位。然而,用于逻辑空间的相位不可以没有加载对应的基准WAD而设置。
[0040]在一些实施方案中,加载基准WAD的命令可以被配置成“请求”与基准WAD —起加载的初始相位。例如,加载命令可被配置为加载“BaseWad:10”以请求在相位10中加载基准WAD。此类能力在返回至先前加载的基准WAD时可以是有利的,但是在该情况下希望确保基准WAD加载至特定相位中。例如,许多游戏包括多次返回的所谓的“集线器”等级。此类实施使得在关卡已经加载时仅基准WAD的服务器可以设置基准WAD相位。然而,如果机器加载基准WAD (或请求将其加载),那么该机器可以请求初始加载用于基准WAD的相位,并且如果该机器由于加载的结果变成基准WAD的服务器,那么该机器在所请求的相位中加载基准WAD,无论基准WAD最近被加载时所在的相位。如果在加载时没有请求特定相位,那么基准WAD默认被加载至基准WAD最近被加载的相位中。[0041]在本发明的实施方案中,游戏可通过在命令行上或从用户界面(UI)壳指定初始基准WAD来开始。用于指定初始基准WAD的脚本可包括两个命令,本文称为SetPhase和SetLevelWads。SetPhase命令调整当前基准WAD的相位。SetLevelWads可以用于调整在存储器中加载的基准WAD集。当一个或多个玩家进入触发体积时可触发这些命令,例如当玩家达到在由基准WAD A控制的逻辑空间与由基准WAD B控制的另一个逻辑空间之间的交叉点时可能触发加载基准WAD A和基准WAD B至存储器中的命令,然后一旦通过阈值,可能从存储器完全放弃基准WAD A0
[0042]用于给定逻辑空间的控制机器(例如基准WAD的服务器)可以例如经由计算机或电信网络来管理用于其自身的逻辑空间以及与其通信的其它非控制机器。例如,控制机器可以产生Al (游戏人工智能生物)并且指导Al攻击玩家中的一个。Al的移动,包括模拟真实人工智能的伪随机的、复杂的游戏人工智能算法,被接种或另外由用于相关逻辑空间的控制机器产生。关卡服务器可以处理游戏的动画和其它特征。如上文所论述的,控制机器具有加载至其存储器中用于相关关卡的基准WAD以及用于在该关卡或其它逻辑空间之内发生的当前相位活动的子WAD。
[0043]基准WAD或子WAD的加载可以触发脚本。例如,一些实施方案可包括有时称为“实体系统”的系统,其将字节码定义成设计师可包括的简单的表达式。该系统可以使用,例如使得当玩家进入体积时,特定的表达式运行。表达式可以具有副作用诸如设置变量、调用函数、改变世界状态或触发诸如动画的其他实体。在该情况下的触发脚本可能意指可设置触发体积使得如果玩家已经向前移动地很快使得他们已经远远超出其在关卡中的安全脚本,例如他们跑过所加载的WAD集,游戏可以停止用于“相位检查”。该相位检查等待在游戏中的所有玩家具有用于所期望的相位η加载的正确的WAD,在所期望的相位点上游戏不暂停。优选地,游戏被配置使得这种情况永远不发生。例如,玩家可缓慢移动使得玩家不可能移动超过所加载的WAD集。然而,即使可能不需要,该特征仍然是有用的失效保护以防止游戏损坏,并且确保玩家不会见到丢失wad的关卡等。
[0044]在本发明的实施方案中,程序可实施加载检查例行程序并且在对应于不同基准WAD的逻辑空间之间移动时暂停行动。该程序可以确定几种机器中的哪一个是控制机器并且命令控制机器加载用于给定逻辑空间的基准WAD和/或用于在该逻辑空间之内发生的给定活动相位的子WAD。
[0045]图1描绘用于图示基准WAD、相位和子WAD的概念的数据管理100的方法的实例。根据方法100,计算机系统可将对应于逻辑空间的基准WAD加载至其存储器中,如在102所指示的。逻辑空间可与由计算机系统的部分,处理器运行的计算机应用关联。如上文所论述的,基准WAD包含与逻辑空间唯一关联的数据集并且在计算机应用运行期间存在在逻辑空间中发生的一个或多个活动相位。这些相位与基准WAD唯一关联并且在基准WAD中的数据集对于一个或多个相位中的每个保持加载。
[0046]每个基准WAD或子WAD具有一系列的变量。这些变量可能包含状态信息诸如“LeverPulled”或“numEnemiesKilled”。这些变量可以由简单脚本系统(例如实体系统)用作状态以确定游戏中的行动何时应该发生,诸如新敌人的产生、加载新关卡、改变相位等。通常,在基准WAD中的状态信息将是穿过整个基准WAD的“全局”变量。例如,如果玩家在相位O拉开随后将在相位100触发门打开的控制杆,那么仍然在存储器中从相位O具有子WAD可能不是期望的。因此,该变量可在基准WAD中使得其在相位100中是可访问的,由于在存储器中用于WAD的变量是不可以访问的。或者,如果玩家可能拖动一推块(例如又把手的花岗岩块)穿过整个基准WAD,该块可被视为对于整个基准WAD的全局“物体”,并且将驻留“在基准WAD中”,而不是在子WAD之内。
[0047]计算机系统确定当前相位,如在104所指示的。通过实例的方式,基准WAD自身需要包含相位,因为基准WAD的相位必须已知即使其没有被加载。代替地,用于基准WAD的相位可存储在全局表中,[0,maxBaseWads-Ι],其在主机上初始化为O并且复制到所有客户机器。当基准WAD的服务器设置相位时,其改变在全局表中的该值并且复制该表到所有的机器。如果卸载基准WAD,并且再加载使其从该全局表得到初始相位,除非在加载中请求特定相位,例如“BaseWadA: 100”在相位100中加载BaseWadA,无论之前加载的全局表中的用于该基准WAD的当前相位是什么。在此类情况下,可在加载基准WAD时初始地确定当前相位。如在104所指示的,计算机系统加载一个或多个子WAD的不同集至当前相位的存储器中。每个子WAD包含与一个或多个对应的相位关联的数据。虽然一些子WAD可与一个或多个相位关联,每个相位具有与其关联的一个或多个子WAD的不同的对应集。在一些实施方案中,相位可默认为空并且可因此具有O或更多子WAD每相位。如果没有为相位限定子WAD,则该相位具有子WAD的空集。另一个重要点是子WAD可不“属于”多个基准WAD。每个子WAD可仅具有一个唯一的父基准WAD。这是为了避免在加载多个基准WAD时的冲突;否则子WAD可具有想作子WAD的服务器的两个不同的机器。防止子WAD “属于”多个基准WAD确保了基WAD的服务器总是对应于基WAD的当前相位的子WAD集的服务器。
[0048]在本发明的实施方案中,对于给定基准WAD的每个特定相位,存在可加载的子WAD的单个统计限定的集。在一些实施方案中,某些子WAD与每个相位关联。通过实例的方式,而不是限制的方式,一些游戏关卡可包括特定类型的子WAD,本文称为Skybox,其表示逻辑空间的固定距离的顶部。Skybox可能包含用于呈现结构的部分(例如天花板)或室外远景(例如天空)的数据,其在全部不同的相位中不改变。其它实例是包含抵抗的Al敌人的集或诸如纹理、网格、实体脚本等的关卡几何结构的部分的子WAD。
[0049]由于用于基准WAD的控制机器控制在该基准WAD中的所有非控制机器的相位,所以在相同基准WAD中的所有玩家具有相同的相位。这避免可发生的冲突,例如如果玩家角色分开并且以移动至不同的逻辑空间中但是随后再加入一些公共逻辑空间。当玩家角色在不同的空间中时,每个空间可以具有不同的控制机器,在其上加载对应的基准WAD和子WAD。用于那些逻辑空间的相位可以由其各自的控制机器单独设置。因为相位是基准WAD的特性,所以不论是逻辑空间还是屋里空间,用于不同逻辑空间的基准WAD可以在完全分开的相位中。这允许玩家在给定游戏的逻辑空间集之内独立地移动。因此,玩家可具有加载到其各自机器上的不同的基准WAD,并且这些不同的基准WAD中的每个具有在所有机器上的相同的相位。然而,当玩家重聚在相同的逻辑空间中时,所有玩家的机器加载基准wad,包括非控制机器。如将在下文论述的,在此类情况下,在公共逻辑空间中的玩家当其在该空间中时被称为栓系使得玩家的机器不冲突。本发明的实施方案允许玩家在相同的基准WAD中时被栓系,并且仅当他们在不同的基准WAD中时解开栓系。因此,本发明的实施方案允许控制分开玩家的角色而仍然允许角色一起移动。
[0050]如果所有玩家离开逻辑空间并且随后返回,那么卸载用于该逻辑空间的基准WAD和子WAD的过程可保存用于最近玩家的近相位的记忆以控制该空间,例如通过存储在前述的全局表中。然而,如果需要,实体脚本在加载基准WAD时可以重写基准WAD的最近相位,无论将用于当前相位的全局表值从最近一次wad加载设置成什么。
[0051]下面的表中列出呈YAML格式的配置文件的实例,其限定与单个程序关联的基准WAD、相位和子WAD每相位的集。下文的表I说明用于称为BillieJean的逻辑空间的基准WAD和子WAD每相位的实例。
[0052]表II
[0053]BillieJean:
[0054]O: [BJSky, BJ100, BJ101]
[0055]1: [BJSky, BJ100, BJ101, BJ102]
[0056]2: [BJSky, BJ101, BJ102, BJ103]
[0057]3: [BJSky, BJ102, BJ103, BJ104]
[0058]4: [BJSky, BJ103, BJ104, BJ105]
[0059]5: [BJSky, BJ104, BJ105, BJ106]
[0060]6: [BJSky, BJ105, BJ106, BJ107]
[0061 ] 7: [BJSky, BJ106, BJ107, BJ108]
[0062]8: [BJSky, BJ107, BJ108, BJ109]
[0063]9: [BJSky, BJ108, BJ109]
[0064]在上文表I中的实例中,基准WAD,称为Billiejean,具有从0编号至9的十个相位。在该实例中,子 WAD 是 BJSky、BJ100、BJ101、BJ102、BJ103、BJ104、BJ105、BJ106、BJ107、BJ108和BJ109。在方括号□之中的数量表示每个相位的子WAD的对应集。子WAD每相位的配置可以视需要由游戏设计师设置。每个相位一般具有不同的子WAD集。要注意的是对于一些相位,子WAD集可能为空,即没有对应于该相位的子WAD。还要注意的是相位不需要连续编号并且不必要对于η相位中的每个都限定子WAD集。例如,省略等同于现存的该相位的相位,但是保留sub-WADs[]。这对于设计师是重要的因为他们常常想要留下在相位之间的间隙,例如相位10、20、30、40,以防万一他们需要随后在两个现存相位之间挤入一个或多个额外的相位,例如,在相位20与30之间的相位25。因此,相位可默认为子WAD的空集,除非声明(例如在YAML中)具有子WAD的非空集。此外,虽然子WAD集每相位可为不同的,但是一些子WAD对于相同基准WAD的两个或多个相位可为共用的。要注意的是与表II关联的实例中,子WAD BJSky表示在所有十个相位中加载的Sky-box并且其它的子WAD中的每个在两个或多个连续相位中加载。该子WAD每相位的特定配置是非限制性的实例。
[0065]在本发明的实施方案中,用于逻辑空间的基准WAD可能仅具有单个相位。此外,基准WAD可能不具有任何相位。这是简并但是完全可用的情况,在该情况下,无论对于基准WAD设置什么相位,基准WAD是唯一加载的rad。
[0066]要注意的是在给定的基准WAD的一个相位中使用的子WAD可包括在任何其它随后的相位中。然而,不要求子WAD集每相位是不同的。虽然这可能是好注意,但是不会强制实行。然而,强制实行的是子WAD可仅被包括作为一个基准WAD的子WAD。例如,如在表V中所示出的,子WAD SUBHds025出现在相位O、10、40、50和60,但是没有在相位20或30中。
[0067]表IV[0068]SUBHds:
[0069]O:[SUBHdsSkyBox, SUBHds025]
[0070]10:[SUBHdsSkyBox, SUBHds025, SUBHds100, SUBHdslOOAII]
[0071]20:[SUBHdsSkyBox, SUBHds100, SUBHds125, SUBHdslOOAII]
[0072]30:[SUBHdsSkyBox, SUBHds100, SUBHds125]
[0073]40:[SUBHdsSkyBox, SUBHds025, SUBHds125]
[0074]50: [SUBHdsSkyBox, SUBHds025, SUBHds200]
[0075]60:[SUBHdsSkyBox, SUBHds025, SUBHds100]
[0076]还要注意的是不要求子WAD的每个集具有相同编号的子WAD,只要每个集包括零活更多子WAD。例如,在下文表V中所述的ArenaTest基准WAD中,每个相位具有不同编号的子WAD每相位。
[0077]表V
[0078]ArenaTest:
[0079]1: [ArenaTestSkyBox]
[0080]2:[ArenaTestSkyBox, ArenaTestAIl]
[0081]3:[ArenaTestSkyBox, ArenaTestAIl, ArenaTestAI2]
[0082]4:[ArenaTestSkyBox, ArenaTestAIl, ArenaTestAI2, ArenaTestAI3]
[0083]还要注意的是表V示出线性前进的实例,其中先前相位的子WAD集包括在随后相位的子WAD集中。其它实例在下文的表V1、表VII和表VIII中描绘。
[0084]再次参照图1,一旦子WAD已经为给定的相位加载,计算机系统就管理用于当前相位的在逻辑空间中的活动,如在108所指示的。在管理活动中,计算机系统可以使用在基准WAD中和用于当前相位的子WAD集的数据。管理在逻辑空间中的活动可包括但是不限于产生Al角色、保持跟踪在逻辑空间之内的Al角色和物体的状态、确定何时和是否改变当前相位并且确定何时改变存储器中的基准WAD集,例如何时加载新的基准WAD和/或卸载旧基准WAD。对于管理逻辑空间,计算机系统可以采取各种形式但是不限于本文所述的实施方案。通过实例的方式,而不是限制的方式,此类管理可以包括物体的简单跟踪和调停关卡客户端之间的争议。管理还可以包括广播复杂的动画、指导Al通过关卡和管理所产生的物体的生存期和网络ID。
[0085]控制机器是基准WAD的服务器。因此,控制机器例如通过解决客户请求、广播所作出的决定、更新Al、运行实体脚本系统、触发动画和其它行动来用作服务器。
[0086]通过实例的方式,而不是限制的方式,当前相位的改变可取决于在活动过程期间发生的与逻辑空间关联的活动。例如,假定计算机系统是多个玩家线上计算机游戏并且当前相位涉及玩家角色与Al敌人之间的战斗。在此类情况下,相位的改变可在计算机系统确定已经击败敌人时触发。
[0087]在110,计算机系统确定在逻辑空间中是改变相位还是结束活动。如果计算机系统确定应该改变相位,如在Iio所指示的,可在104确定新相位并且可为新的当前相位加载子WAD集和(可选的)卸载在新的当前相位中不需要的子WAD来重复过程。要注意的是不需要卸载在新的当前相位中使用的来自先前相位的子WAD并且为新的相位加载子WAD集可涉及仅加载新的相位需要的还没有加载的子WAD。还要注意的是可保存用于任何未加载的子WAD的状态数据使得如果需要子WAD用于随后的相位或如果在逻辑空间中的活动因为一些原因返回至先前相位,那么可迅速还原与那些子WAD关联的任何资产的状态(例如Al角色或物体的位置)。
[0088]如果在110确定在逻辑空间中的活动应该结束,则可卸载基准WAD和用于当前相位的所有子WAD。指示当前相位的信息可与在基准WAD中或用于当前相位的任何子WAD的任何状态数据一起保存。计算机系统可随后加载基准WAD用于新的逻辑空间并且过程可从102开始重复。
[0089]存在许多原因可使计算机系统确定在逻辑空间中的活动应该结束。一个非限制的可能性是在相位序列中的最近的相位的活动已经完成并且随后的活动发生在不同的逻辑空间中,例如在虚拟世界中的不同的空间。另一个非限制的可能性是角色由计算机系统控制的玩家已经将角色移出逻辑空间,例如通过使角色走过引致不同空间的门。还有另一个可能性是由玩家角色进行的一些活动触发终结,例如当由计算机系统控制的角色摔入陷阱门。
[0090]如可以从前述见到的,在本发明的实施方案后面的概念相对简单。存在η个基准WAD,其中η是大于或等于I的整数。每个基准WAD具有m个相位,其中m是大于或等于O的整数。每个相位可具有与其关联的任何数量的子WAD。子WAD可在相同的基准WAD中的多个相位上共享,但是可能不能在多个基准WAD上共享。
[0091]本发明的实施方案对于网络化的多个玩家的游戏可以特别有效地工作,因为所有需要的是在特定实例及时通信用于特定逻辑空间的当前信息集是为了指示相关基准WAD和用于该逻辑空间的相位。另外,本发明的实施方案允许同时加载不同的基准WAD到不同的机器上,从而允许玩家分开,但是当玩家一起在与给定的基准WAD关联的逻辑空间之中时,保证他们具有所加载的相同的子WAD集,因为每个机器跟随由控制机器为该基准wad设置的相位集。
[0092]在相位完成之后,用于该相位的子WAD可被卸载或如果需要用于随后的相位则可被保持在存储器中,这取决于具体的实施方式。通过实例的方式而不是限制的方式,一些实施方案可利用关卡被“获取”或“释放”的概念。获取关卡是变成该关卡中的客户端或服务器的先决条件。这在美国专利申请号12/614,977中描述,其已经通过引用并入本文。然而,在该获取/释放系统之下,可存在用于WAD的输入/输出(I/O)系统。一些实施方案仅可在WAD占用的空间需要加载新的WAD时从存储器中逐出关卡WAD数据。因此,如果你有Bi I IieJean实例,并且每个子WAD仅占用lmb,那么一旦加载就不会逐出WAD。然而,游戏和网络代码可认为WAD “不可访问”,即使仍在存储器中,例如,状态不可以从该关卡WAD读取,以及其变量值不可以读或写。作为实际情况,这仅仅是用于文件I/O的缓存机构并且不会改变WAD加载/卸载的行为。
[0093]本发明的实施方案可用彼此通信的多个计算机系统使用。例如,许多计算机视频游戏被编程以能够使一个或多个玩家在单个视频游戏控制台上参与。在一些视频游戏中,多个玩家可以通过电话、电缆或其它网络将多个控制台连接在一起。将多个游戏控制台连接在一起可以允许处理每个游戏控制台的功率,所述控制台有时容纳极强功率的中央微处理器、图形呈现和音频处理器以及快速的存储器以服务每个玩家的处理需要,其对于游戏控制台是本地的而尝试玩游戏的所有控制台至一个组合的游戏中。为了增强的真实感和顺畅的玩游戏,这些网络化的游戏控制台接近其处理和存储极限的包络工作常常是关键的.[0094]存在两个常见类型的网络架构用于在网络化的游戏控制台之间路由数据包和其它通信信号:客户端-服务器和点对点。
[0095]图2图示“客户端-服务器”网络架构。通信在每个客户端与服务器之间进行,但是一般不在客户端之间。在一种类型的客户端-服务器架构中,客户端计算机常常是彼此迥然不同的模型(例如各种个人计算机或游戏控制台),其通过诸如互联网的广域网与中央服务器或服务器组通信。在视频游戏中,中央服务器跟踪每个玩家、非玩家角色以及在视频游戏中的各种项目和物体的位置。在客户端-服务器架构中,服务器可用作逻辑空间的控制机器。如在图1中所见的,基准WAD BW和一个或多个子WAD组SW加载到用作控制机器的服务器装置上。
[0096]在另一个类型的网络架构中,客户端计算机是相同的模型或相对类似的类型(例如游戏控制台),其中客户端中的一个用作服务器。服务器可以以自组织的方式在各个连接的控制台之间而选择,并且通常(而不总是)第一玩家的控制台开始游戏。
[0097]图3图示“点对点”网络架构。通信通常在每个与每一个对等点之间进行。类似或不同类型的计算机可以在点对点拓扑中彼此连接。在视频游戏中,对等点彼此传递消息和其它通信以复制玩家、非玩家角色、物体的位置以及在每个对等点中的其它设置。在此类架构中,每个对等点可为用于不同的逻辑空间的控制机器,其由不同的基准WAD BffU Bff2,BW3和BW4指示,并且对应的子WAD集SW1、SW2、SW3和SW4加载至不同的对等点。
[0098]本发明的实施方案允许玩家分开到不同的逻辑空间,例如不同的空间、关卡等,并且当他们重聚时仍在相同的相位。该过程非常简单,当两个玩家在相同的逻辑空间中时,玩家机器中的一个是用于该逻辑空间的控制机器(例如服务器或主机)并且具有加载至存储器中的用于该逻辑空间的基准WAD和对应的子WAD。属于其它玩家的非控制机器可以根据需要加载子WAD但是仅控制机器可以控制在任何子WAD中的任何资产(例如Al角色位置或是否已经拉开控制杆)的相位改变或状态改变。在该情况下,玩家可以被称为“栓系”至由控制机器确定的相位。
[0099]然而,当玩家中的一个移动至不存在控制机器的不同的逻辑空间中时,玩家的机器加载用于新的逻辑空间的基准WAD和子WAD至其存储器中并且变成该逻辑空间的控制机器。如果存在用于不同的逻辑空间的控制机器,每个非控制机器在由控制机器确定的相位上进入逻辑空间。每个控制机器控制用于具有加载的基准WAD的逻辑空间的相位。基准wad可由任何机器加载,甚至非控制机器。非控制机器就不会用作基准wad的服务器,并且可能不设置相位。当两个玩家重聚时,他们都在相同的基准wad中,并且因此具有在两个机器上加载的相同的相位和相同的子WAD集,因此玩家被称为在相同的逻辑空间中栓系在一起。
[0100]给定的机器可能是一次用于两个不同的逻辑空间的控制机器。换句话说,机器可以具有同时加载的两个不同的基准WAD。任何数量的基准WAD—般可加载至给定的机器,仅受限于可用的存储器。例如,如果将两个基准WAD A和B加载至机器,那么系统存储器可能被分配使得一半由A使用,而一半由B使用。然后,两个基准WAD可能同时被加载到一个机器上。随后,一个可能具有基准WAD服务器的任何配置,例如节点O可能是两个基准WAD的服务器,节点O可能为基准WAD A的服务器、节点I为B的服务器,或反之亦然。[0101]更有趣的情况发生在基准WAD不合乎系统存储器的空间时。考虑在四个机器0、1、2和3上参与的四个玩家的COOP游戏,并且当事人在路径分支成左和右叉路的情况下决定分成两方。在传统的游戏中,左和右叉路都必须合乎所有机器上的存储器空间中。然而,在本系统的实施方案中,左和右路径可能为分开的基准WAD。左路径基准WAD可能加载到机器O和I上,并且右路径可能加载到机器2和3上。这允许左和右基准WAD占用正常存储空间的两倍。
[0102]在优选实施方案中,本文所述的方法和系统可用于在点对点网络上操作多个玩家的视频游戏,在所述点对点网络中游戏控制台可以忽视或接受用于来自其它游戏控制台的单独的空间或其它虚拟区域的服务器或其它管理责任。管理责任包括如保持跟踪诸如空间或关卡的逻辑空间、产生和指导Al (游戏人工智能生物)和另外管理用于其它连接的控制台的空间的状态的此类“服务器”活动。
[0103]而本文常常使用术语“空间”用于解释某些优选实施方案的目的,应理解的是任何适合的逻辑空间,例如游戏或其它此类电子展示的游戏关卡、区域、部分、分区或其它虚拟区域也可以在各种实施方案的范围之内使用。
[0104]在优选实施方案中,上文所述的方法可包括在点对点的网络架构中连接的游戏控制台、个人计算机或其它机器上管理多个玩家的视频游戏。任何类型的计算装置可以联网用于游戏,诸如个人计算机、游戏控制台、便携式数字助理、移动电话、专用手持游戏装置和其它电子游戏装置。
[0105]逻辑空间的管理可以从一个游戏机器转移至另一个。这不同于单个服务器为整个游戏世界处理动画、产生Al等的中央服务器架构。中央服务器的现有技术不能在每个关卡的基础上发布服务器的责任给游戏中的所有玩家。
[0106]逻辑空间的管理可以响应于在控制机器上的一个或多个玩家而自动转移,所述玩家使对应于其游戏机器的其化身或其它用户可控制的元件行走、跑步、游泳、跳跃、飞行、心灵运输或另外移动出该逻辑空间至另一个逻辑空间。从一个逻辑空间移动至另一个可以涉及,例如沿着通道、隧道、自动扶梯、电梯、桥梁或其它路径移动。在继续至例如空间或关卡的另一个逻辑空间之前存在可以征服的挑战,诸如击败敌人或解决谜题。当给定玩家的机器终止用作给定逻辑空间的关卡服务器或主机时,通信带宽、存储器空间和处理器周期可以开放用于服务其它逻辑空间。
[0107]给定逻辑空间的管理也可以响应于其它因素而转移,诸如与关卡客户端的通信减弱、进行与游戏无关的另一个处理负载或简单地用于每个游戏控制台根据预定的时间表来共享关卡服务器职责的循环制系统。用于在逻辑空间上转移控制的方法的实例被描述,例如 2009年 11 月 9 日提交的标题为“LEVEL SERVER SYSTEM FOR PEER TO PEER COOPERATIVEGAMES”的Glenn Fielder的共同分配的共同待决的美国专利申请号12/614,977,其整体内容通过引用并入本文。
[0108]图4图示点对点网络化的视频游戏控制台及其各自的显示器。点对点系统400包括玩家Pl游戏控制台402和Pl显示器406、玩家P2游戏控制台404和P2显示器408以及在游戏控制台之间的连接线410。如在显示器上所示出的,玩家Pl和P2在相同的空间中。
[0109]在该实例中,游戏控制台402用作控制机器,并且游戏控制台404是非控制机器。将用于例如对应于相关的游戏关卡的逻辑空间的基准WAD Bff以及对应于该游戏关卡的当前活动相位的任何子WAD集SW加载至游戏控制台402的存储器403中。通过实例的方式而不是限制的方式,游戏控制台402可管理特定的空间、跟踪在用于两个控制台的空间之内的可移动的物体。游戏控制台402可控制产生敌人Al并且指导其攻击两个玩家。游戏控制台404接受敌人的位置并且跟随行动,如在游戏控制台402上发生的一样。
[0110]图5图示在逻辑空间502中的有在各种位置和不同设置的项目的视频游戏显示器。在该实例中,逻辑空间502具有可移动的箱子504,其可以响应于滑轮系统(未示出)而上下移动。非玩家角色506也被示出,其对玩家可以是友好的、中立的或敌对的。还示出了控制杆508。控制杆508可由玩家角色操控以移位位置。例如,如果玩家指导其化身走向它并且按下在控制器上的按钮,那么控制杆508的位置可移位。用于逻辑空间502的控制机器通过操控用于在逻辑空间502之内的每个活动相位的子WAD中的数据来跟踪在空间中的各种可移动的物体的位置和/或物体的设置。例如,用于箱子、非玩家角色和控制杆的各种位置和设置在给定的瞬时表示这些项目的状态,所述位置和设置可包括在用于逻辑空间5021的基准WAD的给定相位的子WAD中,如下文在表1X中所示出的。
[0111]表1X
[0112]
【权利要求】
1.一种在具有处理器和存储器的计算机系统中用于数据管理的方法,其包括: a)用所述计算机系统加载对应于与由所述处理器运行的计算机应用关联的逻辑空间的基准WAD至所述存储器中,其中所述基准WAD包含与所述逻辑空间唯一关联的数据集,其中在所述计算机应用的运行期间存在所述逻辑空间中发生的零个或多个活动相位,其中所述零个或多个相位与所述基准WAD唯一关联,其中在所述基准WAD中的所述数据集对于所述零个或多个相位中的每个保持加载; b)用所述计算机系统为所述零个或多个相位的每个相位加载不同的零个或多个子WAD集至所述存储器中,从而存在零个或多个子WAD集,其中每个子WAD包含与所述零个或多个相位的对应的相位关联的数据;并且 c)用所述计算机系统使用在所述基准WAD中的所述公用数据和在对应于所述给定相位的所述零个或多个子WAD集中的所述数据集来管理所述零个或多个相位的给定相位的活动, 其中每个相位具有对应的零个或多个子wad集,其中所述计算机系统被配置成与可以访问所述逻辑空间的一个或多个其它计算机系统通信并且其中所述计算机系统被配置成用作用于所述逻辑空间的控制机器,其中所述控制机器只控制在所述零个或多个相位之间的相位的改变。
2.根据权利要求1所述的方法,其还包括用所述计算机系统,其中所述零个或多个相位包括两个或多个相位,所述方法还包括卸载与所述两个或多个相位的先前相位关联的一个或多个子WAD,所述先前相位不 需要用于所述两个或多个相位的当前或随后的相位。
3.根据权利要求2所述的方法,其中卸载不需要用于所述当前或随后的相位的所述一个或多个子WAD包括保存用于与不需要的所述一个或多个子WAD关联的一个或多个资产的当前状态。
4.根据权利要求1所述的方法,其中所述逻辑空间是多个相关的逻辑空间中的一个,其中在所述多个中的每个其它逻辑空间具有与其关联的基准WAD,从而存在多个基准WAD、零个或多个相位以及一个或多个对应的子WAD集。
5.根据权利要求4所述的方法,其中与给定基准WAD关联的每个子WAD不与任何其它基准WAD共享。
6.根据权利要求4所述的方法,其中在所述多个中的每个基准WAD具有与其关联的相同非零有限的相位数量。
7.根据权利要求6所述的方法,其中对于所述多个的一个或多个基准WAD的一个或多个相位,对应的子WAD集是空集。
8.根据权利要求7所述的方法,其中对于所述多个的一个或多个基准WAD的一个或多个相位,对应的子WAD集是非空集。
9.根据权利要求1所述的方法,其中所述计算机应用是视频游戏应用。
10.根据权利要求9所述的方法,其中所述逻辑空间是在所述视频游戏之内的关卡。
11.根据权利要求9所述的方法,其中所述逻辑空间是在所述视频游戏之内的虚拟位置。
12.根据权利要求1所述的方法,其还包括从所述存储器卸载所述基准WAD。
13.根据权利要求12所述的方法,其中卸载所述基准WAD包括保存零个或多个相位的当前相位。
14.根据权利要求1所述的方法,其中将所述计算机系统连接至在点对点网络中的一个或多个其它计算机系统。
15.根据权利要求14所述的方法,其中不将与所述逻辑空间关联的所述基准WAD加载至用于任何所述一个或多个其它计算机系统中的存储器中。
16.根据权利要求14所述的方法,其中所述一个或多个其它计算机系统跟随由所述计算机系统确定的所述相位。
17.根据权利要求14所述的方法,其中所述一个或多个其它计算机系统中的不同的一个包括存储器,将用于不同的逻辑空间的基准WAD加载至所述存储器中,并且其中所述一个或多个其它计算机系统中的所述不同的一个被配置成用作所述不同的逻辑空间的控制机器。
18.一种计算机系统,其包括: 处理器; 存储器;以及 一个或多个计算机可执行指令,其存储在所述存储器中并且可由所述处理器执行,其中所述指令被配置成在由所述处理器执行时实施在所述计算机系统中用于数据管理的方法,所述方法包括: a)加载对应于与由所述处理器运行的计算机应用关联的逻辑空间的基准WAD至所述存储器中,其中所述基准WAD包含与所述逻辑空间唯一关联的数据集,其中在所述计算机应用的运行期间存在所述逻辑空间中发生的零个或多个活动相位,其中所述零个或多个相位与所述基准WAD唯一关联,其中在所述基准WAD中的所述数据集对于所述零个或多个相位中的每个保持加载; b)为所述零个或多个相位的每个相位加载不同的一个或多个子WAD集至所述存储器中,从而存在一个或多个子WAD集,其中每个子WAD包含与所述零个或多个相位的对应的相位关联的数据;并且 c)使用在所述基准WAD中的所述公用数据和在对应于所述给定相位的所述零个或多个子WAD集中的所述数据集来管理所述零个或多个相位的给定相位的活动, 其中每个相位具有对应的零个或多个子wad集, 其中所述计算机系统被配置成与可以访问所述逻辑空间的一个或多个其它计算机系统通信并且其中所述计算机系统被配置成只控制在所述零个或多个相位之间的相位改变。
19.一种非暂时性计算机可读介质具有在其中实施的计算机可执行的指令,所述计算机可执行的指令被配置成实施在具有处理器和存储器的计算机系统中用于数据管理的方法,所述方法包括: a)用所述计算机系统加载对应于与由所述处理器运行的计算机应用关联的逻辑空间的基准WAD至所述存储器中,其中所述基准WAD包含与所述逻辑空间唯一关联的数据集,其中在所述计算机应用的运行期间存在所述逻辑空间中发生的零个或多个活动相位,其中所述零个或多个相位与所述基准WAD唯一关联,其中在所述基准WAD中的所述数据集对于所述零个或多个相位中的每个保持加载; b)用所述计算机系统为所述零个或多个相位的每个相位加载不同的零个或多个子WAD集至所述存储器中,从而存在零个或多个子WAD集,其中每个子WAD包含与所述零个或多个相位的对应的相位关联的数据;并且 c)用所述计算机系统使用在所述基准WAD中的所述公用数据和在对应于所述给定相位的所述零个或多个子WAD集中的所述数据集来管理所述零个或多个相位的给定相位的活动, 其中每个相位具有不同的对应的零个或多个子wad集, 其中所述计算机系统被配置成与可以访问所述逻辑空间的一个或多个其它计算机系统通信并且其中所述计 算机系统被配置成只控制在所述零个或多个相位之间的相位改变。
【文档编号】A63F9/24GK103945911SQ201280051486
【公开日】2014年7月23日 申请日期:2012年10月9日 优先权日:2011年10月18日
【发明者】G.菲德勒, V.A.菲力波夫, T.莫斯 申请人:索尼电脑娱乐美国公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1