虚拟区域生成和操纵的制作方法

文档序号:14204140阅读:226来源:国知局
虚拟区域生成和操纵的制作方法

相关申请的交叉引用

本申请要求2015年8月11日提交的美国专利申请no.14/823,230的权益,其公开内容全文以引用方式并入本文。



背景技术:

以电子方式呈现的内容项(诸如视频游戏和其他媒体项)可经常呈现其中可执行各种动作的虚拟区域,虚拟区域有时也可称为虚拟世界。在一些示例中,内容项可以通过例如通过提高虚拟区域的复杂度和细节水平而使得它的虚拟区域看起来更现实和/或更逼真来改善用户体验。然而不幸的是,提高虚拟区域的复杂性可能大大增加创建、呈现、维护和修改虚拟区域所需的时间、精力和资源。在一些示例中,可以通过包括各种不同地形类型诸如平坦空间和/或可建造空间、山脉、山谷、护道(例如,陡壁)、河流、湖泊、海洋、沙漠、森林等等来使虚拟区域对于用户而言更有吸引力。地形可由诸如树木、灌木、岩石、雪、草、鱼、鸟、动物、人、车辆、建筑物等等的各种对象填充。

一些常规的内容开发技术可能需要将某些地形类型和/或对象类型手动地定位并插入虚拟区域中,特别是对于更大和更详细的区域,这可能是高度耗时的过程。此外,对正在执行的内容项中的地形区域和/或填充对象的修改有时可能需要停止并重新开始内容项,从而中断和降低用户体验。一些虚拟区域可以逼真地出现的另一种方式是将以下各项包括在内:不同的每日时间(例如,早上、白天、晚上);不同的季节(例如,夏天和冬天);以及不同的天气状况(例如,晴、雨和雪)。然而,这些季节和天气状况之间的过渡对用户来说往往会显得不自然。例如,某个区域可能会从隆冬直接过渡到盛夏。这可能会引起意想不到的行为,诸如树木从没有叶子直接变成具有充分生长的叶子。

附图说明

当结合附图阅读时,可以更好地理解以下详细说明。为了说明的目的,在附图中示出本公开各个方面的示例性实施方案;然而,本发明不限于所公开的特定方法和手段。

图1是根据本公开的示出了用于生成和操纵可以使用的虚拟区域的示例系统的图。

图2是根据本公开的示出了可以使用的示例子区域和相关联的部件的图。

图3是根据本公开的示出了可以使用的示例服务器和客户端信息交换的图。

图4是根据本公开的示出了可以使用的示例规则调整和应用过程的图。

图5是根据本公开的示出了可以使用的示例开发者用户界面的图。

图6是根据本公开的示出了用于生成和操纵可以使用的虚拟区域的示例过程的流程图。

图7是根据本公开的示出了用于提供可以使用的以电子方式呈现的内容的示例系统的图。

图8是根据本公开的示出了可以使用的示例计算系统的图。

具体实施方式

本文描述了用于虚拟区域生成和操纵的技术。所描述的技术可以用于例如以电子方式呈现的内容项诸如视频游戏和其他媒体项中的虚拟区域。在一些示例中,可以提供一个或多个界面,所述一个或多个界面允许内容开发者提供和指定与所述虚拟区域相关联的规则集。所述规则集可以包括例如地形规则、对象规则和与所述虚拟区域的其他方面相关联的其他规则。地形规则可以包括用于生成、分布和/或操纵不同地形类型诸如平坦空间和/或可建造空间、山脉、山谷、护道(例如,陡壁)、河流、湖泊、海洋、沙漠、森林等等的规则。地形规则可以指示例如:一个或多个地形类型的数量或分布;地形外观;护道坡度;山脉高度;山谷强度;与一个或多个时间、季节或天气状况相关联的地形特性;以及与一个或多个边界或位置有关的地形特性。对象规则可以包括用于生成、分布和/或操纵不同对象类型诸如树木、灌木、岩石、雪、草、鱼、鸟、动物、人、车辆、建筑物等等的规则。对象规则可以指示例如:一个或多个对象之间的密度或距离;对象外观;对象行为;一个或多个对象类型的数量或分布;与一个或多个时间、季节或天气状况相关联的对象特性;与一个或多个地形类型有关的对象特性;与一个或多个其他对象有关的对象特性;或与一个或多个边界或位置有关的对象特性。

可以例如应用地形规则以生成与虚拟区域相关联的地形数据。可以然后应用对象规则以生成与虚拟区域相关联的第一对象数据。在一些情况下,可以至少部分地基于地形数据来向虚拟区域应用对象规则。例如,某些对象可具有较高或较低的密度水平,或者在一些情况下,可能会受限而不能分布在某些地形类型之处或附近。具体地讲,在一些情况下,树木可能受限而不能分布在湖泊和河流中,且甚至在陆地上,树木在不同的地形类型(例如,平坦空间、护道、山脉等)上有时可能具有不同的密度水平。也可以基于与时间、季节、天气、对象导航或用户输入中的至少一个相关联的信息来应用对象规则。然后,可以提供第一对象数据以结合第一对象数据和地形数据来执行虚拟区域的至少一部分的第一渲染。然后,可以向虚拟区域再应用对象规则以生成与虚拟区域相关联的第二对象数据。对象规则的再应用也可以至少部分地基于地形数据和与时间、季节、天气、对象导航或用户输入中的至少一个相关联的信息的变化。然后,可以提供第二对象数据以结合第二对象数据和地形数据来执行虚拟区域的至少一部分的第二渲染。

在一些示例中,诸如多玩家视频游戏的情况,虚拟区域可以对应于其执行分布在一个或多个服务器与一个或多个客户端之间的内容项。在这些示例中,有时可以从服务器向客户端发送地形规则,使得地形规则可由服务器和客户端二者分开应用。通过例如允许客户端生成地形数据并因此消除服务器将地形数据传输到客户端的需要,向客户端提供地形规则可能是有利的。这有时可以节省带宽,降低数据传输成本,并减少与在客户端呈现内容项相关联的延迟。在一些示例中,除了客户端之外,服务器也可以分开应用地形规则以生成在服务器处使用的地形数据。例如,服务器可以使用地形数据来随后应用对象规则并且至少部分地基于地形规则来生成对象数据。在服务器处生成对象数据可能是有利的,因为例如服务器可以从多个连接的客户端接收状态更新并且可以在对象规则的应用期间使用状态更新。例如,当不同的玩家砍伐树木、扔石头、打猎或者从湖泊中取出鱼时,服务器可以使用此信息来应用和再应用各种对象规则。

例如,可以在内容项的整个执行过程中重复应用一个或多个规则。例如,可以以各种指定的时间间隔和/或响应于各种事件或发生来重复地应用规则。重复地应用规则可以提供多个优点。例如,在一些情况下,可以在内容项的执行期间生成和/或修改一个或多个规则。具体地讲,开发者可能希望改变一个或多个对象之间的密度或距离或者改变其中可以分布对象的区域的边界。在一些示例中,在内容项执行期间重复地应用规则可以允许将新的或调整后的规则并入内容项中,而不需要停止和重新开始内容项的执行。而且,在一些示例中,系统可以维持各种时间测量诸如每日时间和每年时间,这可实现各个季节、每日时间段和其他时间段之间的平稳过渡。

在一些示例中,虚拟区域可以分成一组子区域,诸如子区域的网格或另一个集合。每个子区域可以具有一个或多个相关联的部件,该一个或多个相关联的部件可以在其各自的子区域内应用一个或多个规则。除了应用规则之外,相关联的部件还可以将与规则集相关联的信息报告给其他部件和/或从其他部件接收这样的信息。例如,部件可以报告其相应子区域内的对象何时生成、删除、改变状态或导航到另一个子区域或从另一个子区域导航。例如,可由与其他子区域相关联的部件使用该信息以在其相关联的子区域内应用规则。例如,还可以将该信息作为遥测信息提供给开发者,以允许开发者做出关于内容项的决定,诸如生成或调整规则。在一些示例中,开发者用户界面可以允许开发者在全局和各种局部水平上(例如,一个或多个子区域、湖泊、山脉、村庄等)查看正在执行的内容项的更新的遥测信息。

现在将详细描述用于实现所描述的技术的一些示例系统。具体地讲,图1是根据本公开的示出了用于生成和操纵可以使用的虚拟区域的示例系统的图。如图所示,图1包括开发者计算节点110、内容提供者计算节点120和客户端计算节点130a-130n(下文统称为客户端计算节点130)。计算节点110、120和130可以使用一个或多个通信网络(例如,一个或多个局域网(lan)和/或诸如因特网的一个或多个广域网(wan))进行通信。

开发者计算节点110包括开发者用户界面111,该开发者用户界面一般允许内容项开发者提供和接收与内容项的虚拟区域有关的信息。在一些情况下,开发者用户界面111可以允许开发者提供和调整与虚拟区域相关联的规则集。如上所述,规则集可以包括例如地形规则、对象规则和与虚拟区域的其他方面相关联的其他规则。地形规则可以包括用于生成、分布和/或操纵不同地形类型诸如平坦空间和/或可建造空间、山脉、山谷、护道(例如,陡壁)、河流、湖泊、海洋、沙漠、森林等等的规则。地形规则可以指示例如:一个或多个地形类型的数量或分布;地形外观;护道坡度;山脉高度;山谷强度;与一个或多个时间、季节或天气状况相关联的地形特性;以及与一个或多个边界或位置有关的地形特性。对象规则可以包括用于生成、分布和/或操纵不同对象类型诸如树木、灌木、岩石、雪、草、鱼、鸟、动物、人、车辆、建筑物等等的规则。对象规则可以指示例如:一个或多个对象之间的密度或距离;对象外观;对象行为;一个或多个对象类型的数量或分布;与一个或多个时间、季节或天气状况相关联的对象特性;与一个或多个地形类型有关的对象特性;与一个或多个其他对象有关的对象特性;或与一个或多个边界或位置有关的对象特性。开发者用户界面111可以包括允许提供和调整规则的各种不同的输入机制,且下文参考图5所示的示例开发者用户界面详细描述了这些输入机制的一些示例。

结合规则的提供和调整,开发者用户界面111还可以允许开发者查看与虚拟区域相关联的遥测信息。可以在执行内容项之前、期间或之后的任何时间点呈现遥测信息,并且该遥测信息可以对应于任何先前的、当前的或将来时间的时间帧。遥测信息可以包括例如与地形、对象、玩家、时间、季节、天气以及虚拟区域的其他特征相关联的信息。在一些示例中,遥测信息可以包括虚拟区域或虚拟区域的任一部分的图形视图,诸如将从位于虚拟区域内的虚拟相机看到的。各种导航控件可以允许开发者导航到虚拟区域的不同部分。所呈现的遥测信息可以包括例如与任何虚拟区域规则相关联的细节,诸如玩家、对象和/或地形数量、密度、距离、聚丛、特性、位置、边界、护道坡度、山脉高度、山谷强度等等。可以汇聚虚拟区域的任何全局或局部部分的遥测信息,并且在一些情况下,该遥测信息可以对应于在用户界面中用图形描绘的虚拟区域的一部分。例如,可由开发者使用遥测信息用于在执行内容项之前、期间或之后提供和/或调整规则。

与虚拟区域相关联的规则和其他信息可由开发者计算节点110提供并由内容提供者计算节点120接收,该内容提供者计算节点可将所接收的规则和相关联的信息存储为规则信息125。通常,内容提供者计算节点120可以例如包括一个或多个服务器,并且可以例如与客户端130结合执行以电子方式呈现的内容项诸如视频游戏、大型多玩家在线(mmo)视频游戏或其他媒体项。在图1的示例中,内容提供者120包括四个系统121-124,这四个系统实现对用于执行内容项的虚拟区域的有效生成和操纵。内容提供者120还可以包括用于这些和其他目的的任何数量的较少的或另外的系统或部件。

具体地讲,地形系统121通常实现对用于与虚拟区域结合使用的地形数据的生成、修改和供应。如上所述,可通过例如向虚拟区域应用一个或多个地形规则来生成和修改地形数据。在一些示例中,地形数据可以包括对以下各项的指示:哪些地形类型(例如,平坦空间、山脉、山谷、护道、河流、湖泊、海洋等)占据哪些空间区域、某些地形类型或地形部分的特性(例如,高度、坡度、强度、颜色、纹理、与天气有关的特性、季节特性、每日时间特性)以及与虚拟区域的地形相关联的其他信息。

对象分布系统122通常维持对象数量、对环境的变化作出反应并且实现对用于与虚拟区域结合使用的对象数据的生成、修改和供应。如上所述,可通过例如向虚拟区域应用一个或多个对象规则来生成和修改对象数据。在一些情况下,可以至少部分地基于地形数据来向虚拟区域应用对象规则。具体地讲,某些对象可具有较高或较低的密度水平,或者在一些情况下,可能会受限而不能分布在某些地形类型之处或附近。如上所述,在一些情况下,树木可能受限而不能分布在湖泊和河流中,且甚至在陆地上,树木在不同的地形类型(例如,平坦空间、护道、山脉等)上有时可能具有不同的密度水平。在一些示例中,对象数据可以包括关于以下各项的指示:哪些对象占据哪些位置(例如,使用坐标值或其他位置值);对象的移动速度和移动方向;其他对象特性(例如,颜色、纹理、大小、形状、旋度)。在一些示例中,对象数据可以包括关于季节特性的指示诸如树上的叶子,叶子的大小、形状和数量在不同的季节可能不同。对象数据还可以包括与天气有关的特性、每日时间特性以及关于各个对象的其他特性。对象数据还可以包括关于何时添加对象、移除对象、改变位置或以其他方式进行修改的信息。

时间系统123通常维持并供应关于与虚拟区域相关联的各种时间、季节和天气状况的信息。如上所述,根据每日时间、每年时间(例如,季节)以及不同的天气状况,地形和对象有时可能具有不同的外观和其他特性。在一些示例中,时间系统123可以结合虚拟区域来维持每日时间和/或每年时间。可以至少部分地基于每日时间和/或每年时间来应用与虚拟区域相关联的一个或多个规则。每日时间和/或每年时间可以维持在任何期望的粒度水平(例如,测量到特定的秒、小时、天、周、月、季节或其他时间分级)。在一些示例中,每年时间可能会提供比仅仅特定季节的指示更精细的粒度。例如,每年时间可以指示特定的日期、月份,或者在一些情况下可以指示相对于季节的特定峰值点或中心点的偏移值。此外,对象规则和地形规则还可以指示不同日期、月份或季节性偏移的不同外观和其他特性。这可实现外观在季节之间的平稳过渡。另外,在一些示例中,时间系统123可以单独地或者与导航系统1243结合,负责生成移动天气系统诸如雨、雪和多云系统。时间系统123和/或导航系统124可以在特定位置生成此类系统并将系统设置为以各种速度沿各种方向运动。时间系统123和/或导航系统124还可以调整移动天气系统的大小、强度、速度、方向和其他特性。

导航系统124通常负责导航可在整个虚拟区域上行进的各种对象,诸如射弹、人、动物、鱼、鸟、车辆和天气系统。例如,导航系统124可以执行操作以在需要时避免碰撞,以及在需要时处理对象之间的碰撞。如上所述,有时可以提供与对象移动相关联的信息以供对象分布系统122使用。

在一些示例中,可以向客户端130传输由内容提供者120生成的地形数据和/或对象数据。而且,在一些示例中,客户端130可以使用地形数据和/或对象数据来渲染虚拟区域或其任何部分的图形描绘。因此,在一些示例中,客户端130可以包括用于渲染与虚拟区域相关联的图形的一个或多个图形处理单元(gpu)。在一些示例中,内容提供者120可能不需要向客户端130发送地形数据。相反,内容提供者可以向客户端130发送地形规则,并且客户端130可以基于地形规则来生成它们自己的地形数据。

在一些示例中,虚拟区域的渲染有时可以分布在内容提供者120和客户端130之间。因此,在这样的示例中,客户端130和内容提供者120都可以包括一个或多个gpu。在又其他示例中,内容项可以完全由内容提供者120渲染,并且可以通过一个或多个网络将所渲染的图形从内容提供者120传输到客户端130。

客户端130通常可以接收用户输入并将与用户输入相关联的信息发送给内容提供者120。此类用户输入可以包括例如玩家移动和动作(例如,击发武器、砍树、跑到新的位置)。例如,对象分布系统122可使用该客户端输入信息来更新和修改对象数据。例如,如果玩家砍掉一棵树或捕获一条鱼,则对象分布系统122可以确定可能在不同的位置且以不同特性添加新的一棵树、一条鱼或其他对象。

如上所述,内容提供者120可以包括用于生成和操纵虚拟区域的各种系统诸如系统121-124。在一些示例中,虚拟区域可以表示具有复杂地形和对象分布的大空间。在这些和其他情况下,有时可能希望将虚拟区域分成多个子区域并分配一个或多个部件来处理与每个子区域相关联的各种操作。在一些示例中,部件可以与分配给其他子区域的部件同时或部分同时地执行操作。这可以通过例如允许彼此并行地或者部分并行地分布和执行与虚拟区域相关联的各种操作来提高效率。在一些示例中,与每个子区域相关联的部件可以包括一个或多个参与者,该一个或多个参与者可以同时接收和响应消息并且还将消息发送给其他参与者。在一些示例中,部件,在它们的相关联的子区域内应用多个规则中的一个或多个,且可以报告与多个规则中的一个或多个在它们的相关联的子区域内的应用相关联的信息。

图2是根据本公开的示出了可以使用的示例子区域和相关联的部件的图。如图2所示,示例虚拟区域210分成十六个子区域211-216。应当理解,图2所示的虚拟区域210和十六个子区域211-216仅仅是非限制性示例。虚拟区域和/或子区域不需要由正方形或矩形区域构成,并且可以使用任何期望的大小或形状来定义。另外,不要求子区域必须彼此具有相同的大小。

图2示出分配到相应子区域211的子区域部件241。应当理解,尽管图2中未示出,但其他子区域可以包括与那些相应子区域相关联的其他分配部件。如图所示,子区域部件241包括用于执行与地形有关的操作的地形部件241a和用于执行与对象分布有关的操作的对象分布部件241b。部件241还可以包括任意数量的另外的部件。应当指出,尽管地形部件241a和对象分布部件241b都与子区域211相关联,但不要求必须使用相同的子区域来执行地形评估和对象分布评估。在一些示例中,为了地形操作、对象分布操作或其他操作的目的,可以将虚拟区域分成不同的子区域(或者可以根本不进行划分)。

在图2的示例中,子区域部件241接收和/或提供:规则信息231;时间、季节和天气信息232;遥测信息233;地形数据234;对象数据235;用户输入数据236;以及导航数据237。规则信息231可以指示例如全局适用于虚拟区域210和/或局部适用于子区域211诸如适用于完全或部分包括在子区域211内或者与子区域相邻的湖泊或其他类型的空间的各种规则。上文详细描述了此类规则的示例,且这里不再重复。规则信息231还可以包括各种规则调整,包括规则的改变、添加和删除。时间、季节和天气信息232可以包括诸如每日时间、每年时间、季节、季节性偏移以及移动天气系统的位置和强度和其他信息的信息。

在一些示例中,导航信息237可以包括关于在整个虚拟区域210内移动并且正在从一个或多个其他子区域进入子区域211和/或从子区域211移动到一个或多个其他子区域的对象的信息。而且,在一些示例中,用户输入数据236可以包括关于由一个或多个客户端执行的动作诸如砍树、捕鱼和各种其他动作的信息。遥测信息233可以包括从诸如一个或多个其他子区域的各种源、从地形系统121、对象分布系统122、时间系统123、导航系统124、客户端130和其他源所接收的遥测信息。遥测信息223可以进一步包括关于虚拟区域210的任何方面诸如在各种全局和/或局部(例如,子区域)水平下汇总的虚拟区域210内的地形、对象或任何其他实体的数量、位置和特性的信息。遥测信息还可以包括时间、季节和天气信息(尽管在图2中使用单独元素232具体指示了此类信息)。

地形部件241a可以使用信息231-237来生成和更新子区域211的地形数据234。如上所述,地形数据可以包括关于以下各项的指示:哪些地形类型占据哪些空间区域;某些地形类型或地形部分的特性;以及与区域或子区域的地形相关联的其他信息。

对象分布部件241b可以使用信息231-237以及来自地形部件241a的地形数据来生成和更新子区域211的对象数据235。如上所述,对象数据可以包括关于以下各项的指示:哪些对象占据哪些位置;对象的移动速度和移动方向;以及其他对象特性(例如,颜色、纹理、大小、形状、季节特性)。例如,考虑特定规则要求在湖泊中保持固定数量的鱼的场景。现在假设,对象分布部件241b确定在自上次应用特定规则以来的时间内,在子区域211内两条鱼被鲨鱼吃掉。对象分布部件241b还可以确定在自上次应用特定规则以来的时间内,一条鱼已经从邻近的子区域212游进子区域211。基于该信息,对象分布部件241b可以确定与上次应用了特定规则的时间段相比,子区域211内少了一条鱼。因此,为了遵守特定规则,分布部件241b可以确定在子区域211内的某个位置产生一条新的鱼。

除了接收信息231-237作为输入之外,部件241还可以诸如向一个或多个其他子区域、向地形系统121、对象分布系统122、时间系统123、导航系统124、客户端130、以及向其他源提供信息231-237作为输出。例如,输入部件241可以生成、更新地形数据和对象数据并向如上所述的各种其他部件提供地形数据和对象数据。又如,由部件241输出的遥测信息可以包括关于在整个虚拟区域210内移动并且正在离开子区域211进入一个或多个其他子区域的对象的信息。由部件241输出的遥测信息223可以进一步包括关于子区域211的任何方面诸如子区域211内的地形、对象或任何其他实体的数量、位置和特性的信息。

因此,如上所述,可以使用诸如与不同子区域相关联的各种部件来生成和更新地形数据、对象数据和其他数据。可以使用地形数据和对象数据,诸如通过将它们提供到一个或多个gpu和/或其他图形处理部件来渲染虚拟区域的部分。也如上所述,在一些示例中,可以在客户端装置处执行与虚拟区域相关联的渲染操作的至少一部分。在一些情况下,内容提供者(例如,服务器)可以应用如上所述的虚拟规则来生成地形数据和对象数据二者并将它们传输到所连接的客户端。然后,客户端可以接收地形数据和对象数据,并且至少部分地基于所接收的地形数据和对象数据来渲染虚拟区域。

在一些示例中,从服务器向客户端传输地形数据和对象数据可能是有利的,因为这可以允许客户端渲染虚拟区域而不需要应用虚拟区域和在客户端处生成地形数据和对象数据。然而,在一些其他示例中,可能需要减少从服务器传输到客户端的数据量,从而例如减少网络带宽使用、传输成本和潜在的通信延迟。一种用于减少从服务器传输到客户端的数据量的技术涉及从服务器向客户端传输地形规则,并允许客户端使用所传输的地形规则来在客户端处生成地形数据。在一些示例中,这可以减少传输的数据的量,因为地形规则通常可以包括比地形数据更少的数据。

图3是根据本公开的示出了可以使用的示例服务器和客户端信息交换的图。如图所示,图3的顶部部分描绘了从服务器350a向客户端360a传输地形数据312a的通信300a。更详细地说,可以看出,服务器350a应用地形规则311a来生成地形数据312a。然后,服务器350a向客户端360a传输地形数据312a,该客户端可以使用地形数据312b结合其他所接收的数据(未示出)来渲染虚拟区域或其任何部分。

相比之下,图3的底部部分描绘了从服务器350b向客户端360b传输地形规则311b的通信300b。更详细地说,可以看出,服务器350b应用地形规则311b来生成地形数据312b。然而,服务器350b不是生成地形数据312b,而是向客户端360b传输地形规则311b。然后,客户端360b使用所传输的地形规则来生成地形数据312b的客户端版本。然后,客户端360b可以使用地形数据312b的客户端版本结合其他所接收的数据(未示出)来渲染虚拟区域或其任何部分。

如图3所示,所传输的地形规则311b包括比所传输的地形数据312a基本上更少量的数据(如通过示为在图3中具有比地形数据312a更小的形状的地形规则311b来指示)。而且,如图3所示,包括在地形规则311b中的数据的量与地形数据312a相比的差异由虚线矩形元素313指示,其对应于通过与地形数据312a相比,传输地形规则311b所产生的节省的通信带宽的量。

应当指出,在通信300a和通信300b两者的情况下,服务器350可以生成地形数据。在通信300b的情况下,在服务器350b处生成地形数据(即使地形数据未被传输到客户端),这导致地形规则被分开地应用,并且地形数据由服务器350b和客户端360b分开地生成。在图3的示例中,服务器350可以使用地形数据来随后应用对象规则并且至少部分地基于地形数据来生成对象数据。如上所述,在服务器处生成对象数据可以是有利的,因为例如服务器可以接收各种类型信息(例如,客户端输入、导航数据、时间、季节和天气信息等)的变化和/或对规则的调整,并且可以使用信息和/或规则调整来应用和/或再应用对象规则。

因此,如上所述,可以在内容项诸如由服务器、客户端以及可能的其他部件的执行期间应用地形规则、对象规则以及可能的其他规则。也如上所述,各种部件有时可以重复地应用和再应用一个或多个规则于虚拟区域或其任何部分。在内容项执行期间重复地将规则应用于虚拟区域规则可以提供多个优点。例如,在一些情况下,在内容项执行期间重复应用规则可以允许将新的或调整的规则并入到内容项中,而不需要停止并重新开始内容项的执行。图4是根据本公开的示出了可以使用的示例规则调整和应用过程的图。如图4所示,原始规则410规定虚拟区域内的特定湖泊将维持50%马林鱼和50%金枪鱼的鱼类种群分布。在图4中,马林鱼被描绘为标记有字母m的圆圈,而金枪鱼被描绘为标记有字母t的圆圈。

图4显示渔夫400在原始规则410有效的各个时间点在湖泊中捕鱼的三个表示410a-c。具体地讲,表示410a对应于渔夫400捕获到任何鱼之前的最早时间点。如表示410a所示,湖泊包括两条马林鱼和两条金枪鱼,这与原始规则410中规定的50%马林鱼和50%金枪鱼分布是一致的。在与表示410b相对应的随后的时间点,渔夫400已经捕获了一条马林鱼(如通过连接到渔夫400的钓竿的尖端处的马林鱼所表示)。这使湖泊中的马林鱼的数量减少,使得湖泊不再与原始规则410中规定的50%马林鱼和50%金枪鱼分布一致。表示410c对应于原始规则410已再应用于湖泊之后的后续时间。如表示410c所示,在湖泊中已产生了一条新的马林鱼,以替代在表示410b中被渔夫捕获的马林鱼,并使湖泊恢复成与原始规则410中规定的50%马林鱼和50%金枪鱼分布一致。

而且,如图4所示,在对应于表示410c的时间点之后,开发者修改原始规则410以产生修改后的规则420。具体地讲,修改后的规则420规定,虚拟地区内的湖泊应维持25%马林鱼和75%金枪鱼的鱼类种群分布。图4显示渔夫400在修改后的规则420有效的各个时间点在湖泊中捕鱼的三个表示420a-c。具体地讲,表示420a对应于紧接在规则修改之后以及在修改后的规则已经被应用之前的时间点。因此,由于尚未应用修改后的规则420,因此鱼类种群继续包括两条马林鱼和两条金枪鱼,如同它就在表示410c中的规则修改之前一样。在对应于表示420b的随后的时间点,渔夫400再次捕获另一条马林鱼。这使湖泊中马林鱼的数量再次减少为一条马林鱼。然而,应当指出,在表示420b处,尚未应用修改后的规则420。表示420c对应于修改后的规则420已经应用于湖泊之后的后续时间。如表示420c所示,在湖泊中已经产生了一条新的金枪鱼,以替代在表示420b中被渔夫捕获的马林鱼。在表示420c中产生新的金枪鱼导致金枪鱼数量增加到三,而马林鱼数量保持为一。金枪鱼与马林鱼的这个三比一的比例导致湖泊与修改后的规则420中规定的25%马林鱼和75%金枪鱼分布一致。

因此,图4所示的图示提供了可以如何应用和再应用规则以自动纠正环境中的动态变化例如由玩家输入和其他事件引起的变化的一些示例。另外,图4所示的图示提供可以如何修改和应用规则以自动纠正与修改后的规则相关联的变化以及也有环境的动态变化的一些示例。此外,应当指出,规则的重复应用以及自动纠正和/或调整规则修改的能力可以允许甚至在内容项执行期间修改规则,而不需要停止并重新开始内容项的执行。具体地讲,如图4中的箭头415所示,原始规则410与修改后的规则420之间的过渡不需要停止并重新开始内容项的执行。如上所述,一些常规的内容项可能需要开发者在虚拟区域中的特定点处手动插入某些对象,并且这种手动插入可能需要停止并重新开始正执行的内容项。相比之下,本文所描述的基于规则的技术不要求开发者在特定位置手动插入对象,并且由于这些和其他原因,能够实现上述优点而不需要停止和重新开始正在执行的内容项。

因此,如上所述,开发者可以在执行内容项之前、期间和之后提供并调整与虚拟区域相关联的规则。在一些示例中,可以提供开发者用户界面,该开发者用户界面可以例如允许在内容项的执行期间呈现和更新与规则相关联的信息并且可以允许在内容项的执行期间调整规则。在一些情况下,诸如图1所示,开发者用户界面可以呈现在由开发者操作的计算节点上,并且可以允许向内容提供者和/或一个或多个服务器输入和提供信息。在一些示例中,开发者用户界面可以允许开发者在任何期望的全局和/或局部水平下在整个虚拟区域中导航。开发者用户界面还可以允许开发者在任何期望的时间点和/或时间范围内查看地形、对象、玩家、天气系统以及可能的其他实体。开发者用户界面还可以允许查看和调整正在执行的内容项中以及尚未开始或已经完成执行的内容项中的区域。

图5是根据本公开的示出了可以使用的示例开发者用户界面500的图。如图所示,开发者用户界面500包括虚拟区域查看器505,该虚拟区域查看器允许查看虚拟区域510或其任何部分。导航控件506可以允许开发者在整个虚拟区域510中进行导航,诸如在北、南、东和西方向上或其任何组合。放大控件507和缩小控件508可以允许开发者放大和缩小虚拟区域510的各个部分。如上所述,虚拟区域查看器505可以允许查看在正在执行的内容项以及尚未开始或已经完成执行的内容项中的地形、对象、玩家、天气系统以及可能的其他实体。

开发者用户界面500还包括示例控制面板520,该示例控制面板包括示例时间控件521、示例地形控件522、示例对象选择器523和示例对象控件524。在一些示例中,控件521、522和524中的每一个可以包括允许查看和调整相应值的一个或多个控件诸如滑块、旋钮等。控制面板520中的控件/值的调整可以引起对虚拟区域查看器505中的虚拟区域510的相应调整,并且在一些情况下还可以将这些调整应用于正在执行的内容项或者即将执行的内容项中的虚拟区域。在图5的示例中,示例时间控件521包括用于查看和调整每日时间的每日时间控件521a和用于查看和调整每年时间的每年时间控件521b。例如,开发者可以将每年时间控件521b从冬季时间调整到夏季时间,并且这样的调整可以例如通过在树上添加叶子、添加草、改变太阳位置、延长日光时间等来导致对虚拟区域查看器505中的虚拟区域510(以及也有在一些情况下正在执行或即将执行的内容项中的虚拟区域)的描绘从冬季变为夏季。

在图5的示例中,地形控件522包括山脉高度控件522a、护道坡度控件522b和山谷强度控件522c。例如,开发者可以调整山脉高度控件522a以全局地或在任何局部水平上使山峰升高到更高的高度或降低到更低的高度。例如,开发者可以调整护道坡度控件522b以全局地或在任何局部水平上使护道或多或少急剧地升高。例如,开发者可以调整山谷强度控件522c以全局地或在任何局部水平上使山谷下降到更大的深度或上升到更小的深度。如上所述,这些调整可以导致对虚拟区域查看器505中的虚拟区域510以及也有在一些情况下正在执行的内容项或将要执行的内容项中的虚拟区域的描绘发生相应变化。

示例对象选择器523允许选择各种对象,例如用于插入、查看和调整。在图5的示例中,对象选择器523包括树木选择器523a和岩石选择器523b。应当理解,许多其他不同的对象也可以包括在虚拟区域中并使用开发者用户界面来选择。对象选择器523之一的选择可以允许例如经由对象控件524来控制所选对象类型的属性。对象控件524包括密度控件524a、距离控件524b和聚丛控件524c。例如,开发者可以选择树木选择器523a,且然后调整密度控件524a以修改树木密度,调整距离控件524b以修改树木之间的距离,并且调整聚丛控件524c以修改树木聚丛。这些调整也可以全局地或在任何局部水平上应用,并且可以导致对虚拟区域查看器505中的虚拟区域510以及也有在一些情况下正在执行的内容项或将要执行的内容项中的虚拟区域的描绘发生相应变化。

图6是根据本公开的示出了用于生成和操纵可以使用的虚拟区域的示例过程的流程图。如图所示,图6左侧的操作是由一个或多个服务器执行的服务器操作601,而图6右侧的操作是由一个或多个客户端执行的客户端操作602。在操作610处,接收与虚拟区域相关联的包括地形规则和对象规则的规则集。在一些示例中,可以使用开发者用户界面诸如图5的示例开发者用户界面500来从开发者接收规则集。如上所述,地形规则可以包括用于生成、分布和/或操纵不同地形类型诸如平坦空间和/或可建造空间、山脉、山谷、护道(例如,陡壁)、河流、湖泊、海洋、沙漠、森林等等的规则。地形规则可以指示例如:一个或多个地形类型的数量或分布;地形外观;护道坡度;山脉高度;山谷强度;与一个或多个时间、季节或天气状况相关联的地形特性;以及与一个或多个边界或位置有关的地形特性。对象规则可以包括用于生成、分布和/或操纵不同对象类型诸如树木、灌木、岩石、雪、草、鱼、鸟、动物、人、车辆、建筑物等等的规则。对象规则可以指示例如:一个或多个对象之间的密度或距离;对象外观;对象行为;一个或多个对象类型的数量或分布;与一个或多个时间、季节或天气状况相关联的对象特性;与一个或多个地形类型有关的对象特性;与一个或多个其他对象有关的对象特性;或与一个或多个边界或位置有关的对象特性。

在操作612处,一个或多个服务器诸如通过在通信网络上传输地形规则来向一个或多个客户端提供地形规则。在操作614处,一个或多个客户端接收地形规则,并且在操作616处,一个或多个客户端应用地形规则以生成客户端地形数据。另外,返回参考服务器操作601,可以看出,在操作618处,一个或多个服务器应用地形规则以生成服务器地形数据。可以通过例如至少部分地基于虚拟区域的特征诸如大小、形状和其他特征应用地形规则中规定的参数来应用地形规则。例如,在一些情况下,应用地形规则可以包括将不同地形类型分配给虚拟区域的各个部分。这可以包括例如将山脉分配给虚拟区域内的某些位置,将山谷分配给虚拟区域内的其他位置,将平坦空间和/或护道分配给又其他位置等等。因此,应用地形规则可以包括确定各种地形类型的坐标值、边界和或其他位置信息。应用地形规则还可以包括确定某些地形部分相对于其他地形部分的属性。例如,当护道坡度增大时,这可能导致诸如山脉、山谷和/或平坦空间的其他地形区域的大小和/或高度增大和/或减小。在一些示例中,还可以基于例如时间、季节和天气信息来应用地形规则。因此,在一些示例中,应用地形规则可以包括向与雪、雨或其他天气系统相关的某种地形添加雪穴、水坑和/或其他特征。如上所述,在一些示例中,地形数据可以包括关于以下各项的指示:哪些地形类型(例如,平坦空间、山脉、山谷、护道、河流、湖泊、海洋等)占据哪些空间区域、某些地形类型或地形部分的特性(例如,高度、坡度、强度、颜色、纹理、与天气有关的特性、季节特性、每日时间特性)以及与虚拟区域的地形相关联的其他信息。

在操作619处,一个或多个服务器可以接收与时间、季节、天气、对象导航或用户输入中的至少一个相关联的第一信息。例如,如上所述,图1的时间系统123可以维持并提供与虚拟区域相关联的时间、季节和天气信息。另外,图1的导航系统124可以维持并提供对象导航信息诸如有关在整个虚拟区域内移动的对象的信息。此外,在一些示例中,虚拟区域可以分成具有相关联的部件的多个子区域,这些相关联的部件可以交换关于移动到邻近或其他子区域的对象的信息。此外,在一些示例中,所连接的客户端可以提供关于来自玩家或其他用户的用户输入的信息,诸如砍掉一棵树、捕获一条鱼或者玩家从一个区域移动到另一个区域。

在操作620处,一个或多个服务器至少部分地基于服务器地形数据和第一信息来应用对象规则以生成第一对象数据。如上所述,对象数据可以包括关于以下各项的指示:哪些对象占据哪些位置(例如,使用坐标值或其他位置值);对象的移动速度和移动方向;其他对象特性(例如,颜色、纹理、大小、形状、旋度)。在一些示例中,对象数据可以包括关于以下各项的指示:季节特性;与天气有关的特性;每日时间特性;以及关于各个对象的其他特性。对象数据还可以包括关于何时添加对象、移除对象、改变位置或以其他方式进行修改的信息。

在操作622处,一个或多个服务器例如通过在通信网络上传输第一对象数据来向一个或多个客户端提供第一对象数据。在操作624处,一个或多个客户端接收第一对象数据,并且在操作626处,一个或多个客户端结合客户端地形数据和第一对象数据来执行虚拟区域的至少一部分的第一渲染。第一渲染可以生成与虚拟区域的至少一部分相关联的图像数据。在一些示例中,可以通过向一个或多个客户端处的一个或多个图形处理单元(gpu)提供第一对象数据和客户端地形数据来执行第一渲染。在操作627处,一个或多个客户端显示由第一渲染生成的图像数据。

返回参考服务器操作601,可以看出,在操作628处,一个或多个服务器接收与时间、季节、天气、对象导航或用户输入中的至少一个的至少一个变化相关联的第二信息。例如,操作628可以包括接收以上关于操作619所描述的第一信息的任何类型的变化(例如,更新),诸如每日时间、季节、从一个位置到另一个位置的对象导航、导致玩家移动或其他玩家动作的用户输入等的变化。

在操作630处,确定是否正在再应用对象规则。可以任何期望的时间间隔或响应于各种事件(例如,接收到客户端输入、导航数据等)来再应用对象规则。如果尚未再应用对象规则,则该过程循环回到操作628,直到对象规则得到再应用。在操作632处,至少部分地基于服务器地形数据和第二信息来再应用对象规则以生成第二对象数据。如上所述,当再应用对象规则时,可以调整对象数据以考虑自先前应用对象规则以来发生的规则调整和时间、季节、天气、对象导航或用户输入的变化。例如,如图4所示,如果一个角色捕获一条鱼,那么这鱼有时可能被另一条相同或不同类型的鱼取代。上文详细描述了对象数据中的许多其他示例变化,且这里不再重复。

在操作634处,一个或多个服务器例如通过在通信网络上传输第二对象数据来向一个或多个客户端提供第二对象数据。在操作636处,一个或多个客户端接收第二对象数据,并且在操作638处,一个或多个客户端结合客户端地形数据和第二对象数据来执行虚拟区域的至少一部分的第二渲染。第二渲染可以生成与虚拟区域的至少一部分相关联的图像数据。在一些示例中,可以通过向一个或多个客户端处的一个或多个图形处理单元(gpu)提供第二对象数据和客户端地形数据来执行第二渲染。在操作639处,一个或多个客户端显示由第二渲染生成的图像数据。

如上所述,在一些示例中,诸如图2所示的示例,虚拟区域可以分成子区域,子区域具有相关联的部件,这些相关联的部件执行与它们的相应子区域相关联的各种操作,诸如在它们的相关联的子区域内应用多个规则中的一个或多个以生成地形数据和/或对象数据并且报告与多个规则中的一个或多个在它们的相关联的子区域内的应用相关联的信息。因此,应当指出,图6中描绘的各种操作,诸如操作618、620和632,可由与虚拟区域的一个或多个子区域相关联的各种部件(诸如一个或多个参与者)执行。

应当指出,图6仅提供了用于生成和操纵虚拟区域的一个示例过程,并且可以根据本文所描述的技术来采用许多另外的或替代的过程。例如,在一些情况下,可能不会从服务器向客户端提供地形规则。相反,可以从服务器向客户端提供由服务器生成的地形数据。以上关于图3的通信300a详细描述了这种方法。另外,在一些示例中,可以例如基于地形数据和/或对象数据来在服务器处渲染虚拟区域的一个或多个部分,且然后可以从服务器向客户端传输所渲染的图像数据。在又其他示例中,可以完全在客户端或其他装置上执行内容项,而不需要通过网络传输地形规则、地形数据和/或对象数据。根据本文所描述的技术可以采用上述或其他变型形式的任何。

现在将详细描述用于提供以电子方式呈现的内容的示例系统。具体地讲,图7示出了可以实现本文所描述的实施方案的示例计算环境。图7是示意性地示出了数据中心85的示例的图,该数据中心可以经由通信网络73而经由用户计算机72a和72b(其在本文可单数称为计算机72或复数称为计算机72)来向用户70a和70b(其在本文可单数称为用户70或复数称为用户70)提供计算资源。数据中心85可以被配置成提供用于永久地或根据需要来执行应用的计算资源。由数据中心85提供的计算资源可以包括各种类型的资源,诸如网关资源、负载平衡资源、路由资源、联网资源、计算资源、易失性和非易失性存储器资源、内容递送资源、数据处理资源、数据存储资源、数据通信资源等。每种类型的计算资源都可以多个特定配置可用。例如,数据处理资源可以作为可被配置成提供各种web服务的虚拟机实例而可用。另外,资源的组合可以经由网络提供,并且可以被配置成一个或多个web服务。实例可以被配置成执行应用,包括诸如应用服务、媒体服务、数据库服务、处理服务、网关服务、存储服务、路由服务、安全服务、加密服务、负载平衡服务、应用服务等的web服务。这些服务可以使用设置或自定义应用进行配置,并且可以在大小、执行、成本、延时、类型、持续时间、可访问性以及任何其他维度上进行配置。这些web服务可以被配置成用于一个或多个客户端的可用基础设施,并且可以包括被配置成一个或多个客户端的平台或软件的一个或多个应用。这些web服务可以通过一个或多个通信协议可用。这些通信协议可以包括例如超文本传输协议(http)或非http协议。这些通信协议还可以包括例如更可靠的传输层协议(诸如传输控制协议(tcp))和不太可靠的传输层协议(例如用户数据报协议(udp))。数据存储资源可以包括文件存储装置、块存储装置等。

每种类型或每种配置的计算资源可以不同的大小可用,诸如由大量资源(包括许多处理器、大量存储器和/或大存储容量)以及小资源(包括较少的处理器、较少量的存储器和/或较小的存储容量)。例如,客户可以选择分配一些小的处理资源作为web服务器和/或一个大的处理资源作为数据库服务器。

数据中心85可以包括提供计算资源的服务器76a和76b(其在本文可以单数称为服务器76或复数称为服务器76)。这些资源可以作为裸机资源或作为虚拟机实例78a-d可用(其在本文可以单数称为虚拟机实例78或复数称为虚拟机实例78)。虚拟机实例78c和78d是虚拟区域生成虚拟机(“vagvm”)实例。vagvm虚拟机实例78c和78d可以被配置成执行根据本公开并在上面详细描述的用于虚拟区域生成和操纵的技术的全部或任何部分和/或所公开的技术中的任何其他技术。应当理解,虽然图7中所示的特定示例在每个服务器中包括一个vagvm虚拟机,但这仅仅是示例。服务器可能包括多于一个vagvm虚拟机,或可能不包括任何vagvm虚拟机。

计算硬件的虚拟化技术的可用性已经提供了好处用于向客户提供大规模计算资源,并允许在多个客户之间高效且安全地共享计算资源。例如,虚拟化技术可以通过向每个用户提供由物理计算装置托管的一个或多个虚拟机实例来允许在多个用户之间共享物理计算装置。虚拟机实例可以是充当不同逻辑计算系统的特定物理计算系统的软件仿真。这样的虚拟机实例在共享给定物理计算资源的多个操作系统之间提供隔离。此外,一些虚拟化技术可以提供跨越一个或多个物理资源的虚拟资源,诸如具有跨越多个不同的物理计算系统的多个虚拟处理器的单个虚拟机实例。

参考图7,通信网络73可以例如是链接网络的可公开访问的网络,并且可能由诸如因特网的不同的各方操作。在其他实施方案中,通信网络73可以是专用网络,诸如非特许用户完全或部分不能访问的企业网络或大学网络。在仍然其他实施方案中,通信网络73可以包括可访问因特网和/或可从因特网访问的一个或多个专用网络。

通信网络73可以提供对计算机72的访问。用户计算机72可以是由用户70或数据中心85的其他客户使用的计算机。例如,用户计算机72a或72b可以是服务器、台式或膝上型个人计算机、平板计算机、无线电话、个人数字助理(pda)、电子书阅读器、游戏机、机顶盒或能够访问数据中心85的任何其他计算装置。用户计算机72a或72b可以直接连接到因特网(例如,经由电缆调制解调器或数字用户线(dsl))。虽然仅描绘了两个用户计算机72a和72b,但应当理解,可能有多个用户计算机。

用户计算机72也可以用来配置由数据中心85提供的计算资源的各方面。就这一点而言,数据中心85可以提供网关或web接口,可以通过使用在用户计算机72上执行的web浏览器应用程序来经由该网关或web接口配置该数据中心的操作的各方面。另选地,在用户计算机72上执行的独立应用程序可以访问由数据中心85公开的应用编程接口(api)以执行配置操作。也可以使用用于配置在数据中心85处可用的各种web服务的操作的其他机制。

图7所示的服务器76可以是被适当地配置成提供上述计算资源的标准服务器,并且可以提供用于执行一个或多个web服务和/或应用的计算资源。在一个实施方案中,计算资源可以是虚拟机实例78。在虚拟机实例的示例中,服务器76中的每一个可以被配置成执行能够执行虚拟机实例78的实例管理器80a或80b(其在本文可以单数称为实例管理器80或复数称为实例管理器80)。例如,实例管理器80可以是虚拟机监视器(vmm)或者被配置成能够执行服务器76上的虚拟机实例78的另一类型的程序。如上所述,虚拟机实例78中的每一个可以被配置成执行应用的全部或一部分。

应当理解,尽管上面公开的实施方案讨论了虚拟机实例的上下文,但其他类型的实施可以与本文公开的概念和技术一起使用。例如,本文公开的实施方案也可以与未使用虚拟机实例的计算系统一起使用。

在图7所示的示例数据中心85中,路由器71可以用来将服务器76a和76b互连。路由器71也可以连接到网关74,该网关连接到通信网络73。路由器71可以连接到一个或多个负载平衡器,并且可以例如通过基于此类通信的特性(例如,报头信息,包括源和/或目的地地址、协议标识符、大小、处理要求等)和/或专用网络的特性(例如,基于网络拓扑的路由等)在适当时转发分组或其他数据通信来单独地或组合地管理数据中心85中的网络内的通信。应当理解,为了简单起见,示出了这个示例的计算系统和其他装置的各个方面,而没有示出某些常规细节。另外的计算系统和其他装置可以在其他实施方案中互连,并且可以以不同的方式互连。

在图7所示的示例数据中心85中,服务器管理器75也用于至少部分地引导去往、来自和/或服务器76a和76b之间的各种通信。虽然图7描绘了位于网关74与服务器管理器75之间的路由器71,但这仅仅是示例性配置。例如,在一些情况下,服务器管理器75可以位于网关74与路由器71之间。在一些情况下,服务器管理器75可以检查来自用户计算机72的进入通信的部分,以确定一个或多个适当的服务器76以接收和/或处理进入通信。服务器管理器75可以基于因素诸如身份、位置或与用户计算机72相关联的其他属性、与通信相关联的任务的性质、与通信相关联的任务的优先级、与通信相关联的任务的持续时间、与通信相关联的任务的大小和/或估计资源使用和许多其他因素来确定适当的服务器以接收和/或处理进入通信。例如,服务器管理器75可以收集或以其他方式访问与各种任务相关联的状态信息和其他信息,以便例如协助管理与这些任务相关联的通信和其他操作。

应当理解,图7中所示的网络拓扑已经大大简化,并且可以利用更多的网络和联网装置来将本文公开的各种计算系统互连。这些网络拓扑和装置对于本领域技术人员来说应该是明显的。

还应当理解,图7中所描述的数据中心85仅仅是说明性的,并且可以使用其他实施。另外,应当理解,本文公开的功能可以用软件、硬件或者软件和硬件的组合来实现。其他实施对于本领域技术人员来说应该是明显的。还应当理解,服务器、网关或其他计算装置可以包括可以交互并且执行所描述功能类型的硬件或软件的任何组合,包括但不限于:台式机或其他计算机、数据库服务器、网络存储装置和其他网络装置、pda、平板电脑、手机、无线电话、寻呼机、电子记事簿、因特网设备、基于电视的系统(例如,使用了机顶盒和/或个人/数字录像机)以及包括适当通信能力的各种其他消费产品。另外,在一些实施方案中,由所示模块提供的功能可以组合成更少的模块或分布在另外的模块中。类似地,在一些实施方案中,可以不提供一些所示模块的功能和/或可以使用其他附加功能。

另外,本公开的实施方案可以参照以下条款进行描述:

1.一种用于生成虚拟区域用于以电子方式呈现的内容项的计算系统,所述计算系统包括:

一个或多个处理器;

一个或多个存储器,所述一个或多个存储器中存储有计算机指令,所述计算机指令当由所述一个或多个处理器执行时,导致至少所述计算系统执行包括以下各项的操作:

接收与所述虚拟区域相关联的多个规则,所述多个规则包括一个或多个地形规则和一个或多个对象规则;

应用所述一个或多个地形规则以生成与所述虚拟区域相关联的地形数据;

接收与时间、季节、天气、对象导航或用户输入中的至少一个相关联的第一信息;

应用所述一个或多个对象规则以生成与所述虚拟区域相关联的第一对象数据,其中至少部分地基于所述地形数据和所述第一信息来应用所述一个或多个对象规则;

提供所述第一对象数据以结合所述第一对象数据来执行所述虚拟区域的至少一部分的第一渲染;

接收与时间、季节、天气、对象导航或用户输入中的至少一个的至少一个变化相关联的第二信息;

再应用所述一个或多个对象规则以生成与所述虚拟区域相关联的第二对象数据,其中至少部分地基于所述地形数据和所述第二信息来再应用所述一个或多个对象规则;以及

提供所述第二对象数据以结合所述第二对象数据来执行所述虚拟区域的至少一部分的第二渲染。

2.根据条款1所述的计算系统,其中所述一个或多个地形规则由至少一个服务器和至少一个客户端二者分开应用。

3.根据条款1所述的计算系统,其中所述多个规则中的至少一个在所述内容项的执行期间调整并且在调整后进行应用,而无需停止和重新开始所述内容项的执行。

4.根据条款1所述的计算系统,其中所述虚拟区域分成多个子区域,并且其中每个子区域具有一个或多个相关联的部件,所述一个或多个相关联的部件在它们的相关联的子区域内应用所述多个规则中的一个或多个并且报告与所述多个规则中的所述一个或多个在它们的相关联的子区域内的应用相关联的信息。

5.一种用于生成虚拟区域用于以电子方式呈现的内容项的方法,所述方法包括:

接收与所述虚拟区域相关联的多个规则,所述多个规则包括一个或多个地形规则和一个或多个对象规则;

应用所述一个或多个地形规则以生成与所述虚拟区域相关联的地形数据;

接收与时间、季节、天气、对象导航或用户输入中的至少一个相关联的第一信息;

应用所述一个或多个对象规则以生成与所述虚拟区域相关联的第一对象数据,其中至少部分地基于所述地形数据和所述第一信息来应用所述一个或多个对象规则;

提供所述第一对象数据以结合所述第一对象数据来执行所述虚拟区域的至少一部分的第一渲染;

接收与时间、季节、天气、对象导航或用户输入中的至少一个的至少一个变化相关联的第二信息;

再应用所述一个或多个对象规则以生成与所述虚拟区域相关联的第二对象数据,其中至少部分地基于所述地形数据和所述第二信息来再应用所述一个或多个对象规则;以及

提供所述第二对象数据以结合所述第二对象数据来执行所述虚拟区域的至少一部分的第二渲染。

6.根据条款5所述的方法,其中所述多个规则中的至少一个在所述内容项的执行期间调整并且在调整后进行应用,而无需停止和重新开始所述内容项的执行。

7.根据条款5所述的方法,其中所述一个或多个地形规则由至少一个服务器和至少一个客户端二者分开应用。

8.根据条款5所述的方法,其中所述虚拟区域分成多个子区域,并且其中每个子区域具有一个或多个相关联的部件,所述一个或多个相关联的部件在它们的相关联的子区域内应用所述多个规则中的一个或多个并且报告与所述多个规则中的所述一个或多个在它们的相关联的子区域内的应用相关联的信息。

9.根据条款5所述的方法,其进一步包括提供用户界面,所述用户界面允许在所述内容项的执行期间呈现和更新与所述多个规则相关联的信息并且允许在所述内容项的执行期间调整所述多个规则。

10.根据条款5所述的方法,其中至少一个对象规则指示以下至少一个:一个或多个对象之间的密度或距离;对象外观;对象行为;一个或多个对象类型的数量或分布;与一个或多个时间、季节或天气状况相关联的对象特性;与一个或多个地形类型有关的对象特性;与一个或多个其他对象有关的对象特性;或与一个或多个边界或位置有关的对象特性。

11.根据条款5所述的方法,其中至少一个地形规则指示以下至少一个:一个或多个地形类型的数量或分布;地形外观;护道坡度;山脉高度;山谷强度;与一个或多个时间、季节或天气状况相关联的地形特性;与一个或多个边界或位置有关的地形特性。

12.根据条款5所述的方法,其进一步包括维持与所述虚拟区域相关联的每日时间或每年时间中的至少一个,并且其中至少部分地基于所述每日时间或所述每年时间中的至少一个来应用所述多个规则中的至少一个。

13.一个或多个非暂时性计算机可读存储介质,所述一个或多个非暂时性计算机可读存储介质中存储有指令,所述指令当由一个或多个计算节点执行时,导致所述一个或多个计算节点执行包括以下各项的操作:

接收与虚拟区域相关联的多个规则,所述多个规则包括一个或多个地形规则和一个或多个对象规则;

应用所述一个或多个地形规则以生成与所述虚拟区域相关联的地形数据;

接收与时间、季节、天气、对象导航或用户输入中的至少一个相关联的第一信息;

应用所述一个或多个对象规则以生成与所述虚拟区域相关联的第一对象数据,其中至少部分地基于所述地形数据和所述第一信息来应用所述一个或多个对象规则;

提供所述第一对象数据以结合所述第一对象数据来执行所述虚拟区域的至少一部分的第一渲染;

接收与时间、季节、天气、对象导航或用户输入中的至少一个的至少一个变化相关联的第二信息;

再应用所述一个或多个对象规则以生成与所述虚拟区域相关联的第二对象数据,其中至少部分地基于所述地形数据和所述第二信息来再应用所述一个或多个对象规则;以及

提供所述第二对象数据以结合所述第二对象数据来执行所述虚拟区域的至少一部分的第二渲染。

14.根据条款13所述的一个或多个非暂时性计算机可读存储介质,其中所述多个规则中的至少一个在所述内容项的执行期间调整并且在调整后进行应用,而无需停止和重新开始所述内容项的执行。

15.根据条款13所述的一个或多个非暂时性计算机可读存储介质,其中所述一个或多个地形规则由至少一个服务器和至少一个客户端二者分开应用。

16.根据条款13所述的一个或多个非暂时性计算机可读存储介质,其中所述虚拟区域分成多个子区域,并且其中每个子区域具有一个或多个相关联的部件,所述一个或多个相关联的部件在它们的相关联的子区域内应用所述多个规则中的一个或多个并且报告与所述多个规则中的所述一个或多个在它们的相关联的子区域内的应用相关联的信息。

17.根据条款13所述的一个或多个非暂时性计算机可读存储介质,其中所述操作进一步包括提供用户界面,所述用户界面允许在所述内容项的执行期间呈现和更新与所述多个规则相关联的信息并且允许在所述内容项的执行期间调整所述多个规则。

18.根据条款13所述的一个或多个非暂时性计算机可读存储介质,其中至少一个对象规则指示以下至少一个:一个或多个对象之间的密度或距离;对象外观;对象行为;一个或多个对象类型的数量或分布;与一个或多个时间、季节或天气状况相关联的对象特性;与一个或多个地形类型有关的对象特性;与一个或多个其他对象有关的对象特性;或与一个或多个边界或位置有关的对象特性。

19.根据条款13所述的一个或多个非暂时性计算机可读存储介质,其中至少一个地形规则指示以下至少一个:一个或多个地形类型的数量或分布;地形外观;护道坡度;山脉高度;山谷强度;与一个或多个时间、季节或天气状况相关联的地形特性;与一个或多个边界或位置有关的地形特性。

20.根据条款13所述的一个或多个非暂时性计算机可读存储介质,其中所述操作进一步包括维持与所述虚拟区域相关联的每日时间或每年时间中的至少一个,并且其中至少部分地基于所述每日时间或所述每年时间中的至少一个来应用所述多个规则中的至少一个。

在至少一些实施方案中,实现本文所描述的一个或多个技术的一部分或全部的服务器可以包括计算机系统,该计算机系统包括或被配置成访问一个或多个计算机可访问介质。图8描绘了计算机系统,该计算机系统包括或被配置成访问一个或多个计算机可访问介质。在所示实施方案中,计算装置15包括一个或多个处理器10a、10b和/或10n(其在本文可单数称为“处理器10”或复数称为“处理器10”),该一个或多个处理器经由输入/输出(i/o)接口30耦合到系统存储器20。计算装置15还包括耦合到i/o接口30的网络接口40。

在各种实施方案中,计算装置15可以是包括一个处理器10的单处理器系统或包括多个处理器10(例如,2、4、8或另一适当数量)的多处理器系统。处理器10可以是能够执行指令的任何合适的处理器。例如,在各种实施方案中,处理器10可以是实现诸如x86、powerpc、sparc或mipsisa或任何其他合适的isa的各种指令集架构(isa)中的任何一种的嵌入式处理器。在多处理器系统中,处理器10中的每一个可以共同地(但不是必须)实现相同的isa。

系统存储器20可以被配置成存储处理器10可访问的指令和数据。在各种实施方案中,可以使用任何合适的存储器技术诸如静态随机存取存储器(sram)、同步动态ram(sdram)、非易失性/闪存类型存储器或任何其他类型的存储器来实现系统存储器20。在例示的实施方案中,将实现一个或多个期望功能(如上述那些方法、技术和数据)的程序指令和数据示出为作为代码25和数据26存储在系统存储器20内。

在一个实施方案中,可以将i/o接口30配置成对处理器10、系统存储器20以及装置内的任何外围设备(包括网络接口40或其他外围接口)之间的i/o业务量进行协调。在一些实施方案中,i/o接口30可以执行任何所需的协议、定时或者其他数据变换,以便将数据信号从一个部件(例如,系统存储器20)转换为适于另一部件(例如,处理器10)使用的格式。在一些实施方案中,i/o接口30可以包括对通过各种类型的外围总线附接的装置的支持,其中外围总线例如外围部件互连(pci)总线标准或者通用串行总线(usb)标准的变形。在一些实施方案中,可以将i/o接口30的功能划分为两个或更多分离的部件(例如,北桥和南桥)。而且,在一些实施方案中,i/o接口30的一些或全部功能(诸如与系统存储器20的接口)可以直接并入处理器10。

例如,网络接口40可被配置成允许数据在计算装置15与附接到一个或多个网络50的另一个或多个装置60诸如其他计算机系统或装置之间交换。例如,在各种实施方案中,网络接口40可以支持经由任何合适的有线或无线通用数据网络(诸如以太网网络类型)的通信。另外,网络接口40可以支持经由电信/电话网络(例如模拟话音网络或数字光纤通信网络)、经由存储区域网络(例如光纤信道san(存储区域网络))或经由任何其他合适类型的网络和/或协议的通信。

在一些实施方案中,系统存储器20可以是被配置成存储如上所述用于实现对应的方法和设备的实施方案的程序指令和数据的计算机可访问介质的一个实施方案。然而,在其他实施方案中,可以接收、发送或在不同类型的计算机可访问介质上存储程序指令和/或数据。一般而言,计算机可访问介质可以包括非暂时性存储介质或存储器介质,诸如经由i/o接口30耦合到计算装置15的磁性或光学介质(例如,盘或dvd/cd)。非暂时性计算机可访问存储介质还可以包括任何易失性或非易失性介质,诸如ram(例如,sdram、ddrsdram、rdram、sram等)、rom(只读存储器)等,它们可以包括在计算装置15的一些实施方案中作为系统存储器20或另一类型的存储器。此外,计算机可访问介质可以包括经由通信介质诸如网络和/或无线链路(诸如可以经由网络接口40实现的那些)传送的传输介质或信号诸如电信号、电磁信号或数字信号。多个计算装置的部分或全部,诸如图8中所示的那些,可以用于实现各种实施方案中所描述的功能;例如,在各种不同的装置和服务器上运行的软件部件可以协作来提供功能。在一些实施方案中,可以使用存储装置、网络装置或专用计算机系统来实现所述功能的部分。本文使用的术语“计算装置”是指至少所有这些类型的装置,并不限于这些类型的装置。

可以将由诸如公司或公共部门组织的实体建立以提供经由因特网和/或其他网络可访问的一个或多个web服务(诸如各种类型的基于云的计算或存储)到一组分布式客户端的网络称为提供者网络。这样的提供者网络可以包括托管实现和分布由提供者网络提供的基础设施和web服务所需的各种资源池诸如物理和/或虚拟化计算机服务器、存储装置、联网设备等的集合的多个数据中心。在一些实施方案中,可以将资源以与web服务有关的各种单位(诸如用于存储的存储容量的量、用于处理的处理能力)作为实例、作为相关服务集合等提供到客户端。例如,虚拟计算实例可以包括一个或多个服务器,该一个或多个服务器具有指定的计算能力(其可以通过指示cpu的类型和数量、主存储器大小等来指定),以及指定的软件堆栈(例如,操作系统的特定版本,其可以在管理程序上依次运行)。

计算节点(computenode),也可称为计算节点(computingnode),可以在多种计算环境中实现,诸如商品硬件计算机、虚拟机、web服务、计算集群和计算设备。为了方便起见,可以将这些计算装置或环境中的任一个描述为计算节点。

多个不同类型的计算装置可以单独地或组合地用于在不同实施方案中实现提供者网络的资源,例如计算机服务器、存储装置、网络装置等。在一些实施方案中,可以例如通过向用户提供管理员登录名和密码来使客户或用户直接访问资源实例。在其他实施方案中,提供者网络运营商可以允许客户端针对指定的客户端应用指定执行要求,并且在适用于应用的执行平台(例如应用服务器实例,javatm虚拟机(jvm)、通用或专用操作系统、支持各种解释或编译的编程语言(诸如ruby、perl、python、c、c++等)的平台或高性能计算平台)上代表客户调度应用的执行,而不需要例如要求客户端直接访问实例或执行平台。在一些实施中,给定的执行平台可以利用一个或多个资源实例;在其他实施中,可以将多个执行平台映射到单个资源实例。

在多个环境中,提供者网络的运营商,其实现不同类型的虚拟化计算、存储和/或其他网络可访问功能,可以允许客户保留或购买以各种资源获取模式对资源的访问。计算资源提供者可以提供工具以供客户选择和启动期望的计算资源、将应用部件部署到计算资源并维护在环境中执行的应用。另外,计算资源提供者可以提供另外的工具以供客户在需要时或应用的能力要求变化手动地或通过自动缩放来快速且容易地放大或缩小分配给应用的资源的数量和类型。由计算资源提供者提供的计算资源可以可称为实例的离散单元变得可用。实例可以表示物理服务器硬件平台、在服务器上执行的虚拟机实例或两者的某种组合。各种类型和配置的实例可以变得可用,包括执行不同的操作系统(os)和/或管理程序的不同大小的资源,且安装有各种软件应用、运行时间等等。例如,实例可以在特定的可用性区域中进一步变得可用,这些可用性区域表示逻辑区域、容错区域、数据中心或底层计算硬件的其他地理位置。可以在可用性区域内或跨可用性区域复制实例以改善实例的冗余性,并且可以在特定的可用性区域内或跨可用性区域迁移实例。例如,与可用性区域中的特定服务器的客户端通信的延时可能小于与不同服务器的客户端通信的延时。因此,可以将实例从较高延时服务器迁移到较低延时服务器以改善整体客户端体验。

在一些实施方案中,可以将提供者网络组织成多个地理区域,并且每个区域均可包括一个或多个可用性区域。可用性区域(其也可称为可用性容器)进而可以包括一个或多个不同的位置或数据中心,其被配置成使得给定可用性区域中的资源可以与其他可用性区域中的故障隔离或绝缘。也就是说,一个可用性区域中的故障可能不会导致在任何其他可用性区域出现故障。因此,资源实例的可用性配置文件旨在独立于不同可用性区域中的资源实例的可用性配置文件。客户端能够通过在相应的可用性区域中启动多个应用实例来保护其应用免于在单个位置出现故障。同时,在一些实施中,可以在驻留在同一地理区域内的资源实例之间提供廉价且低延时的网络连接(并且同一可用性区域的资源之间的网络传输可能甚至更快)。

如上所述,可由内容提供者向一个或多个客户端提供内容。本文使用的术语内容是指任何可呈现的信息,并且本文使用的术语内容项是指任何这种可呈现的信息的任何集合。内容提供者可以例如提供用于向客户端提供内容的一个或多个内容提供服务。内容提供服务可以驻留在一个或多个服务器上。内容提供服务可以是可扩展的以满足一个或多个客户的需求,并且可以基于呼入客户端请求的数量和类型来增加或降低能力。内容提供服务的各部分也可以迁移成置于请求客户端的延时减少的位置。例如,内容提供者可以确定与在物理上和/或逻辑上最接近特定客户端的内容提供服务相关联的系统或网络的“边缘”。然后,内容提供者可以例如“以自旋加快的方式”迁移资源或以其他方式使用与所确定的边缘相关联的部件用于与特定客户端进行交互。在一些情况下,这样的边缘确定过程可以提供用于识别和使用非常适合与特定客户端交互的部件的有效技术,并且在一些实施方案中,可以减少内容提供者与一个或多个客户端之间的通信延时。

在先前部分中描述的过程、方法和算法中的每一个可以体现在由一个或多个计算机或计算机处理器执行的代码模块中并且通过这些代码模块完全或部分地自动化。代码模块可以存储在任何类型的非暂时性计算机可读介质或计算机存储装置上,诸如硬盘驱动器、固态存储器、光盘等。过程和算法可以在专用电路中部分地或全部地实现。所公开的过程和过程步骤的结果可以永久地或以其他方式存储在任何类型的非暂时性计算机存储设备(例如,易失性或非易失性存储设备)中。

上述的各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合均旨在落入本公开的范围内。另外,在一些实施中,可以省略某些方法或过程块。本文描述的方法和过程也不限于任何特定的顺序,并且与其相关的块或状态可以其他适当的顺序来执行。例如,所描述的块或状态可以与特别公开的顺序不同的顺序执行,或者可以将多个块或状态组合在单个块或状态中。示例块或状态可以串行地、并行地或以某种其他方式执行。可以从所公开的示例实施方案中添加或去除块或状态。本文所描述的示例系统和部件可以与所述不同的方式来配置。例如,与所公开的示例实施方案相比,可以添加、去除或重新布置元素。

还应当理解,各个项被说明为在使用时存储在存储器中或存储在存储设备上,并且为了进行存储器管理和保持数据完整性,这些项或者其部分可在存储器和其他存储装置之间发生转移。另选地,在其他实施方案中,软件模块和/或系统中的一些或全部可以在另一个装置上的存储器中执行并且经由计算机间通信与例示的计算系统进行通信。此外,在一些实施方案中,系统和/或模块中的一些或全部可以以其他方式来实现或提供,诸如至少部分地以固件和/或硬件的方式,包括但不限于一个或多个专用集成电路(asic)、标准集成电路、控制器(例如,通过执行适当的指令,并且包括微控制器和/或嵌入式控制器)、现场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld)等。模块、系统和数据结构中的一些或全部也可以(例如,作为软件指令或结构体数据)存储在计算机可读介质(诸如可由适当的驱动器或经由适当的连接读取的硬盘、存储器、网络或便携介质)上。系统、模块和数据结构还可以作为所生成的数据信号(例如,作为载波或其他模拟或数字传播信号的一部分)在各种计算机可读传输介质(包括基于无线和基于有线/电缆的介质)上进行传输,并且可以采用各种形式(例如,作为单个或多路复用模拟信号的一部分或作为多个离散数字分组或帧)。这样的计算机程序产品在其他实施方案中也可以采取其他形式。因此,本发明可以用其他计算机系统配置来实践。

除非另外明确陈述,或另外在上下文中如使用的那样理解,本文使用的条件性语言(尤其是例如“可(can)”、“可(could)”、“可能(might)”、“可能(may)”、“例如(e.g.)”等通常旨在传达某些实施方案包括某些特征、元素和/或步骤,而其他实施方案不包括某些特征、元素和/或步骤。因此,这种条件性语言一般不旨在暗示特征、元素和/或步骤无论如何都是一个或多个实施方案所必需的,或者一个或多个实施方案都必然包括用于有或没有作者输入或提示决定任何特定实施方案中是否包括或将执行这些特征、元素和/或步骤的逻辑。术语“包括/包括(comprising/including)”、“具有(having)”等是同义词,且以开放式的方式包括性地使用,并且不排除另外的元素、特征、动作、操作等等。另外,术语“或”以其包括性的含义(而不是以其排他性的含义)使用,从而当例如用于连接元素列表时,术语“或”是指列表中的一个、一些或全部元素。

尽管已经描述了某些示例实施方案,但这些实施方案仅仅是作为示例给出的,并不意图限制本文公开的本发明的范围。因此,前述描述中的任何内容都不旨在暗示任何特定特征、特性、步骤、模块或块是必需的或不可或缺的。实际上,本文所描述的新颖的方法和系统可以体现为各种其他形式;此外,可以在不脱离本文所公开的本发明的精神的情况下,对本文所描述的方法和系统的形式进行各种省略、替换和更改。所附的权利要求及其等同物都旨在覆盖落入本文所公开的某些本发明的范围和精神内的这类形式或修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1