用于改善分布式交互模拟中的对象的呈现的装置和方法

文档序号:1619259阅读:623来源:国知局
用于改善分布式交互模拟中的对象的呈现的装置和方法
【专利摘要】提供用于在多个计算设备上实质上同时呈现分布式模拟的系统和方法。第一计算设备控制所述模拟中的对象。第二计算设备产生与视觉状态相关的所述对象的视觉表示。所述第二计算设备产生预测状态并从所述第一计算设备接收包括新状态的更新。所述预测状态的部分被设置为等于所述新状态的部分,且确定所述预测和视觉状态之间的差异。当所述差异大于第一阈值时,可修改所述预测状态的至少一个速度。当所述差异大于第二阈值时,至少部分基于所述预测状态来修改所述视觉状态。至少部分基于所述视觉状态来渲染所述对象的新的视觉表示,且显示所述新的视觉表示。
【专利说明】用于改善分布式交互模拟中的对象的呈现的装置和方法
[0001]相关申请的交叉引用
[0002]本申请请求2011年5月3日提交的美国临时申请N0.61/482,162的权益,所述申请以引用的方式全文并入本文。
【技术领域】
[0003]本发明一般针对分布式交互模拟,如在多个操作员站/玩家站的对面呈现连贯的虚拟世界的军事模拟器和多玩家计算机游戏中使用的那些分布式交互模拟。
【背景技术】
[0004]分布式交互模拟是当今视频游戏的流行形式,但起源于诸如20世纪80年代和20世纪90年代的SMNET的军事模拟。在分布式交互模拟中,在多个计算机站之间创建并共享虚拟世界,每个计算机站支持具有控制器的至少一个用户和至少一个显示器。
[0005]在一些模拟中,站共享向例如每个已知网络时间协议(“NTP”)提供公共时基的分布式时钟。然而,这不是必需的。分布式模拟一般(但不一定)定期前进(例如,每秒更新30次),且一般(但是不一定)在每个站以同样的速度前进(例如,其它站可每秒运行更新60 次)。
[0006]所述站也共享环境模型,包括空域和地形。地形可为静态的,包括地貌、建筑物(可包括内部)和水体。或者,地形可为非静态的:例如,一些或所有建筑物可被破坏,地貌可“伤痕累累”(例如,具有轮胎轨道、火山口或烧伤的痕迹)等。在这个环境中,放置包括例如车辆、人、动物的模拟动态对象。这些动态对象的动画给了模拟生命的外观。
[0007]在此类模拟中,每个站负有管理一个或多个模拟对象的主要责任。对于站管理的每个对象,为每个本地时间增量计算详细模型以确定它的行为。例如,全地形车(“ATV”)的详细模型可接受来自操作员(通常是管理站本地的操作员)的方向盘和踏板输入。ATV的详细模型可进行计算以模拟自动变速器、ATV的悬架系统与地形之间的相互作用、轮胎和地形表面之间的牵引、也许还有油耗、发动机过热或其它细节和模拟故障。通常,虽然对于足够现实很关键,但是在交换效率中,在这个细节水平上建模只需由管理站计算,其中详细模型的结果向分布式交互模拟中的其它站公布。
[0008]注意,ATV的操作员可为人类玩家,或者在另一人类玩家不可用或不需要的情况下,操作员可为模拟盟友或敌人的人工智能程序(“Al”)。当使用时,Al只是详细模型的另一有效组件;管理站维持状态并执行ATV驱动Al所需的增量模拟,但是远程站只接收结果O
[0009]在一些情况下,模拟的对象可能是复杂的并需要运动学模型的复杂动画(如与人类、动物或外星人)进行铰接,但是其它对象可相对简单(例如,木箱或抛射体),在这种情况下,可使用简单的弹道模型。
[0010]然而,共享来自管理站的详细建模的结果(也称为更新)存在问题。例如,需要花费时间来把更新分配到不控制对象的远程站;且由于这个等待时间,模型的更新总是有些“旧”的信息。在所有站正确设置分布式模拟时钟的模拟中,任何更新将在过去某一模拟时间进行时间戳,但是一般是近期。然而,刚性计时系统可把共振引入模型,从而产生视觉假象。另外,维持准确的时钟有时是不必要的复杂性的来源且偶尔是错误的来源。另外,通过不可靠的网络,更新可被丢失或延迟且到达时具有不规则等待时间。另外,带宽限制和模拟中对象的数量可限制可为每个对象发送的更新的数量,使得更新不像管理站计算详细模拟般频繁地被提供到远程站。
[0011]在每个站,显示器向玩家呈现虚拟世界。对于远程管理的对象,显示器通常比更新到达更频繁地刷新,而只像更新到达一样频繁地改变远程管理对象的显示将使远程管理对象显得生涩和不真实。为了缓和这种情况,对象更新与对象更新对应的时间相关且更新的接受者可推断在更新后的时间如何显示对象。
[0012]为了实现这个目标,更新必须代表对象在特定时间的状态。例如,状态可包括对象的位置和方向(一般(但不一定)包括6个坐标轴:X、Y、Z、滚动、俯仰和偏转)和具有不同值的其它属性(例如,前灯是否打开、车辆的发动机是否冒烟、未爆炸的手榴弹将爆炸的时间)。特定时间对应于当前状态的时间。
[0013]对象的状态究竟包括什么取决于对象的性质。对于复杂铰接式对象,例如动物,状态可包括对象的骨骼关节或总结此类关节的动画循环的索引。
[0014]在一些情况下,对象可具有多个操作模式,例如,当“动物”对象是活着的时候,它可由动画循环驱动,但当如在狩猎模拟中动物死亡时,铰接式身体的操作模式变为放松的运动学模型。例如,身体变得瘫软,但是骨骼施加的限制仍然在控制之中。对于具有多个控制模式的那些对象,状态还可包括识别正使用哪个控制模式。
[0015]在这里,“状态”可包括许多属性,而不仅仅是物理位置、方向(旋转)。诸如动画循环索引、步行循环索引等的索引中的一些可能有益于推断预测。然而,只琐细地推断诸如车辆的前灯是否打开或是否鸣喇叭的一些属性。例如,一旦灯打开,它们将保持打开直到更新称它们关闭。
[0016]状态也可包括用于以提高的精度推断后续状态的信息,例如线性或旋转轴的速度和线性或旋转轴的加速度。虽然可例如通过把过去的两个更新的位置差除以过去的两个更新的时间差来得到速度以进行推断而无需此类提示,但是提供明确的速度或加速度可改善结果。
[0017]在这里,“状态”可包括状态信息和/或相对于状态获得的一个或多个计算结果。
[0018]对于在站管理的对象的模拟的每个迭代,如果提供了对象中各种自由度的任一自由度,那么新的状态源自操作员输入和详细模型执行,包括速度和/或加速度值。
[0019]然而,对象的状态以低于每迭代一次的频率从管理站发送到其它站中的每个站。例如,如果管理站将每秒30次地更新对象模型,那么如果对象不重要、较远、格外一致或只慢慢改变,或者如果有许多对象要更新且/或通信带宽高度受限,则更新就只可每秒5次或甚至更低频率(例如,每秒2次)地发送到其它站。
[0020]基于从管理站接收到的更新,推断技术提供关于远程管理对象的状态的最佳可用信息和用于预测它的运动(至少在不久的将来)的最佳可用信息。仍然,当推断状态基本上超过或达不到后续更新中描述的状态时,可发生表观运动中的刺耳的不连续性。通常这是因为操作员进行来自较早更新的推断并不预期的突然转向、卡住刹车、躲闪或急转弯以避免碰撞等。
[0021]按模拟的说法,提供对象当前状态的最佳估计是“预测器”的工作,并且“校正器”的工作是以尽可能美观的方式来隐藏推断状态的明显不连续性。
[0022]不幸的是,适用于当前的预测器-校正器系统缺乏用于各种各样的对象类型的美观的、看似逼真的行为,或者缺乏用于相同对象类型的但是在各种各样的条件下的美观的、看似逼真的行为。结果是远程管理对象的不可预知的生涩运动或行为。对于瞄准并射击对象是主要目标的模拟,这可使瞄准变得困难并令人沮丧。类似地,在驾驶或飞行模拟中,这可使跟随远程管理对象变得困难并令人沮丧。因此,需要更好的方式来在分布式交互模拟中呈现远程管理对象的移动。本申请提供如根据以下详细描述和附图将明显的这个和其它优势。

【发明内容】

[0023]实施方案包括用于在多个计算设备上实质上同时呈现分布式模拟的方法。多个计算设备包括执行所述分布式模拟的第一部分的第一计算设备。第一部分控制对象。多个计算设备包括执行分布式模拟的第二部分的第二计算设备。第二部分产生可在第一显示设备上显示的所述对象的第一视觉表示。第二计算设备包括与所述对象和所述第一视觉表示相关的视觉状态。视觉状态包括至少一个参数值。第二计算设备从所述第一计算设备接收到包括与所述对象的第二视觉表示相关的先前状态的先前更新。第二计算设备至少部分基于所述先前状态来产生所述对象的预测状态。预测状态包括至少一个速度和至少一个参数值。第二计算设备从所述第一计算设备接收包括与所述对象的第三视觉表示相关的新状态的更新。新状态包括至少一个参数值。第二计算设备把所述预测状态的所述至少一个参数值设置为等于所述新状态的所述至少一个参数值,并确定所述预测状态的所述至少一个参数值和所述视觉状态的所述至少一个参数值之间的差异。当所述差异大于第一阈值时,所述第二计算设备修改所述预测状态的所述至少一个速度。当所述差异大于第二阈值时,所述第二计算设备至少部分基于所述预测状态的所述至少一个参数值来修改所述视觉状态的至少一个参数值。所述第二计算设备至少部分基于所述视觉状态渲染所述对象的第四视觉表示并在所述第一显示设备上显示所述对象的所述第四视觉表示。
[0024]所述对象的所述第三视觉表示可由所述第一计算设备在第二显示设备上显示,且实质上与所述第一计算设备在所述第二显示设备上显示所述对象的所述第三视觉表示同时,所述对象的所述第四视觉表示可由所述第二计算设备在所述第一显示设备上显示。
[0025]在一些实施方案中,所述预测状态是第一预测状态,且所述差异是第一差异。在此类实施方案中,第二计算设备可至少部分基于所述预测状态的所述至少一个速度来产生第二预测状态(包括至少一个参数值)。当所述第二差异大于所述第二阈值时,所述第二计算设备可至少部分基于所述第二预测状态的所述至少一个参数值来修改所述视觉状态的所述至少一个参数值。在此类实施方案中,所述第二计算设备至少部分基于所述视觉状态来渲染所述对象的第五视觉表示,并在所述第一显示设备上显示所述对象的所述第五视觉表
/Jn ο
[0026]所述第二计算设备可从所述第二计算设备可访问的存储设备获得所述第一阈值。所述对象可具有类型,且所述第一阈值可被存储在所述存储设备上存储的表中。在此类实施方案中,所述第一阈值与所述对象在所述表中的所述类型相关。在一些实施方案中,所述新状态的所述至少一个参数值包括至少一个速度,且修改所述预测状态的所述至少一个速度包括:获得与所述对象的所述类型相关的凹凸值和根据所述凹凸值、所述差异和所述新状态的所述至少一个速度来计算所述预测状态的所述至少一个速度。
[0027]在一些实施方案中,所述视觉状态的所述至少一个参数值包括至少一个速度,且所述预测状态的所述至少一个参数值包括至少一个速度。在此类实施方案中,确定所述预测状态的所述至少一个参数值和所述视觉状态的所述至少一个参数值之间的所述差异可包括:确定所述预测状态的所述至少一个速度和所述视觉状态的所述至少一个速度之间的差异。当所述新状态的所述至少一个参数值包括至少一个速度时,所述预测状态的所述至少一个速度可被设置为等于所述新状态的所述至少一个速度。
[0028]在一些实施方案中,当所述差异大于所述第二阈值时至少部分基于所述预测状态的所述至少一个参数值来修改所述视觉状态的所述至少一个参数值包括:确定所述差异是否大于第三阈值,所述第三阈值大于所述第二阈值。当确定所述差异大于所述第三阈值时,所述第二计算设备可把所述视觉状态的所述至少一个参数值设置为等于所述预测状态的所述至少一个参数值。当所述差异小于所述第三阈值时,所述第二计算设备可确定混合状态。混合状态可至少部分基于所述视觉状态的所述至少一个参数值和所述预测状态的所述至少一个参数值。所述混合状态可包括至少一个参数值,且所述视觉状态的所述至少一个参数值可被设置为等于所述混合状态的所述至少一个参数值。
[0029]在一些实施方案中,所述视觉状态的所述至少一个参数值包括位置信息和方向信息中的至少一个,且所述预测状态的所述至少一个参数值包括位置信息和方向信息中的至少一个。在此类实施方案中,确定所述预测状态的所述至少一个参数值和所述视觉状态的所述至少一个参数值之间的所述差异可包括:确定所述预测状态的位置信息和方向信息中的所述至少一个和所述视觉状态的位置信息和方向信息中的所述至少一个之间的差异。当所述新状态的所述至少一个参数值包括位置信息和方向信息中的至少一个时,所述预测状态的位置信息和方向信息中的至少一个可被设置为等于所述新状态的位置信息和方向信息中的至少一个。
[0030]当所述差异大于所述第二阈值时至少部分基于所述预测状态的所述至少一个参数值来修改所述视觉状态的所述至少一个参数值可包括:确定所述差异是否大于第三阈值,其中所述第三阈值大于所述第二阈值。当确定所述差异大于所述第三阈值时,所述视觉状态的位置信息和方向信息中的所述至少一个可被设置为等于所述预测状态的位置信息和方向信息中的所述至少一个。
[0031]所述对象可具有类型,且所述第三阈值可被存储在表中且与所述表中的所述对象类型相关。所述第二计算设备可从所述表获得所述第三阈值。
[0032]当所述差异大于所述第二阈值时至少部分基于所述预测状态的所述至少一个参数值来修改所述视觉状态的所述至少一个参数值可包括:当所述差异小于所述第三阈值时,确定混合状态。所述混合状态可至少部分基于所述视觉状态的位置信息和方向信息中的所述至少一个和所述预测状态的位置信息和方向信息中的所述至少一个。在此类实施方案中,所述混合状态包括位置信息和方向信息中的至少一个。在确定所述混合状态之后,所述视觉状态的位置信息和方向信息中的所述至少一个可被设置为等于所述混合状态的位置信息和方向信息中的所述至少一个。
[0033]在所述对象具有类型的实施方案中,所述混合状态可至少部分基于与所述对象的所述类型相关的一个或多个参数值来确定。所述第二和第三阈值可被存储在表中且与所述表中的所述对象类型相关。在此类实施方案中,所述第二计算设备可从所述表获得所述第
二和第三阈值。
[0034]所述新状态的所述至少一个参数值可包括所述对象的控制模式,且所述第二计算设备可至少部分基于所述对象的所述控制模式来从多个第一和第二阈值选择所述第二和第三阈值中的至少一个。所述选择也可至少部分基于所述对象的所述类型。
[0035]当所述差异大于所述第二阈值时至少部分基于所述预测状态的所述至少一个参数值来修改所述视觉状态的所述至少一个参数值可包括:确定局部碰撞状态和基于所述局部碰撞状态来修改所述视觉状态。如果所述分布式模拟包括地形,那么所述第二计算设备可重复确定所述局部碰撞状态和基于所述局部碰撞状态来修改所述视觉状态,直到所述对象实质上不渗透所述地形。
[0036]在所述第一计算设备上执行的所述分布式模拟的所述部分可控制所述多个对象的部分并把与所述多个对象的所述部分的至少一个对象有关的更新发送到所述第二计算设备。在此类实施方案中,所述第二计算设备从所述第一计算设备接收包括与所述第一计算设备控制的所述多个对象的所述部分的第一对象有关的状态信息的先前更新。所述第二计算设备至少部分基于与所述第一对象有关的所述状态信息来产生并显示所述第一对象的第一视觉表示。所述第二计算设备包括与所述第一对象和所述第一视觉表示相关的视觉状态信息。所述第二计算设备从所述第一计算设备接收包括状态信息的新更新,所述新更新在所述先前更新之后已经被接收到。所述第二计算设备至少部分基于所述先前更新的所述状态信息来确定所述第一对象的预测状态信息。所述预测状态信息包括至少一个速度值。所述第二计算设备确定所述新更新的所述状态信息是否与所述第一对象有关。当所述新更新的所述状态信息与所述第一对象有关时,所述第二计算设备把所述预测状态信息的至少一部分设置为等于所述新更新的所述状态信息的至少一部分。所述第二计算设备确定所述视觉状态信息和所述预测状态信息之间的差异。当所述差异大于第一阈值时,所述第二计算设备修改所述预测状态信息的所述至少一个速度值,且当所述差异大于第二阈值时,所述第二计算设备至少部分基于所述预测状态信息来修改所述视觉状态信息。所述第二计算设备至少部分基于所述视觉状态信息来渲染所述对象的第二视觉表示,并在所述显示设备上显示所述对象的所述第二视觉表示。
[0037]在一些实施方案中,所述预测状态信息是第一预测状态信息,且所述差异是第一差异。在此类实施方案中,所述第二计算设备至少部分基于所述第一预测状态信息的所述至少一个速度来产生第二预测状态信息,且确定所述视觉状态信息和所述第二预测状态信息之间的第二差异。当所述第二差异大于所述第二阈值时,所述第二计算设备至少部分基于所述第二预测状态信息来修改所述视觉状态信息。所述第二计算设备至少部分基于所述视觉状态信息来渲染所述对象的第三视觉表示,并在所述显示设备上显示所述对象的所述第三视觉表示。
[0038]在一些实施方案中,在所述第二计算设备上执行的所述分布式模拟的所述部分控制所述多个对象的第二部分。在此类实施方案中,所述第二计算设备把与所述多个对象的所述第二部分的至少一个对象有关的更新发送到所述第一计算设备。所述第二计算设备可通过用户接口设备接收用户输入,所述用户输入改变所述多个对象的所述第二部分的选定对象的状态。所述第二计算设备可创建包括与所述选定对象有关的状态信息的更新,并把与所述选定对象有关的所述更新发送到所述第一计算设备。在一些实施方案中,服务器通过所述网络连接到所述多个计算设备。在此类实施方案中,所述第二计算设备可把与所述多个对象的所述第二部分的至少一个对象有关的更新发送到所述服务器,从而转发到所述多个计算设备中的其它计算设备。
[0039]一些实施方案包括一种所述第二计算设备从所述第一计算设备接收先前更新的方法。所述先前更新包括与所述第一计算设备控制的所述多个对象的所述部分的第一对象有关的状态信息。所述第二计算设备至少部分基于与所述第一对象有关的所述状态信息来产生并显示所述第一对象的第一视觉表示。视觉状态信息与所述第一对象和所述第一视觉表示相关。所述第二计算设备在所述先前更新之后接收来自所述第一计算设备的新更新。所述新更新包括状态信息。所述第二计算设备至少部分基于所述先前更新的所述状态信息来确定所述第一对象的预测状态信息。所述第二计算设备确定所述新更新的所述状态信息是否与所述第一对象有关,且当所述新更新的所述状态信息与所述第一对象有关时,所述第二计算设备把所述预测状态信息的至少一部分设置为等于所述新更新的所述状态信息的至少一部分。所述第二计算设备确定所述视觉状态信息和所述预测状态信息之间的差异。当所述差异大于第一阈值时,所述第二计算设备把所述视觉状态信息的至少一部分设置为等于所述预测状态信息的至少一部分。当所述差异小于所述第一阈值且大于第二阈值时,所述第二计算设备至少部分基于所述视觉状态信息和所述预测状态信息来确定混合状态信息,并把所述视觉状态信息的至少一部分设置为等于所述混合状态信息的至少一部分。所述第一阈值大于所述第二阈值。所述第二计算设备至少部分基于所述视觉状态信息来渲染所述第一对象的第二视觉表示;并在所述显示设备上显示所述第一对象的所述第二视觉表示。
[0040]一些实施方案包括一种用于多个计算设备的方法,所述多个计算设备通过网络彼此连接且每个执行包括多个对象的分布式模拟的部分。所述部分在所述多个计算设备中的第一个上执行,所述第一个计算设备控制所述多个对象的第一部分并把与所述多个对象的所述第一部分的至少一个对象有关的更新发送到所述多个计算设备中的第二个。所述部分在所述第二计算设备上执行,所述第二计算设备控制所述多个对象的第二部分且把与所述多个对象的所述第二部分的至少一个对象有关的更新发送到所述第一计算设备。所述第二计算设备渲染所述多个对象的所述第一部分的第一对象的第一视觉表示和所述多个对象的所述第二部分的第二对象的第一视觉表示。所述第一对象的所述第一视觉表示与视觉状态信息相关。所述第二计算设备通过用户输入设备接收改变所述第二对象的所述第一视觉表示的输入以及偶尔从所述第一计算设备接收所述第二计算设备可用以修改所述第一对象的所述第一视觉表示的更新。从所述第一计算设备接收到的每个所述更新包括与所述第一对象有关的状态信息。随着所述第二对象的所述第一视觉表示改变,所述第二计算设备偶尔通过所述网络把更新发送到所述第一计算设备。所述更新包括所述第一计算设备可用以修改所述第二对象的第二视觉表示的与所述第二对象有关的状态信息。所述第二计算设备偶尔产生用于所述第一对象的包括至少一个速度的预测状态信息。在所述第二计算设备上接收到每个所述更新之后,所述第二计算设备把所述预测状态信息设置为等于所述更新的所述状态信息。所述第二计算设备确定所述预测状态信息和与所述第一对象的所述第一视觉表示相关的所述视觉状态信息之间的差异。当所述差异大于第一阈值时,所述第二计算设备通过改变所述至少一个速度来更新所述预测状态信息。当所述差异大于第二阈值时,所述第二计算设备至少部分基于所述预测状态信息来修改与所述第一对象的第一视觉表示相关的所述视觉状态信息。所述第二计算设备至少部分基于所述视觉状态信息来重新渲染所述第二对象的所述第一视觉表示。
[0041]所述第一对象可具有类型,且所述第一和第二阈值可被存储在表中且与所述对象在所述表中的所述类型相关。在此类实施方案中,所述第二计算设备可在所述表中查阅所述第一和第二阈值。
[0042]当所述差异大于所述第二阈值时至少部分基于所述预测状态信息来修改与所述第一对象的所述第一视觉表示相关的所述视觉状态信息可包括:当所述差异大于第三阈值时,把所述视觉状态信息设置为等于所述预测状态信息。另一方面,当所述差异小于所述第三阈值且大于所述第二阈值时,所述第二计算设备可至少部分基于所述视觉状态信息和所述预测状态信息来确定混合状态信息,并把所述视觉状态信息设置为等于所述混合状态信息。在此类实施方案中,所述第三阈值大于所述第二阈值。
[0043]实施方案包括存储当被一个或多个处理器执行时执行一个或多个上述方法的计算机可执行指令的一种或多种计算机可读介质。例如,存储当被一个或多个处理器执行时执行用于执行分布式模拟的第一部分的第一计算设备的方法的计算机可执行指令的一种或多种计算机可读介质,所述第一部分控制对象。所述方法包括:执行所述分布式模拟的第二部分,所述第二部分产生可在第一显示设备上显示的所述对象的第一视觉表示。视觉状态与所述对象和所述第一视觉表示相关。所述视觉状态可包括至少一个参数值。所述方法还可包括至少部分基于从所述第一计算设备接收到的先前更新中包括的先前状态来产生所述对象的预测状态。所述先前状态可与所述对象的第二视觉表示相关。所述预测状态包括至少一个速度和至少一个参数值。所述方法还可包括从所述第一计算设备接收更新。所述更新可包括与所述对象的第三视觉表示相关的新状态。所述新状态可包括至少一个参数值。所述方法还可包括把所述预测状态的所述至少一个参数值设置为等于所述新状态的所述至少一个参数值和确定所述预测状态的所述至少一个参数值和所述视觉状态的所述至少一个参数值之间的差异。当所述差异大于第一阈值时,修改所述预测状态的所述至少一个速度。当所述差异大于第二阈值时,至少部分基于所述预测状态的所述至少一个参数值来修改所述视觉状态的至少一个参数值。所述方法还可包括至少部分基于所述视觉状态来渲染所述对象的第四视觉表示,并在所述第一显示设备上显示所述对象的所述第四视觉表
/Jn ο
[0044]所述预测状态可为第一预测状态,且所述差异可为第一差异。在此类实施方案中,方法还可包括至少部分基于所述预测状态的所述至少一个速度来产生第二预测状态。所述第二预测状态包括至少一个参数值。当所述第二差异大于第二阈值时,至少部分基于所述第二预测状态的所述至少一个参数值来修改所述视觉状态的所述至少一个参数值。所述方法还可包括至少部分基于所述视觉状态来渲染所述对象的第五视觉表示,并在所述第一显示设备上显示所述对象的所述第五视觉表示。[0045]当所述差异大于所述第二阈值时至少部分基于所述预测状态的所述至少一个参数值来修改所述视觉状态的所述至少一个参数值可包括:确定所述差异是否大于第三阈值。所述第三阈值大于所述第二阈值。当确定所述差异大于所述第三阈值时,把所述视觉状态的所述至少一个参数值设置为等于所述预测状态的所述至少一个参数值。另一方面,当确定所述差异小于所述第三阈值时,至少部分基于所述视觉状态的所述至少一个参数值和所述预测状态的所述至少一个参数值来确定混合状态。所述混合状态包括至少一个参数值。所述视觉状态的所述至少一个参数值被设置为等于所述混合状态的所述至少一个参数值。
[0046]实施方案包括一种实施包括多个对象的分布式模拟的系统。所述系统包括通过网络彼此连接的多个计算设备,每个计算设备被配置以执行所述分布式模拟的部分。所述多个计算设备的第一计算设备执行所述分布式模拟的第一部分,所述分布式模拟的第一部分控制所述多个对象的部分并把与所述多个对象的所述部分中至少一个对象有关的更新发送到所述多个计算设备中的第二个。所述第二计算设备可被配置以从所述第一计算设备接收包括与所述第一计算设备控制的所述多个对象的所述部分的第一对象有关的状态信息的先前更新。所述第二计算设备还可被配置以至少部分基于与所述第一对象有关的所述状态信息来产生所述第一对象的第一视觉表示,并在显示设备上显示所述第一视觉表示。所述第二计算设备具有与所述第一对象和所述第一视觉表示相关的视觉状态信息。所述第二计算设备还可被配置以从所述第一计算设备接收包括状态信息的新更新,所述新更新在所述先前更新之后已经被接收到。所述第二计算设备还可被配置以至少部分基于所述先前更新的所述状态信息来确定所述第一对象的预测状态信息,所述预测状态信息包括至少一个速度值。所述第二计算设备还可被配置以确定所述新更新的所述状态信息是否与所述第一对象有关,且当所述新更新的所述状态信息与所述第一对象有关时,把所述预测状态信息的至少一部分设置为等于所述新更新的所述状态信息的至少一部分。所述第二计算设备还可被配置以确定所述视觉状态信息和所述预测状态信息之间的差异。当所述差异大于第一阈值时,所述第二计算设备可修改所述预测状态信息的所述至少一个速度值。当所述差异大于第二阈值时,所述第二计算设备可至少部分基于所述预测状态信息来修改所述视觉状态信息。所述第二计算设备至少部分基于所述视觉状态信息来渲染所述对象的第二视觉表示,并在所述显示设备上显示所述对象的所述第二视觉表示。
[0047]在所述预测状态信息是第一预测状态信息的实施方案中,所述差异是第一差异,所述第二计算设备还可被配置以至少部分基于所述第一预测状态信息的所述至少一个速度来产生第二预测状态信息,并确定所述视觉状态信息和所述第二预测状态信息之间的第二差异。当所述第二差异大于所述第二阈值时,所述第二计算设备可至少部分基于所述第二预测状态信息来修改所述视觉状态信息。所述第二计算设备至少部分基于所述视觉状态信息来渲染所述对象的第三视觉表示,并在所述显示设备上显示所述对象的所述第三视觉表不。
[0048]在所述第二计算设备上执行的所述分布式模拟的所述部分可控制所述多个对象的第二部分。在此类实施方案中,所述第二计算设备还可被配置以把与所述多个对象的所述第二部分的至少一个对象有关的更新发送到所述第一计算设备。所述第二计算设备可被配置以通过用户接口设备接收用户输入(所述用户输入改变所述多个对象的所述第二部分的选定对象的状态)、创建包括与所述选定对象有关的状态信息的更新并把与所述选定对象有关的更新发送到所述第一计算设备。所述系统可包括通过所述网络连接到所述多个计算设备的服务器。所述第二计算设备可被配置以把与所述多个对象的所述第二部分的至少一个对象有关的更新发送到所述服务器,从而转发到所述多个计算设备中的其它计算设备。
【专利附图】

【附图说明】
[0049]本发明的方面将在结合附图考虑了下文详细描述之后变得明显,在整个附图中,相同的参考数字代表相同的部分,以及在附图中:
[0050]图1是用于分布式交互模拟的系统的方块图;
[0051]图2是示出在图1的系统的两个站之间共享的分布式交互模拟的本地表示的图;
[0052]图3是图1的系统的控制台的部分的方块图,示出了预测器-内插器模块和它们的互连;
[0053]图4是可由图1的系统的至少一部分执行的远程管理对象状态内插过程的流程图;
[0054]图5A是适于管理在不同的模式和条件下操作的第一示范性类型(称为全地形车类型)的示范性动态对象的标准和参数的表;
[0055]图5B是适于管理在不同的模式和条件下操作的第二示范性类型(称为飞行类型)的示范性动态对象的标准和参数的表;以及
[0056]图6是可实施图1的系统的游戏控制台中一个或多个的硬件环境和操作环境的图。
【具体实施方式】
[0057]当描述分布式模拟时,在本文中以举例的方式且为了便于讨论而使用计算机游戏的上下文。然而,本文描述的系统和方法的适用性不限于用于计算机游戏且可用于其它类型的分布式模拟。另外,对于所讨论的实施方案,不假设分布式时钟。相反,基于具有典型等待时间的持续更新流的高质量预测可用以产生分布式交互模拟的连贯呈现。如果等待时间在很短的时间间隔差别很大,那么此类假设的结果可降级,但是仍然可提供大体一致且令人满意的共享模拟。虽然本文描述的系统和方法可相对于在所有站具有相同帧速率和更新率的分布式模拟进行操作,但是这不是假定也不是必需的。因此,在所讨论的实施方案中,在每个站的分布式模拟的每个连续增量不对应于“现在”以外的特定的时间或时间戳,且即使由于上文在发明背景部分讨论的等待时间和限制,同时发生在现实世界中的更新也将会在短暂等待时间之后在所有参与站发生,一个站管理的对象所产生的更新的影响可能不能在一些其它站看到直到一些迭代之后。
[0058]通过非限定概述,接受关于分布式交互模拟的对象的远程控制、基于物理的模型的更新。在关于对象的预定条件下,确定、缩放脉冲或“速度凹凸(bump)”并把脉冲或“速度凹凸”添加到更新以形成对模拟对象的正确位置的当前预测。基于物理的模拟的每个后续迭代提供新的预测状态,直到接收到新的更新。维持单独的视觉模型以缓和预测或更新状态中的可见的不连续性。然而,视觉模型朝向当前预测不断收敛,其中视觉模型的新状态从之前的状态、它与当前预测的差异和关于代表的对象的某些预定标准和参数来确定。也与视觉模型相关联的是检测与其它对象尤其是抛射体的互动的碰撞系统。总的来说,这些特征提供(例如,当追赶或瞄准模拟车辆时)看上去比现有分布式交互模拟更真实和更正确的更美观的视觉呈现。
[0059]参看图1,分布式交互模拟系统100包括指定为用户(未示出)本地的站的本地站110,和多个远程站140,所有所述站都可通过网络120(例如,因特网)与服务器130通信。在示出的实施方案中,远程站140包括远程站140AU40B和140C。然而,这不是必需的且远程站140可包括任何数量的远程站。如下文所阐释,站110、140A、140B和140C可选择性地彼此通信。
[0060]使用分布式游戏系统的实例,服务器130是游戏网络服务器,从而允许在每个连接站的用户彼此发现并安排和参加游戏。
[0061]站110、140A、140B、140C中的每个站包括可分别实施为游戏控制台111、142、144、146的计算设备。以非限制性实例的方式,游戏控制台111、142、144、146可各自实施为由华盛顿州雷蒙德的微软公司制造的Xbox360。另外,站110、140A、140B、140C中的每个站分别包括控制器113、143、145、147。虽然站110、140A、140B、140C中的每个站也包括显示器,但是图1中只示出了本地站110的显示器112。本地站110的控制台111通过连接121与服务器130通信。远程站140的控制台142、144、146分别通过连接122、123、124与服务器130通信。
[0062]在一些实施方案中,控制台111可分别通过通信信道152、153、154直接与控制台142、144、146中的每一个通信,而控制台111、142、144、146在诸如计算机游戏的分布式交互模拟中连接在一起。在其它实施方案中,服务器130处理站110、140A、140B、140C之间的通信。此类实施方案也可适合具有许多站的非常大的模拟,因为上传带宽通常比下载带宽更有限,而从本地站110到远程站140中每个站的通信量与从远程站140到本地站110的通信量大致相同。通过允许服务器130从本地控制台111有效地“播放”更新到远程控制台142、144、146中每一个,从控制台111缓解相当大的传输负担。然而,为简化进一步讨论的目的,我们将集中于两个控制台111和142且只考虑它们之间的通信而不管是否由服务器130调解。然而,如本领域那些普通技术人员所理解,控制台111、142、144、146中的任何对之间的通信可用类似方式来操作。
[0063]因此,在图2中,示出分布式交互模拟的一些内部运作。控制台111和142中的每一个把分布式模拟的对应的本地表示保持为数据。控制台111上保持的本地表示示出为本地模拟200。控制台142上保持的本地表示示出为本地模拟250。分布式模拟包括静态对象和动态对象。本地模拟200、250中的每一个包括分布式模拟的静态和动态对象中每一个的单独的对象。例如,本地模拟200包括对应于本地模拟250中静态对象251的静态对象201。类似地,本地模拟200包括分别对应于本地模拟250中静态对象252、253、254的动态对象 202、203、204。
[0064]控制台111、142、144、146中的每一个负责控制特定对象。例如,控制台111处的玩家可使用控制器113来向本地模型控制模块220提供输入,从而控制动态对象202 (例如,模拟车辆)。在这个实例中,本地模型控制模块220也控制动态对象204,动态对象204例如可为地雷、抛射体、爆炸、盒子或其它动态对象。通常包括地形和一般建筑物的静态对象201是静态的且不受控制器113控制。偶尔(例如,定期),本地模型控制模块220 (例如,通过信道152)把更新152A发送到远程控制台142中的远程模型控制模块280。远程模型控制模块280负责控制本地模拟250中的动态对象252和254,动态对象252和254与本地模拟200中的动态对象202和204相同。
[0065]对于控制器111负责的动态对象(例如,动态对象202和204)的至少一部分中的每一个,每个更新152A可包括动态对象的识别、动态对象的类型信息和所识别的动态对象的状态信息,所述状态信息可包括动态对象的操作模式(例如,“受控制”或“未受控制”)的指示。在一些实施方案中,所述信息可被包括在一个或多个更新中。
[0066]相反,本地模型控制模块270接收来自游戏控制器143的输入以管理动态对象253 (例如,另一车辆)。从本地模型控制模块270发送到远程模型控制模块230的更新152B用以控制本地模拟200中动态对象的至少一部分。在这个实例中,更新152B控制对象203,借此,控制台142的对象253 (例如,用户“驾驶”的车辆)作为对象203出现在具有控制台111的站110上。
[0067]对于控制器142负责的动态对象(例如,动态对象253)的至少一部分中的每一个,每个更新152B可包括动态对象的识别、动态对象的类型信息和所识别的动态对象的状态信息,所述状态信息可包括动态对象的操作模式(例如,“受控制”或“未受控制”)的指示。在一些实施方案中,所述信息可被包括在一个或多个更新中。
[0068]本地模拟250中的静态对象251对应于本地模拟200中的对象201。
[0069]图3示出当远程模型控制模块230在预测器模块310上接收来自控制台142的更新152B时控制台111的远程模型控制模块230的内部运作300。
[0070]预测器模块310获得最近接收到的更新152B并把它与规则表321中对应更新152B中代表的对象(例如,动态对象203)的预定值作比较。为了便于说明,最近接收到的更新代表动态对象203。如果在本地视觉状态323和最近的远程模拟更新之间存在足够的差异,那么从所述差异和规则表321中关于动态对象203的进一步的信息来确定脉冲或“凹凸”,且所述脉冲或“凹凸”被应用到动态对象203的物理模型。这有效地增大了用以推断动态对象203在后续迭代中的未来状态的某些速度矢量。这在下文结合图4、图5A和图5B更详细地描述。预测器模块310为动态对象203运行详细的物理模型,从而允许在本地模拟200的后续迭代中更好地进行预测。被应用到本地物理表示的凹凸有点类似于图像处理中的“锐化”,其中不连续性增强了一定量。在这个情况下,凹凸被作为脉冲注入物理模型,且它的效果将只在本地模拟200的后续迭代中看得见。当新的更新152B到达时,本地模拟200的下一迭代使用如在新的更新中表示的远程管理动态对象253的状态,且可添加速度凹凸以产生新的预测状态311。在本地模拟200的后续迭代中,详细物理模拟从当前预测状态311进行推断以获得新的预测状态311。
[0071]然而,如果本地预测状态311直接用以驱动显示器112,那么每次新的远程模拟更新152B到达时本地预测状态311的流畅动作中可能有不连续性,因为新的远程模拟更新152B可能包括之前的更新152B没有预料到的信息。
[0072]为了解决这个问题,内插器模块320试图使用规则表321来以美观的方式把本地视觉状态323移向当前本地预测状态311。本地视觉状态323的之前的值被用作基础,使得通常当新的更新152B不连续地影响本地预测状态311时,由用于显示器112的渲染模块350产生的对象的图像示出美观的动作,其中通常带有被伪装的不连续性。因此,视觉状态323随时间推移不断收敛成当前预测状态311。
[0073]内插器模块320也维持局部碰撞状态322。然而,不是渲染对象供玩家查看,而是对象的碰撞量随视觉模型逻辑移动。这改善了使用抛射武器模拟瞄准和车辆碰撞的真实性。世界上对象的“硬度”是适当的且对应于对象的位置。例如,对象可在看到它的地方被射击(如由抛射体碰撞检测模块340所检测),或者在复杂的内插器模块310中,看上去撞到障碍物的车辆损坏所述障碍物(或者被障碍物损坏)且可从所述障碍物反弹,从而影响本地视觉状态323。
[0074]对象运动的外观可由凹凸改善,所述凹凸被预测器模块310根据规则表321中用于对象的标准和参数注入物理模型,并且标准和参数也被包括在这里供内插器模块320使用,下文结合图4、图5A和图5B进行了进一步的详细描述。
[0075]图4示出了可由远程模型控制模块230 (参看图2和3)执行的过程400。在方块401,开始本地模拟200的迭代,其中动态对象203由本地模型控制模块270远程管理。
[0076]接下来,在决定方块402,关于是否已经从本地模型控制模块270接收到用于动态对象203的新的更新152B进行确定。如果在决定方块402的决定是“是”,那么已接收到用于动态对象203的新的更新152B,且在方块403,预测状态311被设置为等于更新中提供的状态。然后,远程模型控制模块230进行到方块405。否则,如果在决定方块402的决定是“否”,那么没有接收到新的更新152B,且在方块404,为动态对象203运行详细的物理模型以提供用于预测状态311的新值。然后,远程模型控制模块230进行到方块405。
[0077]在方块405,计算新的预测状态311和当前视觉状态323之间的差异。
[0078]在过程400的之前的迭代中,可能已经设置了本地视觉状态323,但是如果未初始化,那么可用预测状态311的当前值来设置本地视觉状态323。即使没有这样做,那么过程400也将有意地迅速收敛到用于视觉状态323的适当值。
[0079]然后,远程模型控制模块230进行到决定方块406。当在方块402上已经有新的更新152B且在方块405上计算出的差异超过用于指示动态对象203的当前操作模式的一个或多个值时,在决定方块406上的决定是“是”。当在决定方块406上的决定是“是”时,在方块407,脉冲或“速度凹凸”(或“凹凸”)被应用到预测状态。这并不移动动态对象203的预测“物理”表示,但改变表示的速度以在方块404在物理模型的未来迭代中产生不同结果。然后,远程模型控制模块230进行到决定方块408。
[0080]当在决定方块406的决定是“否”时,远程模型控制模块230进行到决定方块408。
[0081]不管在方块407是否应用凹凸,在决定方块408,过程继续,其中关于差异是否大于关于动态对象203和它相关本地预测状态311的规则表321的部分中的预定“大”值进行检查。图5A和图5B以及以下相关讨论中提供了在决定方块408执行的检查的更详细描述。如果在决定方块408确定差异“大”,那么在决定方块408的决定是“是”,且过程在方块409继续。另一方面,如果在决定方块408的决定是“否”,那么过程在决定方块410继续。
[0082]在方块409,用于视觉状态323的新值被确定为预测状态311的当前值,且对象的呈现将“偏转”(例如,立即跳转)到新的位置。然后,在方块412,把这个新确定的值应用到视觉状态323。
[0083]在一些实施方案中,在方块412,当对象模型适应新的状态时,进一步修改更新的视觉状态,例如,可通过地形跟踪过程来调整车辆的车轮,以保持车轮明显与地面接触,或者当车辆“跃起”(即,当新的视觉状态定义的位置和方向把车轮放置得足够高于地形)时使车轮似乎从暂停适当地挂起。
[0084]至少在分层根上,与新确定的视觉状态323基本一致的是局部碰撞状态322。SP,技术人员定义来检测对障碍物或抛射体的影响的碰撞量与技术人员提供来渲染对象的视觉模型具有基本上期望的关系。通常,碰撞量相对于渲染模块350提供的视觉模型大大简化,以例如在抛射体碰撞检测模块340中使对象对地形、对象对对象和对象对抛射体干扰的计算大幅简化。
[0085]在一些实施方案中,局部碰撞状态322可由内插器模块320使用甚至迭代地使用,以例如在方块412调整视觉状态,从而确保对象似乎并不渗透地形。
[0086]最后,用于对视觉状态323和碰撞状态322进行这些额外的调整的过程可根据对象的每个种类或类型而不同,且实质上是美学建模决定。
[0087]在对视觉状态323进行调整结束之后,在方块413,关于动态对象203的过程400结束。
[0088]然而,如果在决定方块408,检查发现差异不“大”(即,在决定方块408的决定是“否”),那么在决定方块410,进行检查以确定差异是否大于预定“小”值,其中适当“小”值是由动态对象203的预测状态311选自规则表321。再者,图5A和图5B以及下文相关讨论中提供了在决定方块408上执行的检查的更详细描述。如果差异大于“小”值,那么在决定方块410的决定是“是”,且在方块411,用于视觉状态323的新值被确定为当前视觉状态323和当前预测状态的“混合”(或加权平均),其中关于动态对象203的预测状态的加权和其它限制来自规则表321,规则表321中具有不同值来用于比较并操纵视觉状态323的位置和旋转部分。然后,在方块412应用用于视觉状态323的新值。
[0089]但是,如果差异不超过在决定方块410检查的“小”值,那么在决定方块410的决定是“否”,并且不进行修改且视觉状态323在这个迭代中保持不变。在决定方块410执行的关于小差异的测试或检查视觉上促使对象“停住”。在这个情况下,在方块413,用于关于动态对象203的这个迭代的过程400结束。
[0090]在不同实施方案中,或者甚至只是对于不同类型(或种类)的对象,或者对于同一对象但是在不同模式下,在决定方块406、408和410执行的关于在方块405确定的差异的量值的测试或检查可使用集体测量,或可只分析如规则表321中所反映的差异的某些部分。例如,位置的线性测量难以与旋转(方向)的测量作比较。因此,状态的位置和旋转部分常分开比较,且在一些实施方案中,如果任一部分超过每个部分的对应预定值,那么确定整个差异已超过。在一些实施方案中,或对于一些对象,位置的其它部分可被认为很重要且在规则表321中被给定特定的值。例如,对于跳跃的两足动物(例如,人、外星人等),他们的地面轨迹可能需要对差异的更严格限制,地面轨迹即他们在χ-y平面上的位置而不是他们相对于χ-y平面的高度。对于诸如可跳跃的两足动物的对象,单独的预定值可更严格地从差异中投影在x-y平面上的所述部分触发,其中具有用于差异的整体位置部分的整体较宽松(即,较大)的预定值(即,在xyz平面上)。
[0091]图5A和图5B各自提供规则表321的不范性部分。图5A包括用于第一动态对象类型(称为模拟全地形车(“ATV”)类型对象500)的示范性标准和参数。图5B包括用于第二动态对象类型(称为飞行类型对象530)的示范性标准和参数。图5A和图5B中提供的标准和参数例如是实施且不意欲为限制性的。另外,规则表321可包括用于不同和/或另外的动态对象类型的部分。规则表321可被实施为单个表或多个表。
[0092]参看图5A,在一些实施方案中,规则表321的部分510被指定用于模拟全地形车(“ATV”)类型对象500对象,且包括对应于在决定方块406、408和410执行的测试或检查的若干预定值和用于在方块411修改视觉状态323 (例如,混合)和在方块407修改预测状态311的参数,所有的预定值和参数都适于供远程模型控制模块230在过程400中处理例如动态对象203的ATV类型对象时使用。
[0093]在决定方块408中使用用于ATV类型对象500的标准511 (例如,用于动态对象203)。在决定方块408关于来自方块402的差异是否大于“大”值的确定被分成三个比较。第一比较是差异的xyz部分的量值是否大于3个世界单位(“WU”)的值(在这个示范性实施中,用类似于米或英尺但在模拟中为方便表示而选择的“世界单位”进行线性测量,在这些模拟实例中,一个WU对应于现实世界中大约2.5m)。第二比较是差异的xy部分的量值是否大于100WU的值。注意,如果xy部分大于100WU,那么当然来自第一比较的xyz部分大于三。这个比较可充当用于禁止对ATV类型对象500进行xy比较的程序员的速记。如果xy差异可用于这个类型的对象,那么用于xy差异的值将需要小于用于xyz差异的值。第三比较是差异的角部分是否大于180度。如果这三个比较中任何比较发现差异的对应部分超过标准511中规定的值,那么在决定方块408的确定是差异超过“大”值(或者在决定方块408的决定是“是”)且在方块409偏转将随之而来。
[0094]规则表321的部分510的列521和522提供不同预定值和参数,供类型ATV的对象(例如,ATV类型对象500)被控制与未被控制的情况下使用。列521提供当类型ATV的对象被控制时使用的预定值和参数,且列522提供当类型ATV的对象未被控制时使用的预定值和参数。在这个实施方案中,当玩家的输入(例如,来自游戏控制器143)影响本地模型控制模块(例如,本地模型控制模块270)时,或者如之前所讨论,如果Al或其它操作员过程影响模型,那么对象“被控制”。在“被控制”或“未被控制”很重要的情况下,远程模拟更新(诸如更新152B)将指示操作模式。
[0095]在决定方块410执行的测试或检查中使用用于ATV类型对象500的标准512 (例如,对于动态对象203)。在决定方块410关于来自方块402的差异是否大于“小”值的确定被分成两个比较,其中用于比较的值来自列521或522,这取决于最近的远程模拟更新152B中指示的操作模式。第一比较是差异的xyz部分或旋转(方向)部分的量值是否分别大于值0.5WU或45度。在这个实例中,动态对象203 “被控制”或“未被控制”并不重要,因为在列521和522中的值相同。注意,为了有效,值(0.5WU、45度)必须各自比标准511中对应的值(3WU、180度)小。第二比较是当对象的预测状态311移动得足够缓慢(例如,小于
0.lWU/s和8度/s)时对差异使用更严格公差(例如,当处于“被控制”模式时,0.03WU、4度,或者当处于“未被控制”模式时,0.03WU或6度)的混合比较。因此,如果差异太大,那么决定方块410触发在方块411的混合,但是所述比较可取决于速度。移动得更加缓慢的对象可要求较小的差异。
[0096]如果在方块411需要混合,那么用来自部分513的关于动态对象203的参数和限制执行混合。混合把来自方块405的差异的小部分添加到视觉状态323以在方块412获得新的视觉状态,但是所述小部分应该是什么可具有足够美观的效果且可需要在不同情况下进行调整。在这个实施方案中,对于ATV类型对象500,界定速度上限阈值和下限阈值(速度上限阈值和下限阈值可根据操作模式而不同,但在这个实例中并不这样)。对于等于或低于速度下限阈值的速度,添加到视觉状态323的关于差异的位置和旋转部分的所述小部分被给出作为标记为“下限阈值处的差异的小部分”的条目。类似地,对于等于或高于速度上限阈值的速度,所述小部分取自标记为“上限阈值处的差异的小部分”的条目。对于速度上限阈值和下限阈值之间的速度,所述小部分可根据上限和下限阈值小部分内插。例如,对于预测具有速度5WU/s和旋转O度/s的处于“被控制”模式的动态对象203,用于位置的混合的差异的所述小部分可使用以下公式来计算:
[0097](预测速度-速度下限阈值)/(速度上限阈值-速度下限阈值)*(上限阈值处的小部分-下限阈值处的小部分)+ (下限阈值处的小部分)。
[0098]使用以上公式,在以上实例中,用于位置的混合的差异的小部分是0.4:
[0099](5-0) / (10-0) * (0.03-0.05) + (0.05) = 5/10* (-0.02) + (0.05) = 0.04。
[0100]当混合旋转时用于待应用的小部分的类似计算可使用指示旋转的值,但是在这个情况下,因为旋转速度等于或低于速度下限阈值(O),所以直接使用给定为0.04的下限阈值处的差异的小部分。
[0101]对混合的最后的限制定义为对预测状态311的最小接近速率。其中,如果预测状态311的速度等于或低于下限阈值,那么需要当前视觉状态323朝向预测状态311的特定最小收敛速度。为当预测状态的速度等于或大于上限阈值时提供对应的值,并且再次,对于在上限和下限阈值之间的速度,可用类似于上述方式的方式内插部分513中给定的所需最小收敛速度参数。
[0102]一旦已经确定适当的小部分,它们到视觉状态323的位置和旋转的应用借助于笛卡尔内插法用于位置部分以及借助于球形线性内插法(也称为为“Slerp”)用于旋转部分。Slerp实施可以使用四元数表示用于旋转,但这不是严格要求的。
[0103]在决定方块406中使用用于ATV类型对象500的标准514 (例如,对于动态对象203)。在决定方块406关于是否在方块402已经使用新的更新和来自方块405的差异是否“足够”以保证凹凸的确定是混合比较,其中用于比较的值来自列521或522,这取决于最近的远程模拟更新152B中指示的操作模式。在这个实施方案中,正如上述的混合比较,执行测试来看对象的预测状态311是否移动得比阈值快(在部分514,标记为“如果速度>”)或者差异(标记为“或者xyz位置或旋转差异”)是否足够大。如果在决定方块406的任何比较发现将要超过的对应参数,那么决定方块406确定差异的确“足够”且在方块407执行凹凸。
[0104]在部分515中给定用于凹凸的参数。在这个实施方案中,凹凸是差异乘以比例因子(标记为“凹凸由差异X”),所述比例因子有效地具有秒的倒数的单位,因为凹凸的值是在方块407添加到预测状态311的速度。一旦用于凹凸的值以这种方式来确定,它就还受制于部分515的参数内标记为“但不小于”和“不大于”的限制,从而允许设计者限制凹凸的效果。一般说来,如果允许凹凸大,那么凹凸的效果可能视觉上不合适。然而,当凹凸本来就小或者以其它方式被限制时,结果是实质改善了远程模型控制模块230控制的对象的美观行为。[0105]通过进一步举例,图5B示出规则表321中对应于飞行类型对象530 (图2示出的本地模拟200和250中未示出的对象类型)的部分540。返回到图5B,在部分540中,列551和552各自包括分别对应于与图5A的列521和522中包括的列相同控制模式的列。标准541,542和544分别以与标准511,512和514相同的方式来使用。部分543和545中的参数分别以与部分513和515中的参数相同的方式来使用。规则表321中提供的标准和参数的差异可例如由设计者凭经验设置。标准中的每一个确定哪些条件将使过程400的某些元素应用,且每个参数可影响视觉结果。
[0106]计算设备
[0107]图6是游戏控制台111、142、144、146中一个或多个的实施可结合硬件和操作环境实践的图。图6的描述旨在提供可实践实施的合适的计算机硬件和合适的计算环境的简短的一般的描述。虽然不是必需的,但是实施是在由处理器执行的诸如程序模块的计算机可执行指令的一般上下文中描述的。通常,程序模块包括执行特定任务或实施特定抽象数据类型的例程、程序、对象、组件、数据结构等。
[0108]此外,本领域那些技术人员将了解,实施可使用其它计算机系统配置来实践,包括手持设备、多处理器系统、基于微处理器的或可编程的消费电子产品、网络PC、小型计算机、大型计算机等。实施也可在分布式计算环境中实践,其中任务由通过通信网络连接的远程处理设备执行。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备中。
[0109]图6的示范性硬件和操作环境包括呈计算设备12形式的通用计算设备。计算设备12可为常规游戏控制台、移动电话、平板计算机、常规计算机、分布式计算机或任何其它类型的计算机。游戏控制台111、142、144、146可各自与计算设备12基本上相同。然而,这并不是必需的。
[0110]计算设备12包括系统存储器22、处理单元21和把包括系统存储器22的各种系统组件操作性地耦接到处理单元21的系统总线23。可能只有一个或者可能有超过一个的处理单元21,使得计算设备12的处理器包括单一中央处理单元(“CPU”),或通常被称为并行处理环境的多个处理单元。当使用多个处理单元时,处理单元可能是异构的。以非限制性实例的方式,所述异构处理环境可包括常规CPU、常规图形处理单元(“GPU”)、浮点单元(“FPU”)、它们的组合等。
[0111]系统总线23可为若干类型的总线结构中的任何总线结构,包括存储器总线或存储器控制器、外围总线和使用各种总线结构中的任一的本地总线。系统存储器22也可简单地称为存储器,且包括只读存储器(ROM) 24和随机存取存储器(RAM) 25。包括诸如在启动期间帮助在计算设备12中的元件之间传递信息的基本例程的基本输入/输出系统(BIOS) 26存储在ROM 24中。计算设备12还包括用于从硬盘(未示出)读取或写入所述硬盘的硬盘驱动器27、用于从移动磁盘29读取或写入所述移动磁盘的磁盘驱动器28和用于从诸如CDROM、DVD或其它光学媒体的移动光盘31读取或写入所述移动光盘的光盘驱动器30。
[0112]硬盘驱动器27、磁盘驱动器28和光盘驱动器30分别由硬盘驱动器接口 32、磁盘驱动器接口 33和光盘驱动器接口 34连接到系统总线23。所述驱动器和它们相关的计算机可读媒体提供对计算机可读指令、数据结构、程序模块和计算设备12的其它数据的非易失性存储。本领域那些技术人员应理解,示范性操作环境中可使用可存储计算机可访问的数据的任何类型的计算机可读媒体,诸如盒式磁带、闪存卡、固态存储器设备(“SSD”)、USB驱动器、数字视频盘、伯努利墨盒、随机存取存储器(RAM)、只读存储器(ROM)等。如对于本领域那些普通技术人员明显的,硬盘驱动器27和处理单元21可访问的其它形式的计算机可读媒体(例如,移动磁盘29、移动光盘31、闪存卡、SSD、USB驱动器等)可被认为是系统存储器22的组件。
[0113]若干程序模块可存储在硬盘驱动器27、磁盘29、光盘31、R0M24或RAM 25上,包括操作系统35、一个或多个应用程序36、其它程序模块37和程序数据38。用户可通过诸如键盘40和指针设备42的输入设备把命令和信息输入计算设备12。参看图1,输入设备包括控制器113、143、145、147。输入设备的非限制性实例包括麦克风、操纵杆、游戏垫、卫星天线、扫描仪、触摸敏感设备(例如,手写笔、触摸屏、触摸板等)、视频摄像头、深度摄像头等。这些和其它输入设备常通过耦接到系统总线23的串行接口 46连接到处理单元21,但也可通过其它接口连接,诸如并行端口、游戏端口、通用串行总线(USB)或无线接口(例如,蓝牙接口)。
[0114]显示器47或其它类型的显示设备(例如,图1示出的显示器112)也可通过诸如视频适配器48的接口连接到系统总线23。显示器112可实施为电视、显示屏、触摸屏等。除了显示器47以外,计算机通常包括其它外围输出设备(未示出),诸如扬声器、打印机和提供触觉和/或其它类型的物理反馈的触觉设备(例如,力反馈游戏控制器)。
[0115]上文所述的输入设备可操作以接收用户输入和选择。输入和显示设备一起可描述为提供用户接口。
[0116]计算设备12可使用到诸如远程计算机49的一个或多个远程计算机的逻辑连接来在网络环境中操作。如上文所阐述,游戏控制台111、142、144、146中的两个或更多个可通过网络120选择性地彼此连接。这些逻辑连接由耦接到计算设备12或计算设备12的部分的通信设备(作为本地计算机)来实现。实施不限于特定类型的通信设备。远程计算机49可为另一计算机、服务器、路由器、网络PC、客户端、存储器存储设备、对端设备或其它公共网络节点,且通常包括上文相对于计算设备12描述的许多或所有元件。远程计算机49可连接到存储器存储设备50。图6示出的逻辑连接包括局域网(LAN)51和广域网(WAN)52。所述网络环境在办公室、企业范围内的计算机网络、内联网和互联网中很常见。
[0117]本领域那些普通技术人员将理解,LAN可通过使用电话网络、有线网络、蜂窝网络或电源线上的载波信号的调制解调器连接到WAN。所述调制解调器可通过网络接口(例如,串行接口或其它类型的接口)连接到计算设备12。另外,许多笔记本计算机可通过蜂窝数据调制解调器连接到网络。
[0118]当用于LAN-网络环境中时,计算设备12通过网络接口或适配器53 (—种类型的通信设备)连接到局域网51。当用于WAN-网络环境中时,计算设备12通常包括调制解调器54( —种类型的通信设备)或用于通过诸如因特网的广域网52建立通信的任何其它类型的通信设备。可能是内部或外部的调制解调器54通过串行接口 46连接到系统总线23。在网络环境中,相对于个人计算设备12或它的部分示出的程序模块可存储在远程计算机49和/或远程存储器存储设备50中。应理解,示出的网络连接是示范性的,且可使用它的其它构件和用于在计算机之间建立通信连接的通信设备。
[0119]本文以特定举例的方式且通过抽象的方式提供了计算设备12和相关组件以促进所公开概念的高层次的视图。实际的技术设计和实施可在维持所公开概念的整体性质的同时基于特定实施而改变。
[0120]在一些实施方案中,系统存储器22存储当被一个或多个处理器执行时使一个或多个处理器执行过程400的所有或部分的计算机可执行指令。所述指令可存储在一个或多个非临时性计算机可读媒体上。
[0121]正如所有此类系统,系统的特定特征、用户接口的细节和过程的执行可例如取决于用以实施系统的架构、所选服务器的操作系统、所选网络的带宽和其它属性和编写的软件代码。根据本教导,本文具体示出并描述的所述实施方案的各种另外的修改对于本领域那些普通技术人员将变得明显。
[0122]上述实施方案描述了不同其它组件中包括的不同组件或与不同其它组件连接的不同组件。应理解,所述架构仅仅是示范性的,且实际上可实施实现相同的功能的许多其它架构。在概念意义上,实现相同的功能的组件的任何设置被有效地“关联”,使得实现所期望的功能。因此,本文中组合来实现特定功能的任何两个组件可视为彼此“相关”,使得实现期望功能,而不管架构或中间组件。同样地,如此相关的任何两个组件也可视为彼此“可操作地连接”或“可操作地耦接”以实现所期望的功能。
[0123]虽然已示出并描述了本发明的特定实施方案,基于本文的教导,可在不脱离本发明和它的更广泛方面的情况下进行改变和修改对于本领域那些技术人员将变得明显,因此,所附权利要求书将把所有所述改变和修改包括在它们的范围中如包括在本发明的真正的精神和范围中。此外,应理解,本发明仅由所附权利要求书定义。本领域那些技术人员将理解,通常本文使用的术语,特别是所附权利要求书(例如,所附权利要求书的主体)中使用的术语,一般旨在为“开放性”术语(例如,术语“包括”应理解为“包括但不限于”,术语“具有”应理解为“至少具有”,术语“包括”应理解为“包括但不限于”等)。本领域那些技术人员还将理解,如果计划特定数量的引入权利要求记载,所述意图将在权利要求中明确记载,且在缺乏所述记载的情况下,不存在所述意图。例如,为了帮助理解,以上所附权利要求书可包括使用介绍性短语“至少一个”和“一个或多个”来引入权利要求记载。然而,所述短语的使用不应理解为暗示不定冠词“一个(a/an) ”引入的权利要求记载把包括所述引入的权利要求记载的任何特定权利要求限制为只包括一个所述记载的发明,即使当相同权利要求包括介绍性的短语“一个或多个”或“至少一个”和诸如“一个(a/an) ”的不定冠词(例如,“一个(a/an)”通常应理解为意指“至少一个”或“一个或多个”);这同样适用于用以引入权利要求记载的定冠词的使用。另外,即使明确叙述了特定数量的引入的权利要求记载,本领域那些技术人员将认识到,所述叙述应通常理解为意指至少所记载的数量(例如,只记载“两个记载”而没有其它修改,通常意指至少两个记载,或者两个或更多个记载)。
[0124]因此,本发明仅由所附的权利要求书限制。
【权利要求】
1.一种用于在多个计算设备实质上同时呈现分布式模拟的方法,所述多个计算设备包括执行所述分布式模拟的第一部分的第一计算设备,所述第一部分控制对象,所述方法包括: a)在所述多个计算设备中的第二个上执行所述分布式模拟的第二部分,所述第二部分产生可在第一显示设备上显示的所述对象的第一视觉表示,所述第二计算设备包括与所述对象和所述第一视觉表示相关的视觉状态,所述视觉状态包括至少一个参数值,所述第二计算设备已经从所述第一计算设备接收到包括与所述对象的第二视觉表示相关的先前状态的先前更新; b)至少部分基于所述先前状态在所述第二计算设备上产生所述对象的预测状态,所述预测状态包括至少一个速度和至少一个参数值; c)在所述第二计算设备上从所述第一计算设备接收更新,所述更新包括与所述对象的第三视觉表示相关的新状态,所述新状态包括至少一个参数值; d)在所述第二计算设备上把所述预测状态的所述至少一个参数值设置为等于所述新状态的所述至少一个参数值; e)所述第二计算设备确定所述预测状态的所述至少一个参数值和所述视觉状态的所述至少一个参数值之间的差异; f)当所述差异大于第一阈值时,所述第二计算设备修改所述预测状态的所述至少一个速度; g)当所述差异大于第二阈值时,所述第二计算设备至少部分基于所述预测状态的所述至少一个参数值来修改所述视觉状态的至少一个参数值; h)所述第二计算设备至少部分基于所述视觉状态渲染所述对象的第四视觉表示;和 i)所述第二计算设备在所述第一显示设备上显示所述对象的所述第四视觉表示。
2.如权利要求1所述的方法,其中所述预测状态是第一预测状态,所述差异是第一差异,且所述方法还包括: 所述第二计算设备至少部分基于所述预测状态的所述至少一个速度来产生第二预测状态,所述第二预测状态包括至少一个参数值; 当所述第二差异大于所述第二阈值时,所述第二计算设备至少部分基于所述第二预测状态的所述至少一个参数值来修改所述视觉状态的所述至少一个参数值; 所述第二计算设备至少部分基于所述视觉状态来渲染所述对象的第五视觉表示;和 所述第二计算设备在所述第一显示设备上显示所述对象的所述第五视觉表示。
3.如权利要求1所述的用于所述第一计算设备在第二显示设备上显示所述对象的所述第三视觉表示的方法,其中实质上与所述第一计算设备在所述第二显示设备上显示所述对象的所述第三视觉表示同时,所述对象的所述第四视觉表示由所述第二计算设备在所述第一显示设备上显示。
4.如权利要求1所述的方法,其还包括: 所述第二计算设备从所述第二计算设备可访问的存储设备获得所述第一阈值。
5.如权利要求4所述的方法,其中所述对象具有类型,以及 所述第一阈值被存储在所述存储设备上存储的表中,所述第一阈值与所述对象在所述表中的所述类型相关。
6.如权利要求1所述的方法,其中所述对象具有类型, 所述新状态的所述至少一个参数值包括至少一个速度,以及 所述第二计算设备修改所述预测状态的所述至少一个速度包括:获得与所述对象的所述类型相关的凹凸值,和根据所述凹凸值、所述差异和所述新状态的所述至少一个速度来计算所述预测状态的所述至少一个速度。
7.如权利要求1所述的方法,其中所述视觉状态的所述至少一个参数值包括至少一个速度, 所述预测状态的所述至少一个参数值包括至少一个速度,以及 确定所述预测状态的所述至少一个参数值和所述视觉状态的所述至少一个参数值之间的所述差异包括:确定所述预测状态的所述至少一个速度和所述视觉状态的所述至少一个速度之间的差异。
8.如权利要求7所述的方法,其中所述新状态的所述至少一个参数值包括至少一个速度,以及 所述预测状态的所述至少一个速度被设置为等于所述新状态的所述至少一个速度。
9.如权利要求1所述的方法,其中所述视觉状态的所述至少一个参数值包括位置信息和方向信息中的至少一个; 所述预测状态的所述至少一个参数值包括位置信息和方向信息中的至少一个;以及 确定所述预测状态的所述至少一个参数值和所述视觉状态的所述至少一个参数值之间的所述差异包括:确定所述预测状态的位置信息和方向信息中的所述至少一个和所述视觉状态的位置信息和方向信息中的所述至少一个之间的差异。
10.如权利要求9所述的方法,其中所述新状态的所述至少一个参数值包括位置信息和方向信息中的至少一个,以及 所述预测状态的位置信息和方向信息中的所述至少一个被设置为等于所述新状态的位置信息和方向信息中的所述至少一个。
11.如权利要求9所述的方法,其中当所述差异大于第二阈值时至少部分基于所述预测状态的所述至少一个参数值来修改所述视觉状态的所述至少一个参数值还包括: 确定所述差异是否大于第三阈值,所述第三阈值大于所述第二阈值;和 当确定所述差异大于所述第三阈值时,把所述视觉状态的位置信息和方向信息中的所述至少一个设置为等于所述预测状态的位置信息和方向信息中的所述至少一个。
12.如权利要求11所述的方法,其中所述对象具有类型, 所述第三阈值被存储在表中且与所述表中的所述对象类型相关,以及 所述方法还包括所述第二计算设备从所述表获得所述第三阈值。
13.如权利要求11所述的方法,其中当所述差异大于所述第二阈值时至少部分基于所述预测状态的所述至少一个参数值来修改所述视觉状态的所述至少一个参数值还包括: 当所述差异小于所述第三阈值时,所述第二计算设备确定混合状态,所述混合状态至少部分基于所述视觉状态的位置信息和方向信息中的所述至少一个和所述预测状态的位置信息和方向信息中的所述至少一个,所述混合状态包括位置信息和方向信息中的至少一个,以及 把所述视觉状态的位置信息和方向信息中的所述至少一个设置为等于所述混合状态的位置信息和方向信息中的所述至少一个。
14.如权利要求13所述的方法,其中所述对象具有类型,以及 所述混合状态是至少部分基于与所述对象的所述类型相关的一个或多个参数值来确定的。
15.如权利要求11所述的方法,其中所述对象具有类型, 所述第二和第三阈值被存储在表中且与所述表中的所述对象类型相关,以及 所述方法还包括所述第二计算设备从所述表获得所述第二和第三阈值。
16.如权利要求9所述的方法,其中当所述差异大于所述第二阈值时至少部分基于所述预测状态的所述至少一个参数值来修改所述视觉状态的所述至少一个参数值还包括: 当所述差异小于第三阈值时,所述第二计算设备确定混合状态,所述混合状态至少部分基于所述视觉状态的位置信息和方向信息中的所述至少一个和所述预测状态的位置信息和方向信息中的所述至少一个,所述混合状态包括位置信息和方向信息中的至少一个,以及 将所述新的视觉状态的位置信息和方向信息中的所述至少一个设置为等于所述混合状态的位置信息和方向信息中的所述至少一个。
17.如权利要求1所述的方法,其中当所述差异大于所述第二阈值时至少部分基于所述预测状态的所述至少一个参数值来修改所述视觉状态的所述至少一个参数值还包括: 确定所述差异是否大于第三阈值,所述第三阈值大于所述第二阈值;和` 当确定所述差异大于所述第三阈值时,把所述视觉状态的所述至少一个参数值设置为等于所述预测状态的所述至少一个参数值。
18.如权利要求17所述的方法,其中当所述差异大于所述第二阈值时至少部分基于所述预测状态的所述至少一个参数值来修改所述视觉状态的所述至少一个参数值还包括: 当所述差异小于所述第三阈值时,所述第二计算设备确定混合状态,所述混合状态至少部分基于所述视觉状态的所述至少一个参数值和所述预测状态的所述至少一个参数值,所述混合状态包括至少一个参数值,和 把所述视觉状态的所述至少一个参数值设置为等于所述混合状态的所述至少一个参数值。
19.如权利要求18所述的方法,其中所述新状态的所述至少一个参数值包括所述对象的控制模式,且所述方法还包括: 至少部分基于所述对象的所述控制模式来从多个第一和第二阈值选择所述第二和第三阈值中的至少一个。
20.如权利要求18所述的方法,其中所述对象具有类型,以及 至少部分基于所述对象的所述控制模式来从所述多个第一和第二阈值选择所述第二和第三阈值中的所述至少一个还包括:至少部分基于所述对象的所述类型来从所述多个第一和第二阈值选择所述第二和第三阈值中的至少一个。
21.如权利要求1所述的方法,其中当所述差异大于所述第二阈值时至少部分基于所述预测状态的所述至少一个参数值来修改所述视觉状态的所述至少一个参数值还包括: 在所述第二计算设备上确定局部碰撞状态;和 基于所述局部碰撞状态来在所述第二计算设备上修改所述视觉状态。
22.如权利要求21所述的用于包括地形的所述分布式模拟的方法,所述方法还包括: 重复确定所述局部碰撞状态和基于所述局部碰撞状态来修改所述视觉状态,直到所述对象实质上不渗透所述地形。
23.一种用于多个计算设备的方法,所述多个计算设备通过网络彼此连接且每个执行包括多个对象的分布式模拟的部分,所述部分在所述多个计算设备中的第一个上执行,所述第一个计算设备控制所述多个对象的部分并把与所述多个对象的所述部分的至少一个对象有关的更新发送到所述多个计算设备中的第二个,所述方法包括: a)在所述第二计算设备上,从所述第一计算设备接收包括与所述第一计算设备控制的所述多个对象的所述部分的第一对象有关的状态信息的先前更新; b)在所述第二计算设备上,至少部分基于与所述第一对象有关的所述状态信息来产生并显示所述第一对象的第一视觉表示,所述第二计算设备包括与所述第一对象和所述第一视觉表不相关的视觉状态?目息; c)在所述第二计算设备上,从所述第一计算设备接收包括状态信息的新更新,所述新更新在所述先前更新之后已经被接收到; d)在所述第二计算设备上,至少部分基于所述先前更新的所述状态信息来确定所述第一对象的预测状态信息,所述预测状态信息包括至少一个速度值; e)确定所述新更新的所述状态信息是否与所述第一对象有关; f)当所述第二计算设备确定所述新更新的所述状态信息与所述第一对象有关时,把所述预测状态信息的至少一部分设置为等于所述新更新的所述状态信息的至少一部分; g)确定所述视觉状态信息和所述预测状态信息之间的差异; h)当所述差异大于第一阈值时,`修改所述预测状态信息的所述至少一个速度值; i)当所述差异大于第二阈值时,至少部分基于所述预测状态信息来修改所述视觉状态信息; j)所述第二计算设备至少部分基于所述视觉状态信息来渲染所述对象的第二视觉表示;和 k)所述第二计算设备在所述显示设备上显示所述对象的所述第二视觉表示。
24.如权利要求23所述的方法,其中所述预测状态信息是第一预测状态信息,所述差异是第一差异,且所述方法还包括: 所述第二计算设备至少部分基于所述第一预测状态信息的所述至少一个速度来产生第二预测状态信息; 确定所述视觉状态信息和所述第二预测状态信息之间的第二差异; 当所述第二差异大于所述第二阈值时,至少部分基于所述第二预测状态信息来修改所述视觉状态信息; 所述第二计算设备至少部分基于所述视觉状态信息来渲染所述对象的第三视觉表示;和 所述第二计算设备在所述显示设备上显示所述对象的所述第三视觉表示。
25.如权利要求23所述的方法,其用于在所述第二计算设备上执行并控制所述多个对象的第二部分的所述分布式模拟的所述部分,所述方法还包括: 把与所述多个对象的所述第二部分的至少一个对象有关的更新发送到所述第一计算设备。
26.如权利要求23所述的方法,其用于在控制所述多个对象的第二部分的所述第二计算设备上执行的所述分布式模拟的所述部分,所述方法还包括: 通过用户接口设备接收用户输入,所述用户输入改变所述多个对象的所述第二部分的选定对象的状态; 创建包括与所述选定对象有关的状态信息的更新;和 把与所述选定对象有关的所述更新发送到所述第一计算设备。
27.如权利要求23所述的方法,其用于通过所述网络连接到所述多个计算设备的服务器的,且所述分布式模拟的所述部分在控制所述多个对象的第二部分的所述第二计算设备上执行,所述方法还包括: 把与所述多个对象的所述第二部分的至少一个对象有关的更新发送到所述服务器,从而转发到所述多个计算设备中的其它计算设备。
28.一种用于多个计算设备的方法,每个计算设备执行包括多个对象的分布式模拟的部分,所述部分在所述多个计算设备中的第一个上执行,所述第一个计算设备控制所述多个对象的部分并把与所述多个对象的所述部分的至少一个对象有关的更新发送到所述多个计算设备中的至少第二个,所述方法包括: a)在所述第二计算设备上,从所述第一计算设备接收包括与所述第一计算设备控制的所述多个对象的所述部分的第一对象有关的状态信息的先前更新; b)在所述第二计算设备上,至少部分基于与所述第一对象有关的所述状态信息来产生并显示所述第一对象的第一视觉表示,所述第二计算设备包括与所述第一对象和所述第一视觉表不相关的视觉状态?目息; c)在所述第二计算设备上,从所述第一计算设备接收包括状态信息的新更新,所述新更新在所述先前更新之后已经被接收到; d)在所述第二计算设备上,至少部分基于所述先前更新的所述状态信息来确定所述第一对象的预测状态信息; e)在所述第二计算设备上,确定所述新更新的所述状态信息是否与所述第一对象有关; f)当所述第二计算设备确定所述新更新的所述状态信息与所述第一对象有关时,在所述第二计算设备上,把所述预测状态信息的至少一部分设置为等于所述新更新的所述状态信息的至少一部分; g)在所述第二计算设备上,确定所述视觉状态信息和所述预测状态信息之间的差异; h)当所述差异大于第一阈值时,在所述第二计算设备上,把所述视觉状态信息的至少一部分设置为等于 所述预测状态信息的至少一部分; i)当所述差异小于所述第一阈值且大于第二阈值时,所述第二计算设备至少部分基于所述视觉状态信息和所述预测状态信息来确定混合状态信息,并把所述视觉状态信息的至少一部分设置为等于所述混合状态信息的至少一部分,所述第一阈值大于所述第二阈值; j)所述第二计算设备至少部分基于所述视觉状态信息来渲染所述第一对象的第二视觉表示;和 k)在所述第二计算设备上,在所述显示设备上显示所述第一对象的所述第二视觉表/Jn ο
29.一种用于多个计算设备的方法,所述多个计算设备通过网络彼此连接且每个执行包括多个对象的分布式模拟的部分,所述部分在所述多个计算设备中的第一个上执行,所述第一个计算设备控制所述多个对象的第一部分并把与所述多个对象的所述第一部分的至少一个对象有关的更新发送到所述多个计算设备中的第二个,所述部分在所述第二计算设备上执行,所述第二计算设备控制所述多个对象的第二部分并把与所述多个对象的所述第二部分的至少一个对象有关的更新发送到所述第一计算设备,所述方法包括: 在所述第二计算设备上,渲染所述多个对象的所述第一部分的第一对象的第一视觉表示和所述多个对象的所述第二部分的第二对象的第一视觉表示,所述第一对象的所述第一视觉表不与视觉状态?目息相关; 在所述第二计算设备上,通过用户输入设备接收改变所述第二对象的所述第一视觉表示的输入,且偶尔从所述第一计算设备接收所述第二计算设备可用以修改所述第一对象的所述第一视觉表示的更新,从所述第一计算设备接收到的每个所述更新包括与所述第一对象有关的状态信息; 随着所述第二对象的所述第一视觉表示改变,在所述第二计算设备上,偶尔通过所述网络把更新发送到所述第一计算设备,所述更新包括所述第一计算设备可用以修改所述第二对象的第二视觉表示的与所述第二对象有关的状态信息; 在所述第二计算设备上, 偶尔产生包括至少一个速度的所述第一对象的预测状态信息; 在所述第二计算设备上接收到每个所述更新之后,把所述预测状态信息设置为等于所述更新的所述状态信息; 在所述第二计算设备上,确定所述预测状态信息和与所述第一对象的所述第一视觉表示相关的所述视觉状态信息之间的差异; 在所述第二计算设备上,当所述差异大于第一阈值时,通过改变所述至少一个速度来更新所述预测状态信息; 在所述第二计算设备上,当所述差异大于第二阈值时,至少部分基于所述预测状态信息来修改与所述第一对象的所述第一视觉表示相关的所述视觉状态信息;和 在所述第二计算设备上,至少部分基于所述视觉状态信息来重新渲染所述第二对象的所述第一视觉表示。
30.如权利要求29所述的方法,其中所述第一对象具有类型,所述第一和第二阈值被存储在表中且与所述对象在所述表中的所述类型相关,且所述方法还包括: 在所述第二计算设备上,在所述表中查阅所述第一和第二阈值。
31.如权利要求29所述的方法,其中当所述差异大于所述第二阈值时至少部分基于所述预测状态信息来修改与所述第一对象的所述第一视觉表示相关的所述视觉状态信息包括: 当所述差异大于第三阈值时,把所述视觉状态信息设置为等于所述预测状态信息;和当所述差异小于所述第三阈值且大于所述第二阈值时,所述第二计算设备至少部分基于所述视觉状态信息和所述预测状态信息来确定混合状态信息,并把所述视觉状态信息设置为等于所述混合状态信息,所述第三阈值大于所述第二阈值。
32.存储计算机可执行指令的一种或多种计算机可读介质,所述计算机可执行指令当被一个或多个处理器执行时执行用于执行分布式模拟的第一部分的第一计算设备的方法,所述第一部分控制对象,所述方法包括: 执行所述分布式模拟的第二部分,所述第二部分产生可在第一显示设备上显示的所述对象的第一视觉表示,视觉状态与所述对象和所述第一视觉表示相关,所述视觉状态包括至少一个参数值; b)至少部分基于从所述第一计算设备接收到的先前更新的先前状态来产生所述对象的预测状态,所述先前状态与所述对象的第二视觉表示相关,所述预测状态包括至少一个速度和至少一个参数值; c)从所述第一计算设备接收更新,所述更新包括与所述对象的第三视觉表示相关的新状态,所述新状态包括至少一个参数值; d)把所述预测状态的所述至少一个参数值设置为等于所述新状态的所述至少一个参数值; e)确定所述预测状态的所述至少一个参数值和所述视觉状态的所述至少一个参数值之间的差异; f)当所述差异大于第一阈值时,修改所述预测状态的所述至少一个速度; g)当所述差异大于第二阈值时,至少部分基于所述预测状态的所述至少一个参数值来修改所述视觉状态的至少一个参数值; h)至少部分基于所述视觉状态来渲染所述对象的第四视觉表示;和 i)在所述第一显示设备上显示所述对象的所述第四视觉表示。
33.如权利要求32所述的一种或多种计算机可读介质,其中所述预测状态是第一预测状态,所述差异是第一差异,且所述方法还包括: 至少部分基于所述预测状态的所述至少一个速度来产生第二预测状态,所述第二预测状态包括至少一个参数值; 当所述第二差异大于第二阈值时,至少部分基于所述第二预测状态的所述至少一个参数值来修改所述视觉状态的所述至少一个参数值; 至少部分基于所述视觉状态来渲染所述对象的第五视觉表示;和 在所述第一显示设备上显示所述对象的所述第五视觉表示。
34.如权利要求32所述的一种或多种计算机可读介质,其中当所述差异大于所述第二阈值时至少部分基于所述预测状态的所述至少一个参数值来修改所述视觉状态的所述至少一个参数值还包括: 确定所述差异是否大于第三阈值,所述第三阈值大于所述第二阈值;和 当确定所述差异大于所述第三阈值时,把所述视觉状态的所述至少一个参数值设置为等于所述预测状态的所述至少一个参数值;和 当确定所述差异小于所述第三阈值时,至少部分基于所述视觉状态的所述至少一个参数值和所述预测状态的所述至少一个参数值来确定混合状态,所述混合状态包括至少一个参数值,并把所述视觉状态的所述至少一个参数值设置为等于所述混合状态的所述至少一个参数值。
35.一种用于实施包括多个对 象的分布式模拟的系统,所述系统包括:通过网络彼此连接的多个计算设备,每个计算设备被配置以执行所述分布式模拟的部分, 执行所述分布式模拟的第一部分的所述多个计算设备的第一计算设备,所述分布式模拟的所述第一部分控制所述多个对象的部分并把与所述多个对象的所述部分中至少一个对象有关的更新发送到所述多个计算设备中的第二个,所述第二计算设备被配置以: 从所述第一计算设备接收到包括与所述第一计算设备控制的所述多个对象的所述部分的第一对象有关的状态信息的先前更新; 至少部分基于与所述第一对象有关的所述状态信息来产生所述第一对象的第一视觉表不; 在显示设备上显示所述第一视觉表示,所述第二计算设备包括与所述第一对象和所述第一视觉表示相关的视觉状态信息; 从所述第一计算设备接收包括状态信息的新更新,所述新更新在所述先前更新之后已经被接收到; 至少部分基于所述先前更新的所述状态信息来确定所述第一对象的预测状态信息,所述预测状态信息包括至少一个速度值; 确定所述新更新的所述状态信息是否与所述第一对象有关; 当所述第二计算设备确定所述新更新的所述状态信息与所述第一对象有关时,把所述预测状态信息的至少一部分设置为等于所述新更新的所述状态信息的至少一部分; 确定所述视觉状态信息和所述预测状态信息之间的差异; 当所述差异大于第一阈值时,修改所述预测状态信息的所述至少一个速度值; 当所述差异大于所述第二阈值时,至少部分基于所述预测状态信息来修改所述视觉状态息; 至少部分基于所述视觉状态信息来渲染所述对象的第二视觉表示;和 在所述显示设备上显示所述对象的所述第二视觉表示。
36.如权利要求35所述的系统,其中所述预测状态信息是第一预测状态信息,所述差异是第一差异,且所述第二计算设备还被配置以: 至少部分基于所述第一预测状态信息的所述至少一个速度来产生第二预测状态信息; 确定所述视觉状态信息和所述第二预测状态信息之间的第二差异; 当所述第二差异大于所述第二阈值时,至少部分基于所述第二预测状态信息来修改所述视觉状态信息; 至少部分基于所述视觉状态信息来渲染所述对象的第三视觉表示;和 在所述显示设备上显示所述对象的所述第三视觉表示。
37.如权利要求35所述的系统,其中在所述第二计算设备上执行的所述分布式模拟的所述部分控制所述多个对象的第二部分,且所述第二计算设备还被配置以把与所述多个对象的所述第二部分的至少一个对象有关的更新发送到所述第一计算设备。
38.如权利要求35所述的系统,其中在所述第二计算设备上执行的所述分布式模拟的所述部分控制所述多个对象的第二部分,且所述第二计算设备还被配置以: 通过用户接口设备接收用户输入,所述用户输入改变所述多个对象的所述第二部分的选定对象的状态; 创建包括与所述选定对象有关的状态信息的更新;和 把与所述选定对象有关的所述更新发送到所述第一计算设备。
39.如权利要求35所述的系统,其还包括: 通过所述网络连接到所述多个计算设备的服务器,其中在所述第二计算设备上执行的所述分布式模拟的所述部分控制所述多个对象的第二部分,所述第二计算设备还被配置以把与所述多个对象的所述第二部分的至少一个对象有关的更新发送到所述服务器,从而转发到所述多个计算设备中的其`它计算设备。
【文档编号】A63F13/843GK103732300SQ201280032186
【公开日】2014年4月16日 申请日期:2012年5月3日 优先权日:2011年5月3日
【发明者】大卫·斯科特·奥尔德里奇, 卢克·威尔逊·蒂明斯, 克里斯多佛·查尔斯·约翰·布彻尔 申请人:邦吉有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1