为可在通信网络上执行的多用户应用程序的应用程序开发接口的制作方法

文档序号:6464482阅读:467来源:国知局
专利名称:为可在通信网络上执行的多用户应用程序的应用程序开发接口的制作方法
技术领域
本发明一般涉及通过通信网络执行的多用户应用程序,具体说,涉及为开发用于分布式网络的多用户应用程序的一个应用程序接口。
背景技术
随着广域计算机网络(WAN)和因特网的到来,已经开发出各种分布式客户服务器计算模型以便利数据在网络节点之间传输。在计算机和一个网络中的子网络之间的链接的结构称为特别网络或因特网的基础设施。每一网络具有一个或者多个主链接,它通过网络“主干”连接该特别网络的主要节点。设计网络主干运载主要网络节点之间大量的传输信息。主干常常关于沿节点之间的主干传输数据所使用的通信链接类型来定义。普遍的全国网络主干链接类型包括较新的多信道广播协议,诸如异步传输方式(ATM)和较常规的点对点链接。所用协议或链接的类型帮助定义数据沿特定主干传输的方式。当数据传输使用多信道广播协议沿网络主干发生时,在一个短暂的建立时间后信息直接在发送者和接收者之间发送。因此,数据沿网络基础设施上最迅速的路径传输到目的地。与此相比,使用常规点对点链接发生沿网络主干的数据传输需要通过源和目的地之间的多个点对点链接的路径。
通过网络主干传输的数据量依赖于特定主干的带宽。在计算机网络中,较大的带宽指示较快的数据传输能力。使用多路转换技术沿一个网络主干发送多数据传输,这里,沿主干的数据传输量由特定链接的带宽决定。虽然在所有网络通信中的一个因素,带宽限制在沿全国网络主干的传输中产生了特别的问题,不管所用的协议或链接。
因为数据在网络主干上传输的相对速度和在每一数据分组中传输的较少的数据量,由网络带宽限制引起的延迟在网络运行中传统上不是什么大的缺点。然而,多用户交互应用的出现使其成为一个紧迫的事项。
多用户应用是一种运行在计算机系统上的计算机程序,它允许在地理上分散的多个参加者与该计算机程序和其他用户在一个应用环境中交互反应,通常通过通信链接。例如,多用户应用可以是一个视频游戏,它允许不同的、地域上分散的参加者参加同一游戏和以实时方式彼此虚拟竞争。另一个例子是多用户飞行模拟器或空战模拟,它允许参加者在一个空间内驾驶飞机与在同一空间中的另一参加者交战。用户在多用户应用中与计算机程序和其他用户交互反应的频率和程度依赖于各种考虑。这些考虑包括在每一用户和计算机系统之间的有关通信链接的数据传输能力、该应用的性质(它是否暗示包括图形或多媒体的密集数据操作)、和在较小的程度上,每一用户对计算机系统在地理上的接近程度。如果在应用环境内的用户之间需要实时交互反应,这意味着密集数据操作,则通信链接的数据传输能力便成为至关重要的。
每一应用环境定义特定的边界,一个或者多个参加者可以在其中操作。在上述空战模拟的例子中,可以驾驶飞机的空间可以模拟应用环境。为此,为方便在一个应用环境中的参加者之间真正的交互反应,需要把关于在一个给定环境中每一个参加者的完整信息传输到在该环境中的另外的每一个参加者。当这种完整的信息或数据经数据分组通过网络主干发送时,上面讨论的带宽限制要么限制参加者的数目,要么禁止需要在参加者之间实时交互反应的复杂应用。应用越复杂,为关于每一参加者的完整信息的需要就越大。反过来,更多的信息导致较大的数据分组,它增加了网络主干的负担。由于这些理由,现有多用户应用一直不能获得参加者之间的全国的交互反应性。
主干的加载问题在任何类型的中心控制的多用户应用中产生发送/接收不平衡。为使远程参加者仍然知道其他参加者,一个中心服务器总是发送出比接收到的数据分组较多数目的数据分组。现有多用户应用一般不能克服通过网络的带宽限制来提供实时、密集数据量、交互式参与。在每一数据分组中需要的数据量和在一个特别网络主干上的参加者数目之间的权衡限制了多用户应用实现全国参与的能力,这里所有参加者了解在他们的特别的应用环境中所有其他相关参加者。在一个特别的应用环境中关于每一个参加者传输的数据量越大,则能够参加的参加者越少。虽然在现有系统中已经使用牺牲数据以允许较大数目的参加者的方法,但是在寻找实时交互反应时这种解决方案是不可工作的,因为限制数据要么限制参与到有限的区域,要么禁止在一个给定的应用环境中的无缝参与。如果在一个多用户应用中给相关参加者通信不适当的或者不充分的数据,则参加者将不能满意的参加。数据传输和参加者数目的权衡限制了真正全国范围多用户应用的开发。
为运行在一个通信网络上的多用户应用程序减少带宽负载的问题的解决方案在美国专利文献No.5,841,980中说明,名称为“多用户应用中的分布式通信网络系统”,转让给本申请的受让人,其结合在这里作为参考。该系统把一个多用户应用的应用环境分成不同的区域,并根据对象类型定义多个相对于一个应用环境和参加者感兴趣的区,相对于参加者的位置或预先决定的位置,和优先级。只有可应用于在给定应用环境中的每一参加者的相关数据才沿网络主干传输。
使用典型的多用户网络系统的应用程序编程接口和应用程序通常需要相当数量的工作以定义使用网络系统的节点和其它实体。在这种场合,常常有许多关于使用该网络结构的程序或应用程序开发的未知项。多用户应用通常使用的对象由服务器定义并传播给客户。对象定义必须为使用该对象的客户侧应用程序内的每一功能或过程重新建立。此外,对象更新的传播通常为该对象的所有特征执行。这样,为多用户应用建立对象和更新的对象数据的传输在当今的多用户应用程序开发系统中相对不足。因此,所需要的是,为开发交互式程序、游戏、和使用多用户网络引擎的应用程序的一个简化的开发模型。
发明概述说明一种用于开发可在分布式网络上执行的多用户应用程序的应用程序接口和方法。提供一个对象定义结构用于由多用户应用程序使用的对象的基于客户定义。对象定义包括与该对象关联的和由该应用程序使用的多个特征,以实现通过分布式网络与其他客户的交互反应。使一个广播日程表与一个或多个特征关联,并控制对象数据从建立客户到该分布式网络中的其他客户的传输。在多用户应用程序执行期间,按照广播日程表中提供的值,对象特征自动周期地更新或在特征相对于一个预先设定的门限值改变时更新。由客户建立的对象定义由在多用户应用程序内所有使用该对象的功能和过程使用。可以指定一个或多个过滤器功能,用于限制对象更新的功能特征的传播到网络内的一个或者多个其他客户。
本发明的其它目的、特征、和优点从附图和后面的详细说明书中显见。
附图简要说明本发明用实例来说明,不限制在附图中的图形上,附图中相似的参考号码指示相似的元件。和其中

图1表示一个分布式计算机网络系统,它允许参加者执行多用户交互式应用程序,它实现了本发明的实施例;图2A表示根据本发明的一个实施例、为实现分布式存储器引擎的一个客户集成的服务器拓朴结构;图2B表示根据本发明的一个实施例、为实现分布式存储器引擎的一个集成的单应用服务器拓朴结构;图2C表示根据本发明的一个实施例、为实现分布式存储器引擎的一个带有便携对话主机的中心服务器拓朴结构;图2D表示根据本发明的一个实施例、为实现分布式存储器引擎的一个多应用服务器。
图3是根据本发明的一个实施例的一个表,表示用于一个对象实例的字段和广播日程表。
图4是根据本发明的一个实施例的流程图,表示使用一个应用程序接口初始化一个应用程序和建立对象的步骤。
优选实施例的详细说明本发明指向为开发在网络引擎中使用的应用程序提供一个简单的接口,它能减少在大规模网络上的多用户应用程序中的带宽限制。
用于多用户应用程序的分布式网络图1表示一个分布式计算机网络系统,该网络系统允许参加者执行多用户交互作用的应用程序,和实现本发明的实施例。在各系统中定义了标有A到E的5个分立的区域。每一区域A到E分别表示单一服务器22a到22e,它们通过一个网络主干10彼此连接。为说明起见,每一服务器22为在每一区域内的同样数目的客户计算机(参加者)服务,例如100个参加者,表示为每一服务器的客户1到100。然而,应该理解,服务器可以在大小和类型上变化,如可以是服务器服务的参加者。
不是只有一个服务器运行一个多用户应用程序,而是一个公共的多用户应用程序配置为运行在该分布式系统20中的所有服务器上。多用户应用程序建立一个单一的应用环境,所有用户在其中运行。代替单一服务器监视和管理在该应用环境中的参加者活动,由在该分布式系统20中的每一服务器管理对应用环境的参与。这样在每个区域服务器22上高效监视应用环境。
如图1所示,每一服务器22为它的100个特定的参加者管理进行中的多用户应用程序环境。在一个实施例中,在服务器22之间不提供数据共享。称为对话主机的单一服务器计算机存储所有服务器的世界(world)状态。对话主机是一个提供特定网络功能的服务器计算机,诸如客户管理,仲裁、过滤,和其它这种功能。每一服务器22把关于它自己100个参加者的信息传递给对话主机,后者然后存储所有服务器的状态和它们各自的参加者。
在另一个可选择的实施例中,每一服务器22把关于它自己100个参加者的信息传递给在其它区域中的服务器,并接收说明在其它区域中的参加者的数据分组。因此每一服务器22能够管理不仅它自己直接的参加者的参与,而且通过多用户应用程序还允许其他参加者,而不成比例地增加给网络主干10的负担。这一多服务器实施例可以用于容错应用,在这些应用中两个或者多个服务器共享数据,使得如果一个服务器发生故障,则另一个服务器可以取代它的位置。这样的多用户应用程序也可以用于负载平衡,其中可以在多个服务器之间共享带宽。
在本发明的一个实施例中,图1中表示的分布式系统包括一个服务器过程,它提供一种方法,根据对在应用环境中的每一参加者的相关性注视在网络的参加者之间传输的数据。根据一组预定的特征定义与应用环境相关的多个感兴趣的区域或在一个应用环境中的参加者。这便利了只有最相关的数据传输给最相关的协同参加者。
根据一个对象类型定义感兴趣的区域,根据该对象与一个参加者的接近程度和与他的关系定义相对于该对象的区域边界位置和感兴趣的区域的优先级。一个对象类型通常的特征为实在的东西,数据,文字或者事件,但是可以包括用户可定义的子类型。实在的对象是在一个应用环境中的参加者或者实体,其由应用程序实时更新。实在对象的属性包括多个元素,诸如对象定向、位置、外形、和对象类型。数据对象携带参加者的身份、状态、或其它有关该参加者并传输给其他参加者的类信息。文字对象提供基于文字为支持交互的参加者通信和其它ASCII应用所必需的材料。事件对象实现参加者之间的交互反应,具有诸如事件类型、事件位置和事件持续时期的属性。
应用程序接口在本发明的一个实施例中,一个在多用户应用程序开发中使用的应用程序接口可在如图1的分布式通信网络系统上执行。该应用程序接口包括一个网络管理器进程,它提供对分布式系统的客户机/服务器网络引擎的一个接口,和能够使诸如视频游戏的多用户应用和程序的开发简化。网络管理器处理所有到来的和发出的数据,包括对话主机,后者执行客户仲裁、分组过滤和应用特定逻辑处理。网络管理器允许分布式系统100内的一系列特征,包括客户管理,分布对象同步,带宽控制的数据流广播,和集成的服务器能力。
应用程序接口一般作为构建在图1所示客户机/服务器网结构上的网络插件实现。应用程序接口包括多个工具,它们允许每一应用程序简单地通过一系列注册功能公布它自己的对象和消息结构。在相对与一个基础状态产生一个对象后立即提供关于它的更新的自动广播。它还允许定义过滤器功能用于限制对象、数据流和消息的传播,和允许应用程序为远程客户更新、对象更新、消息和数据流更新回叫。包括网络管理器进程和网络插件的应用程序接口这里可以称为“分布式存储器引擎”,因为给一个分布式系统的客户机/服务器网络引擎提供了一个接口。
应用程序接口提供一组功能和回叫机构,以允许一个应用程序同步连接到分布式系统100内的一个服务器的客户机的世界状态。一个典型的应用程序将调用插件接口来初始化插件,执行注册,连接到服务器,建立对象和数据流,发送消息,每一帧调用网络更新功能。当检测到新客户机时,通过调用在注册时指定的功能,更新远程对象或数据流,并通知应用程序。网络插件还通过使用访问功能允许应用程序询问对象、数据流、客户机和其它状态变量的内容。
通过把一个客户应用程序与本应用程序接口的网络插件库链接建立该客户应用程序。客户应用程序包括钩件(hooks)或其它编程结构,它们实现注册、连接、对象建立/删除和断开。回叫功能为接收更新和消息实现。
在图1的分布式网络中,存在各类网络节点。一类节点是对话主机,它是一个带特殊特性的客户计算机。对话主机为管理客户机、监视对象更新、和管理对象过滤功能执行管理功能。对话主机还可以提供应用特定的功能。例如,如果多用户应用程序是一个游戏,则对话主机可以执行例如记分、结束游戏检测、持续的世界更新等任务。由对话主机使用的过滤功能可以是任意的综合体。例如,如果一个对象更新对目标客户机是不可见的话,则可将其过滤。这是封闭拒绝的情况。注意,为应用程序和对话主机的注册码必须相同。在许多场合,客户应用程序可以与对话主机相同。
分布式网络服务器是为在因特网上所有通信的中心接续站。在客户机可以与其它客户机通信之前,其必需连接到该服务器上。每一服务器允许多个并发的应用程序具有单独的通信信道。所有消息首先发送到该服务器,然后发送到对话主机或传送到目标客户机。
应用程序接口的网络插件可以在按需基础上或以专有方式提供服务器和对话主机服务。这一行为在调用网络连接时由“服务器所有权”和“对话主机所有权”变元配置。如果所有权状态共享,则该服务在按需基础上提供。例如,如果共享对话主机所有权状态,则连接到服务器上的第一客户机将是对话主机。为明确指定服务职责,所有权必须调整到专用的客户机责任和所有权调整到毫不对所有其他客户机。
在连接到服务器后,为每一客户机产生一个客户机索引。如果客户机是一个对话主机,则客户机索引在开始时设定为零。如果客户机不是对话主机,则它必须等待对话主机授予一个客户机索引。在连接后,每一客户机还请求建立对对象块和数据流的权利。然后对话主机授权客户机对象块和数据流。然后该客户机自由地建立对象和数据流。如果客户机是被动的,则它不可以请求对象或数据流而只从其他客户机接收更新。如果对话主机不能发现自由的客户机时隙或授予请求的网络对象/数据流块,则调用网络更新进程将给客户机应用程序返回一个错误码。
客户机服务器配置根据本发明的实施例,可以以各种不同的拓朴配置网络插件客户机、服务器和对话主机。例如,如图2A到2D所示,4个基本的拓朴是可能的。
图2A表示根据本发明的一个实施例、为实现应用程序接口的客户机集成的服务器拓朴。对于该实施例,对话主机204和服务器功能202集成在客户机206中。客户机206通过因特网连接209到一个或者多个其它的客户机208。对于这一配置,对话主机所有权和服务器所有权对第一客户机206是专有的。第二客户机208没有对话主机或服务器所有权。这一配置的优点是系统不需要外部服务器或对话主机。然而,客户机数目由主客户机206的带宽能力限制,而其性能可由应用程序加载影响。
图2B表示根据本发明的一个实施例、为实现应用程序接口的一个集成的单应用程序服务器拓朴。对于该实施例,在服务器214内实现对话主机212,服务器214通过因特网219连接到一些客户机216。对于这一配置,对话主机所有权对服务器214专有。客户机216对服务器或对话主机功能没有所有权。这一配置的优点是不需要外部的对话主机和分组延迟保持为最小。一般认为,这一配置限制在每一服务器有单一应用程序,性能可由服务器加载影响,图2C表示根据本发明的一个实施例、为实现应用程序接口的一个带便携对话主机的中心服务器拓朴。在这一配置中,服务器222通过因特网线229连接到一些客户机224、226和228。对话主机223在客户机224、226和228之间共享。服务器对对话主机没有所有权,客户机对服务器没有所有权。这一配置不需要外部对话主机和具有支持每一服务器有多应用程序和分布式对话主机加载的能力。然而,这一配置不太适合分组过滤。
图2D表示根据本发明的一个实施例、为实现应用程序接口的一个多应用程序服务器。在这一配置中,服务器232通过LAN连线239连接到多个对话主机233、235和237。给每一对话主机分配一个唯一的识别符。服务器232还通过因特网连线230连接到多个客户机234、236和238。对话主机所有权是专有的,服务器或任何客户机都没有对话主机所有权。服务器所有权是服务器专有的,不由任何客户机共享。这一配置为每一活动的应用程序需要一个专用对话主计算机,但其具有每一服务器较大的用户数的特色和由服务器支持多个应用程序。一般说,性能不由活动的应用程序的数目影响。
在本发明的一个实施例中,应用程序接口包括4个原子数据结构,它们定义由应用程序接口产生和管理的实体为在多用户应用程序中使用。这4个数据结构类型是网络客户机,网络对象,网络消息,和数据流。网络客户机数据结构包括客户机信息,诸如客户机(连接的,不连接的,活动的等)的状态,客户机的名称,由该客户机产生的本地对象的数目,连接时间,等等。网络对象数据结构包括关于一个对象的信息,诸如对象名称,状态,拥有者,索引,当前对象数据,等等。网络消息数据结构包括与网络传输相关的信息和参数,诸如分组分析程序,延迟关键标志,和消息过滤器。数据流数据结构包括流信息,诸如状态,类型,数据速率,目标客户机,和流缓冲器信息。
对象建立本应用程序接口包括允许应用程序定义它自己的数据对象格式的网络结构。这些结构可以从ANSI类型定义或从C++对象导出。这些结构用递归定义的网络对象(它允许嵌套结构)构造。网络对象持有在该应用程序中的实体的状态数据。例如,如果应用程序是一个多用户游戏,则在游戏中的每一人物或实体可以是可定义的对象。对象的定义包括与该对象关联的相关参数,每一参数包括对象定义内的一个字段。例如,如果在一个特定游戏中的一个对象是战士,则相关对象字段可以包括该人物的位置、速度、定向、大小、强度、等等。
网络对象是一个容器结构,它为在应用程序内的每一个对象建立。一个网络对象由多个字段组成,它们包括关于该对象的有关特征的信息,诸如字段类型、长度、偏移和元素计数(为数组),以及可以由应用程序开发者或其他类型用户指定的其他信息项。网络对象的使用允许为应用程序的各个方面使用同样的对象定义。例如,一个网络对象基本上可作用为该对象相对于网络更新、图形描绘更新、物理和行为更新、和其它这种更新功能的指针。这消除了为各种应用程序功能多次拷贝对象特征的需要,从而通过使用类应用程序定义的对象方便了应用程序的高效开发。
在本发明的一个实施例中,网络对象的每一个字段还包括一个广播日程表。本应用程序接口支持两类广播日程表,速率限制的和错误限制的广播日程表。两类广播日程表都指定了更新对象特征的时间期间或条件。当更新一个对象特征时,该特征的新值传输到该应用中的其他对象。速率限制的广播日程表包括最小更新间隔,它指定对象特征更新的频率。错误限制的广播门限包括一个错误门限值,它指定一个百分比或绝对改变值,如果超过该值将引起一个更新被发送。这样,对象定义包括由为每一字段的速率限制更新日程表和/错误限制更新日程表组成的广播日程表。
图3是一个表,它表示对象实例的字段和广播日程表。用定义该对象的一个特别特征的各个字段310定义该对象。列304列出由该字段指定的特征,包括各个变量,诸如对象颜色、位置、类型、定向、和大小。列302列出与每一字段关联的变量类型(例如C++变量类型)。列306列出与每一字段关联的最小更新间隔。例如,字段可以每x秒或其一部分更新,或仅当改变时更新。列308列出与每一字段关联的错误门限值。错误可以是速率限制的和/或错误限制的。有4种不同类型的错误门限,它们是无门限、等门限、绝对大小、和比率大小。对于图3所示例子,在表300中,该对象的位置是一个浮点变量,它既是速率限制的,也是错误限制的。如果位置有任何改变的话则每100毫秒更新该对象。可以使用彼此结合的速率限制和错误限制方法为该对象产生最优更新广播日程表。
一般说,为规律地改变特征和可以迅速改变使用速率限制的广播日程表,诸如鼠标控制的转动或平动。最小更新间隔以时间单位一般地毫秒指定,并设定可以发送一次更新的最大速率。例如,如果最小更新间隔是100,则最大更新频率是10赫兹。
错误限制的广播日程表允许应用程序在特定字段的值改变超过一个指定的容限时发送更新。错误容限有4种不同的方式。对于“无门限”方式,该字段不为任何改变检查,不为相应特征发送更新。对于“等门限”方式,特征中的任何改变将引起发送一个更新。对于“门限绝对大小”方式,指定一个门限值,如果改变的量超过该门限值,则发送一个更新。对于“门限比率大小”方式,指定一个比率或百分比值,如果改变量超过这一比率大小值,就发送一个更新。
对于一个实施例,任何字段的可更新改变将引起对象作为整体被更新(所有字段)。字段不在逐字段基础上更新。另外可选择的方案是,使用为每一字段的速率限制的或错误限制的更新日程表允许一个对象的部分更新被发送到其它对象。不同的更新日程表或错误门限可以给每一字段提供,以便不同的对象特征在不同时间更新或完全不更新。这允许为更有效地传输一个对象的更新通信量。
网络对象基于用户定义的“网络结构”。当建立一个网络对象时,分配两个缓冲器Current_Object_Data(当前对象数据)缓冲器和Last_Update_Object_Data(最后更新对象数据)缓冲器。允许客户机修改Current_Object_Data缓冲器的内容(如果他当前拥有它的话)。Last_Update_Object_Data缓冲器由应用程序接口使用来决定在什么时候曾经对Current_Object_Data缓冲器进行改变。以这种方式,一旦建立网络对象,则自动发送更新。
当建立一个网络对象时,指定的一个变元是对象的寿命长度。在一个实施例中,网络对象可以有三级中的一级持续的、客户机对话、或永久的。对于客户机对象寿命(Object_Lifespan_Client),该对象将在建立客户机保持对服务器连接的期间持续。对于对话对象寿命(Object_Lifespan_Session),该对象将在对话主机保持与服务器连接期间持续。对于永久对象寿命(Object_Lifespan_Permanent),该对象将持续直到它由对话主机明显检测到为止。
可以由不同客户机实体建立和拥有网络对象。每一网络对象都有单独的建立者客户机索引和拥有者客户机索引字段。这允许对象所有权从建立拆开。对象还可以在两个或多个客户机之间共享。
一些对象不与特定客户机关联,称为“远程对象”。与建筑物关联的对象或与若干不同用户交互反应的对象,诸如门或足球,是远程对象的例子。在大多数情况下,远程对象由对话主机建立。这也适用于持续时间比一个客户对话长的对象。一旦对话主机建立该对象,则它可以由请求专有所有权的客户机修改。所有远程产生的对象必须有一个唯一的名称。
在本发明的一个实施例中,可以使用过滤功能控制网络对象的传播。过滤功能取目的客户机和网络对象作为它们的输入变元,并返回表示目的客户机是否可以接收该对象的真/假值。为允许对象过滤,应用程序首先通过调用一个寄存器对象过滤器进程注册过滤器功能。接着,使用由寄存器对象过滤器进程返回的对象过滤器索引建立该对象。可以使一个客户机与一个网络对象关联以决定该客户机是否可以接收该对象。消息和数据流可以指向个别客户机或通过使用Send_To_All_Clients目标索引广播到所有客户机。每当一个消息、数据流或对象更新被广播到所有客户机时,可以用过滤器功能限制广播的范围。由应用程序提供过滤器功能,并若允许一个客户机接收该更新时返回“真”。注意,每一个别的消息类型、数据流类型和对象可以具有它自己的过滤器功能或没有过滤器功能。过滤器功能的使用允许一定类型的客户机允许或禁止接收一定对象的更新。
还可以配置本应用程序接口管理数据流或流动对象的定义。数据流非常适合发送音频/视频数据或发送非常大的对象,诸如纹理图或多边形网络。使用数据流的主要优点是精确控制输出带宽。该应用程序使用的每一数据流类型被首先注册。数据流类型的例子包括音频数据流和纹理数据流。每一数据流类型需要一个更新功能,一个流结束处理器和一个过滤器功能。当正在接收远程数据流时调用这些功能和处理器。如果当一个数据流被打开时远程缓冲器标志被置位,则网络插件将在远程客户机上缓冲整个数据流对象。一旦注册一个数据流,则使用打开该数据流的过程调用传输它,添加数据到该数据流和结束该数据流。客户可以以任何速率添加数据流,而输出带宽保持恒定。为保证数据流缓冲器永不溢出,不允许本应用程序添加比指示为在该数据流中自由数据字节的值更多的字节。在一定场合,实际输出带宽可以稍微高于为保证广播日程表永不落后所需要的值,诸如为由硬件音频/视频编码解码器供给的数据流。还应该注意,在所有未处理的数据被发送之前数据流不关闭。
如果数据流的目标是网络中所有可能的客户计算机,和数据流类型的过滤器功能是非零的,则为过滤对对话主机广播。当对话主机正在重新广播一个过滤了的数据流时,它将为所有客户机调用过滤器功能,和仅给通过过滤器功能的那些发送。
网络消息在本发明的一个实施例中,应用程序接口的网络插件使用网络消息在客户机之间通信所有数据。每一消息包括一字节头标(分组类型),后随实际数据(可以是任何长度)。网络插件为它自己内部使用可以注册几个分组类型。应用程序定义的网络消息意在通信本质上暂时的事件。这种事件可以包括谈话消息,对象运动命令等。为使用网络消息,客户机通过调用一个“注册网络分组”功能首先注册一个分组结构。这一功能返回为新消息的分组类型。为发送消息,客户机填写该消息分组结构的所有字段并调用一个添加该分组到传输缓冲器的功能。消息分组的第一个字节必须总是分组类型。该消息可以指向个别客户机,或所有可能的客户机,如果使用Send_To_All_Clients目标索引的话。如果该消息是发送到所有客户机并且该消息有过滤器功能的话,则该消息以和对象和数据流被过滤的同样方式过滤。一旦接收到一个消息,则调用注册分组分析程序,应用程序可以处理该消息。注意,因为分组分析程序必须总返回消息的字节总长度,因此消息可以有变化的长度。
为使用本应用程序接口开发可在图1的分布式网络上执行的应用程序,必须由应用程序执行一定的步骤。第一步骤的一个是注册应用程序以分解在各种功能和实体之间的依赖性。在一个实施例中,应用程序注册以下述顺序进行首先注册对象过滤器功能(如果需要的话)。然后注册子网络字段和父网络字段,接着注册网络结构和数据流(如果需要的话),然后是分组(如果需要的话)。在执行适当的注册后,执行网络连接处理。一旦这一初始序列完成,则应用程序可以前进到为广播建立对象和数据流。图4中提供表示这一总过程的流程图。注册功能在步骤402到408表示。在执行注册步骤后,客户机调用网络连接功能以连接到网络。在完成连接和初始化序列后,可以由客户机建立对象,步骤412。建立对象的过程包括定义对象特征作为对象定义中的字段,以及为这些字段建立广播日程表。如上所述,广播日程表可以是速率限制的或错误限制的。一旦建立后,所有涉及该对象的应用程序功能和调用都使用由客户建立的对象定义。在应用程序执行期间,使用定义的广播日程表把对象更新传输到其他客户,步骤414。
在本发明的一个实施例中,可以使用本应用程序接口开发多用户游戏,用于图1的分布式网络上。对于该实施例,所建立的对象通常是通过由网络应用建立的虚拟环境的游戏人物或对象。每一客户可以控制一个或者多个人物或游戏实体。由客户控制的每一游戏实体的特征由该客户定义。广播日程表控制对其他客户的对象特征的更新。部分更新的使用有利地使通过网络的数据传输更加有效。使用广播日程表和过滤器功能,本应用程序接口允许客户这样定义对象,使得合适的客户接收恰当的更新传输。
一般说,所有客户接收一个对象在一个对象更新步骤期间的所有字段。然而,对这些对象字段的更新速率可以为每一客户和每一对象改变。使用负载平衡技术来提供在由不同客户所需要的更新速率中反应的适当水平的细节。例如,在一个战争模拟程序中,接近用户参考点的对象被视为比较重要,而比离开较远的对象更新的较频繁。在这一场合,更新速率与距参考点的距离成反比。也可以使用其它因子来决定更新速率。例如,可以按照真正的重要性排序对象,较为重要的对象比较不重要的对象更新的较频繁。在战争模拟的例子中,一定类型的对象,例如另外一些飞机相对于其它类型的对象例如基于地面对象可以列为较重要的对象。该应用程序的更新速率可以是一个对象的真正重要性与它离开参考点的距离的乘积。也可以使用其它类型的因子决定更新速率,诸如势场,它相对于一个感兴趣的点定义对象的重要性,等等。
一般说,使用本应用程序接口开发的多用户应用程序可以是涉及在一个分布式网络的不同客户计算机之间建立和传输数据的任何类型的应用程序。例如,多用户应用程序可以是使用音频、视像或组合音频/视像数据的远程会议应用。为这一应用,一个对象可以是包容音频/视像或文字数据的数据流。客户结构包括一个字段,它允许该客户与一个网络对象关联。可以使用过滤器以允许或封锁一定客户访问传输的数据流。可以使用此间说明的应用程序接口开发的其它类型应用程序包括实时或虚实时交互式应用,诸如联机拍卖或投标程序,交互式教育应用程序,多用户模拟或战斗程序或需要在分布式客户计算机之间定义和交互反应各种对象的类似类型应用程序。
可以使用本应用程序接口来开发实现在前述美国专利文献No.5,841,980中说明的分布式网络结构的多用户应用程序。所述文献结合在此参考。对于这一实施例,结合客户定义的对象和使用本发明的应用程序接口建立的广播日程表和过滤器使用多服务器管理系统和在这里说明的网络内建立的多个感兴趣的区域。
上面说明了为开发在分布式网络上的多用户应用程序的应用程序接口和网络插件系统。虽然参考特定的实施例举例说明本发明,但是显然,可以对这些实施例进行各种修改和改变而不离开在权利要求中叙述的本发明更广阔的精神和范围。因此,本说明书和附图应该看作是说明性质的而不是限制性质的。
权利要求
1.一种方法,用于提供为在分布式网络系统上可执行的多用户应用程序开发的开发接口,包括步骤为应用程序使用的对象提供对象定义结构,该对象定义结构包括多个定义所述对象的功能特征,和为一个或者多个功能特征的一个更新日程表;和在所述应用程序在分布式网络上的执行期间按照更新日程表自动更新功能特征。
2.权利要求1所述方法,其中,对象定义结构另外包括一个或者多个功能特征的一个错误限制的广播日程表,和另外包括仅当功能特征值的改变超过各错误限制时自动更新一个或者多个功能特征中的一个功能特征的步骤。
3.权利要求2所述方法,其中,对象的功能特征通过根据更新日程表或根据错误限制的广播日程表周期地给由该应用程序使用的其他对象传输功能特征而更新。
4.权利要求3所述方法,进一步包括提供一个或者多个过滤器功能的步骤,所述过滤器功能用于限制所述对象更新的功能特征到在所述网络内的一个或者多个其他客户的传播。
5.权利要求1所述方法,其中,对象的对象定义结构由应用程序的用户决定,以及所述对象定义结构由用应用程序实现的多个过程使用。
6.权利要求5所述方法,其中,分布式网络包括多个由一个网络主干互连的多个服务器,每一服务器接待至少一个本地客户机,和每一本地客户机具有至少一个本地参加者。
7.权利要求6所述方法,其中,所述应用程序包括一个交互式视频游戏,其中,多个功能特征包括下述至少一个网络更新,图形加工更新,和基于物理的行为更新。
8.权利要求7所述方法,其中,所述对象包括一个交互式视频游戏人物,功能特征包括下述至少一个人物的位置,人物的大小,和人物的定向。
9.权利要求3所述方法,其中,对象在通过网络传输的音频/视频数据的一个数据流中体现。
10.权利要求6所述方法,其中,所述应用程序包括交互式通信程序,用于在网络用户之间传输通信内容,其中,多个功能特征包括至少下述中的一个通信更新,用户特权更新,和网络接口更新。
11.权利要求10所述方法,其中,所述对象包括下述中的一个或者多个一个流式音频数据集,一个流式视频数据集,和一个基于文字的数据集。
12.一个系统,用于开发可由连接在一个通信网络上的多个客户计算机执行的多用户应用程序,包括为给由所述应用程序使用的一个对象提供一个对象定义结构的第一客户机,所述对象定义结构包括多个定义该对象的功能特征,和为一个或者多个功能特征的更新日程表;一个连接到第一客户机上的第二客户机,配置为管理在第一客户机和连接到所述通信网络上的其它客户机之间的数据传输和过滤传输到其它客户机的对象更新,其中,所述对象的功能特征的对象更新在所述应用程序由第一客户机执行期间按照在分布式网络上的更新日程表自动传输。
13.权利要求12所述系统,其中,所述对象定义结构另外包括一个或者多个功能特征的一个错误限制的广播日程表,其中,仅当功能特征值的改变超过各错误限制时更新功能特征。
14.权利要求13所述系统,其中,对象的功能特征通过根据更新日程表或根据错误限制的广播日程表周期地给由该应用程序使用的其他对象传输功能特征而更新。
15.权利要求12所述系统,其中,通信网络包括由一个网络主干互连的多个服务器,每一服务器接待至少一个本地客户机,和每一本地客户机具有至少一个本地参加者。
16.权利要求15所述系统,其中,多个服务器中的一个服务器控制在第一客户机、第二客户机和使用由第一客户机建立的对象的其它客户机之间的数据传输。
17.权利要求16所述系统,其中,至少一个其它客户机可以由第一对象建立的对象更新。
18.权利要求12所述系统,其中,由第一客户机建立的对象定义由在使用该对象的多用户应用程序内的所有功能和过程使用。
19.一个服务器计算机,它连接在一个或者多个客户计算机上,配置该服务器计算机使开发可由一个或者多个客户计算机执行的多用户应用程序,包括一个对象定义模块,提供为由所述应用程序使用的对象的定义,关于对象定义结构包括多个定义所述对象的功能特征和一个或者多个功能特征的更新日程表;一个数据传输模块管理在第一客户机和连接在通信网络上的其它客户机之间的数据传输,和过滤传输给其他客户机的对象更新,其中,所述对象的功能特征的对象更新在所述应用程序由第一客户机执行期间按照在分布式网络上的更新日程表自动传输。
20.权利要求19所述服务器计算机,其中,所述对象定义结构另外包括一个或者多个功能特征的一个错误限制的广播日程表,其中,仅当功能特征值的改变超过各错误限制时更新所述功能特征。
21.权利要求20所述服务器计算机,其中,对象的功能特征通过根据更新日程表或根据错误限制的广播日程表周期地给由该应用程序使用的其他对象传输功能特征而更新。
22.权利要求21所述服务器计算机,另外包括一个对通信网络的接口,其包括由一个网络主干互连的多个服务器,每一服务器接待至少一个本地客户机,和每一本地客户机具有至少一个本地参加者。
23.权利要求21所述服务器计算机,其中,至少一个其它客户机可以更新由第一对象建立的对象。
24.权利要求23所述服务器计算机,其中,由第一客户机建立的对象定义由在使用该对象的多用户应用程序内所有功能和过程使用。
25.一个制造品,实现可由一个机器执行的指令程序,所述指令程序包括多条指令,用于提供为开发一个可在一个分布式网络系统上执行的多用户应用程序的开发接口,所述指令程序包括多条指令,用于为由应用程序使用的对象提供对象定义结构,该对象定义结构包括多个定义所述对象的功能特征,和为一个或者多个功能特征的一个更新日程表;和在所述应用程序在分布式网络上的执行期间按照更新日程表自动更新功能特征。
26.权利要求25所述制造品,其中,所述对象定义结构另外包括一个或者多个功能特征的一个错误限制的广播日程表,和另外包括仅当功能特征值的改变超过各错误限制时自动更新所述功能特征的步骤。
27.权利要求26所述制造品,其中,对象的功能特征通过根据更新日程表或根据错误限制的广播日程表周期地给由该应用程序使用的其他对象传输功能特征而更新。
28.权利要求27所述制造品,另外包括为提供一个或者多个过滤功能的指令,用于限制所述对象的更新的功能特征传播到所述网络内的一个或者多个其它客户机。
29.权利要求28所述制造品,其中,所述对象的对象定义结构由应用程序的用户决定,其中,由多个由所述应用程序实现的过程使用所述对象定义结构。
30.权利要求29所述制造品,其中,所述应用程序包括一个交互式视频游戏,其中,多个功能特征包括下述中的至少一个网络更新,图形加工更新,和基于物理的行为更新,其中,所述对象包括一个交互式视频游戏人物,功能特征包括下述至少一个人物的位置,人物的大小,和人物的定向。
31.权利要求30所述制造品,另外包括指令来编码通过网络传输的音频/视频数据的数据流中的对象,其中,所述对象包括下述中的一个或者多个一个流式音频数据集,一个流式视频数据集,和一个基于文字的数据集。
全文摘要
一个应用程序开发接口,用于开发可通过分布式网络执行的多用户应用程序。提供一个对象定义结构,用于由多用户应用程序使用的对象的基于客户的定义。对象定义包括与对象关联的并由应用程序使用的特征,以实现通过分布式网络与其他客户机的交互式反应。一个广播日程表与一个或者多个特征关联,和控制对象数据从建立客户向在分布式网络中的其它客户机传输。在多用户应用程序执行期间,对象的特征周期地或在特征相对于一个预先设定的门限值改变时根据在广播日程表内提供的值自动更新。由一个客户建立的对象定义由在使用该对象的多用户应用程序中所有功能和过程使用。
文档编号G06F9/50GK1394307SQ01803373
公开日2003年1月29日 申请日期2001年10月25日 优先权日2000年11月1日
发明者C·H·盖伊, G·A·达塔, J·A·费尔南德斯 申请人:美国索尼电脑娱乐公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1