实时内核的制作方法

文档序号:11879215阅读:737来源:国知局
发明背景对基于化身的虚拟现实通信系统的兴趣已随具有高处理能力和高带宽网络连接的计算系统的可用性的增加而成长。此种虚拟现实系统的主要目标是创建虚拟空间,其中用户可使用实时数据流(诸如音频、视频和文本聊天流)进行交互和通信。虚拟空间一般由计算机图形描述定义,该图形描述描述了该空间的虚拟几何形状、映射到该虚拟几何形状上的颜色和纹理、控制用户如何在该空间中移动的碰撞属性、以及该空间的听觉属性(诸如混响和声音吸收属性)。在典型的虚拟现实系统中,用户从相应计算机通过接口彼此通信,该接口是该系统所支持的一个或更多个实时数据流的源、阱、或者源和阱两者。运行在每一台用户计算机上的虚拟现实软件应用基于描述虚拟空间中的化身的位置的位置信息来配置其自身的音频和图形呈现。该位置信息通常直接从其他用户的计算机接收或间接从中央存在性服务器接收。默认地,虚拟现实软件应用通常将虚拟空间中表示的每个源连接到该虚拟空间中表示的每个阱,这受到全局开关规则、局部用户偏好、以及该虚拟空间中的对象属性中指定的条件的影响。这些条件通常以对象间的相对距离的方式指定。例如,一些虚拟现实软件应用被配置成使得如果化身间的分开距离超过最大阈值距离则不建立实时数据流连接。成功的虚拟现实通信系统通常应具有相对低的计算资源要求,以便实时通信性能可使用当前可用的计算设备和网络带宽限制来达成。此外,此种系统通常应当以鼓励区域设计者开发提高用户对该系统的采用的虚拟区域的方式来实现。发明概述在一方面,本发明的特征在于一种方法,根据该方法在本地网络节点接收来自远程网络节点的一个或更多个流处置指令。这一个或更多个流处置指令包括对用于处理至少一个实时数据流的流处理机的描述。在本地网络节点,根据该描述创建流处理机。在本地网络节点产生所得数据流。在此过程中,实时数据流通过所创建的流处理机处理。在另一方面,本发明特征在于一种方法,根据该方法从一个或更多个流处置指令解析对实时流处理机的描述。在此过程中,从该一个或更多个流处置指令解析输入源标识符、输出阱标识符、以及一个或更多个数据处理对象中的每一者的相应标识符。对应于相应一些标识符的实时流处置对象被实例化。根据该描述被创建包括一些被实例化的实时流处置对象的有向图。从对应于输入源标识符的输入源接收实时数据流。在对应于输出阱标识符的输出阱产生所得数据流。在此过程中,实时数据流通过该有向图处理。在另一方面,本发明特征在于一种方法,根据该方法在本地网络节点和至少一个远程网络节点之间建立至少一个实时数据流连接。在本地网络节点,源自远程网络节点的至少一个实时数据流被处理。在此过程中,通过一个或更多个实时数据处理操作处理该至少一个实时数据流以产生所得数据流。该处理被监视。响应于基于该监视确定该处理偏离性能目标,根据实时性能目标例程修改该处理。在另一方面,本发明特征在于一种方法,根据该方法,在本地网络节点,根据无连接传输协议在传输流上建立与远程网络节点的第一会话。代表本地网络节点上的一个或更多个软件实体,自动打开在第一会话中在本地网络节点和远程网络节点之间传送数据的一个或更多个信道。在第一会话中,维护一表。该表标识打开的一些信道并将相应的属性值与所标识的信道相关联。响应于确定第一会话已经失败,根据无连接传输协议自动尝试在第二传输流上建立与远程网络节点的第二会话。响应于成功建立第二会话,自动打开该表中标识的每个信道。在另一方面,本发明特征在于一种方法,根据该方法解析包括一个或更多个内核服务组件的内核组件的列表。确定被解析的列表中在本地储存库中缺少的所有内核组件。检索被确定为缺少的每个内核组件。从一些内核服务内核组件实例化内核服务。执行被实例化的内核服务以在关于虚拟区域定义的通信环境中与一个或更多个远程网络节点通信。在另一方面,本发明特征在于一种在本地网络节点上执行的方法。根据该方法,本地网络节点被配置为支持在由虚拟区域定义的上下文中与至少一个远程网络节点实时通信。该配置过程包括:响应于对枚举支持指定的应用编程接口(API)的所有插件的调用,返回包含插件数据库中与该指定的API相关联的所有插件的标识符的列表;响应于对枚举所标识的一个插件支持的给定API的变量的调用,传递包含由所标识的插件支持的该给定API的所有变量的标识符的列表;以及响应于对实例化由所标识的一个插件支持的所标识的API的所标识的一个变量的调用,加载所标识的插件并提供至所标识的变量的实例的指针。在所配置的本地网络节点和该至少一个远程网络节点之间建立至少一个实时数据流连接。本发明的特征还在于用于实现上述的发明方法的装置和存储致使计算机实现上述发明方法的计算机可读指令的计算机可读介质。本发明的其他特征和优点将从包括附图和权利要求的以下描述而变得显而易见。附图简述图1是包括由网络互连的第一客户端网络节点、第二客户端网络节点、以及区域服务器网络节点16的虚拟区域通信环境的实施例的图示。图2是由实时内核的实施例执行的方法的实施例的流程图。图3A是其中网络节点以对等架构通信的虚拟区域通信环境的实施例的图示。图3B是其中网络节点以服务器仲裁架构通信的虚拟区域通信环境的实施例的图示。图4是包括呈现对虚拟区域的描绘的图形用户界面的网络节点的实施例的图示。图5A是抬头显示器(HUD)叠加在呈现对虚拟区域的描绘的图形用户界面上的实施例的图示。图5B是图5A中所示的HUD的图示。图5C是图5A中所示的HUD的展开视图的图示。图6是由区域网络基础结构服务的实施例实现的方法的实施例的流程图。图7是由实时内核的实施例实现的方法的实施例的流程图。图8是包括实时内核的实施例的客户端网络节点的实施例的框图。图9是由图8的实时内核的实施例响应于请求至虚拟区域的连接的实时内核API调用而实现的方法的实施例的流程图。图10是由图8的实时内核的实施例响应于请求进入虚拟区域的实时内核API调用而实现的方法的实施例的流程图。图11是由图8的实时内核的实施例响应于从区域服务接收的流处置指令而实现的方法的实施例的流程图。图12是由流处理机配置管理器创建的流处理机的实施例的框图。图13是由图8的实时内核的实施例在调度由实时内核执行的任务的过程中实现的方法的实施例的流程图。图14是由图8的实时内核的实施例基于对至少一个实时数据流的处理的监视而实现的方法的实施例的流程图。图15是图8的实时内核的实施例的框图。图16是通过帐户服务器的凭证来认证帐户服务器的方法的实施例的流程图。图17是由图8的实时内核的实施例的加载器组件实现的方法的实施例的流程图。图18是由图8的实时内核的实施例的STRAW服务组件实现的会话管理方法的实施例的流程图。图19是由图8的实时内核的实施例的组件响应于从区域网络基础结构服务接收的远程流处置指令而实现的方法的实施例的流程图。图20是由图8的实时内核的实施例的STRAW服务组件实现的传输协议组件的图示。图21示出在客户端网络节点344和服务器346之间建立服务器流的方法的实施例。参照图22,每个会话由发起服务器生成的新GUID所标识。图23示出四通信者音频处理图的示例性实施例的元素。图24示出使人们能经由基于非虚拟区域的通信应用与虚拟区域通信者通信的计算机系统的实施例。图25示出插件类等级的实施例的图示。图26是插件基类的集合的实施例的图示,其中每个插件基类与相应的一个或更多个导出变量类的集合相关联。图27是插件架构的实施例的框图。图28是包括插件管理器、包含一组插件容器的插件目录、插件数据库、以及调用程序的插件架构的实施例的框图。图29是由图28的插件管理器的实施例在客户端网络节点上登记可用插件的过程中实现的方法的实施例的流程图。图30是插件数据库的实施例的图示。图31是由图28的插件管理器的实施例响应于收到来自调用程序的API调用而实现的方法的实施例的流程图。发明详细描述在以下描述中,相同的附图标记被用于标识相同的元素。此外,附图旨在以图解方式解说示例性实施例的主要特征。附图并不旨在描绘实际实施例的每个特征以及所描绘元件的相对尺寸,且并不是按比例绘制的。I.术语定义“计算机”是根据临时或永久地存储在计算机可读介质上的计算机可读指令来处理数据的任何机器、设备、或装置。“计算机操作系统”是管理和协调任务执行以及软件和硬件资源共享的计算机的软件组件。“内核”是可由软件应用调用以提供用于访问计算机资源(例如,CPU、存储器、网络链路、以及外围资源)的特定功能的软件组件的集合。“软件应用”(也称为软件、应用、计算机软件、计算机应用、程序、以及计算机程序)是计算机能解读并执行以执行一个或更多个任务的指令集。“应用编程接口”(或API)是操作系统、库、或服务提供以支持软件应用作出的请求的功能(或规程)声明集。API指定一接口以及该接口中指定的标识符的行为。API的实现指提供该API描述的功能性的软件应用代码。“计算机数据文件”是持久存储数据以供软件应用使用的信息块。“服务”是自主地执行任务的过程(独立于其他过程)。“管理器”是服务执行任务的网关。管理器不自主地执行任务。“数据库”是以标准化格式呈现的能够被计算机搜索的记录的组织化集合。数据库可被存储在单台计算机上的单个计算机可读数据存储介质上,或者可以跨一台或更多台计算机上的多个计算机可读数据存储介质分布。“数据阱”(本文中简称为“阱”)是接收数据的设备、设备(例如,计算机)的一部分、或软件中的任一者。“数据源”(本文中简称为“源”)是始发数据的设备、设备(例如,计算机)的一部分、或软件中的任一者。“网络节点”(也被简称作“节点”)是通信网络中的接合点或连接点。示例性网络节点包括但不限于终端、计算机、以及网络交换机。“服务器网络节点”是网络上对信息或服务请求进行响应的主计算机。“客户端网络节点”是网络上向服务器请求信息或服务的计算机。“网络连接”是两个通信网络节点之间的链路。术语“本地网络节点”是指当前为首要讨论主体的网络节点。术语“远程网络节点”是指通过网络通信链路连接至本地网络节点的网络节点。“存在性”是指联网实体(例如,通信者、服务、或设备)进行通信的能力或意愿,其中此类意愿影响在网络上检测和获得关于该实体的状态的信息的能力以及连接到该实体的能力。“实时数据流”是以连续流的形式进行结构化和处理并且被设计成无延迟或者只有察觉不到的延迟地接收的数据。实时数据流包括语音、视频、用户移动、面部表情及其他物理现象的数字表示,以及计算环境内可得益于迅速传输、迅速执行、或迅速传输和迅速执行两者的数据,包括例如化身移动指令、文本聊天、实时数据馈送(例如,传感器数据、机器控制指令、交易流以及股价信息馈送)、以及文件传递。“流混合”是相同或语义上一致的类型(例如,音频、视频、聊天、和运动数据)的两个或更多个实时数据流的组合。例如,一组语音流可被混合成单个语音流,或语音流可被混合到视频流的音频部分中。“开关规则”是遵照一个或多个条件先例指定一个或多个实时数据源与一个或多个实时数据阱的连接或断开连接的指令。“虚拟区域”(也被称作“区域”或“地方”)是由计算机管理的空间或场景的表示。虚拟区域通常是一维、二维、或三维的表示;尽管在一些实施例中虚拟区域也可对应于单个点。虚拟区域经常被设计成模拟物理的真实世界空间。例如,使用传统的计算机监视器,虚拟区域可被可视化为由计算机生成的三维空间的二维图形。然而,虚拟区域并不要求相关联的可视化就能实现开关规则。虚拟区域通常是指虚拟区域模式的实例,其中模式以变量的方式定义虚拟区域的结构和内容,而实例以已从特定上下文求解出的值的方式来定义虚拟区域的结构和内容。“虚拟区域应用”(也被称作“虚拟区域描述”)是在创建虚拟区域通信环境时使用的虚拟区域的描述。虚拟区域应用通常包括对与虚拟区域的一个或多个地带相关联的几何学、物理学、以及实时开关规则的定义。“虚拟通信环境”是包括至少一个虚拟区域并且支持通信者之间的实时通信的由计算机管理的空间的表示。“地带”是虚拟区域中与至少一个开关规则或支配规则相关联的区划。开关规则控制在虚拟区域的上下文中通信的网络节点之间的实时数据流的开关(例如,路由、连接、和断开连接)。支配规则控制通信者对资源(例如,区域、区域的区划、或该区域或区划的内容)的访问,该访问的范围、以及该访问的后继结果(例如,必须记录关于该访问的审计记录的要求)。虚拟区域中的“位置”是指该虚拟区域中的点或面积或体积的位置。点通常是由定义虚拟区域中的点的一维、二维、或三维坐标(例如,x、y、z)单个集合表示的。面积通常由定义虚拟区域中闭合的二维形状的边界的三个或更多个共面顶点的三维坐标来表示的。体积通常由定义虚拟区域中的三维形状的闭合边界的四个或更多个非共面的顶点的三维坐标来表示。在虚拟区域的上下文中,“对象”是虚拟区域中可被有效对待且与虚拟区域的几何形状无关的离散要素。示例性的对象包括门、门户、窗、查看屏、以及扩音器。对象通常具有与虚拟区域的属性和特性分离且不同的属性和特性。“化身”是虚拟区域中代表通信者的对象。“通信者”是在网络连接上与其他人通信或以其他方式交互的人,其中该通信或交互可以或者也可以不发生在虚拟区域的上下文中。“用户”是正在操作出于描述性目的而定义了一特定观点的特定网络节点的通信者。“区域服务器”是包括区域网络基础结构服务的网络节点,该区域网络基础结构服务通过管理与虚拟区域中的对象相关联的客户端节点的会话来管理主存虚拟区域应用的虚拟区域。如本文所使用,术语“包括”意指包括但不限于,且“包含”意指包含但不限于。II.引言本文描述的实施例提供支持在相应网络节点上操作的通信者之间的实时通信的实时内核。该实时内核处置连接到通信者、虚拟区域、以及其他网络资源、响应于用户输入开关这些连接、以及混合实时数据流的复杂任务。实时内核使开发者能够专注于开发高级通信功能而非低级衔接代码。实时内核施加相对低的计算资源要求,从而实时通信性能可使用当前可用的宽泛计算设备和网络连接来达成。在一些实施例中,实时内核支持响应于从远程主存的虚拟区域应用接收的指令(也称为定义)来远程配置和执行音频和图形呈现引擎、以及开关实时数据流。这样,实时内核使得虚拟区域设计者能维持对远程客户端网络节点上的沉浸性虚拟通信环境的呈现的控制,由此鼓励开发众多不同类型的虚拟区域并增加将希望采用该通信系统的用户的数量。在一些实施例中,实时内核监视实时数据流的处理并基于该处理与性能目标的偏差适配该处理。这样,无论其中正执行实时数据流处理的计算环境如何,内核增加了实时性能能够达成的可能性。在一些实施例中,实时内核实现在连接和断开连接、以及在传输时高效的流传输协议。在这样一些实施例中,流传输协议在无连接传输协议(例如,UDP)上提供面向连接的加密连接。实时内核另外在客户端应用和传输层之间提供重连机制,该重连机制自动尝试重新建立失败了的连接而无需客户端应用的干预,由此在固有不可靠的通信协议上增加了可靠性。在一些实施例中,实时内核具有插件架构,该插件架构允许由一个或更多个可被动态加载到客户端网络节点上的插件提供内核组件的功能性。这样,内核组件可被独立开发并被远程管理和更新。插件架构另外允许实时内核的安装覆盖区域实质上减小,由此允许内核被安装在宽泛的包括那些具有显著计算和存储资源限制的客户端设备上。III.概览A.引言图1示出了包括由网络18互连的第一客户端网络节点12、第二客户端网络节点14、和区域服务器网络节点16的示例性虚拟区域通信环境10的实施例。第一客户端网络节点12包括包含一个或更多个可配置的流处理机22的实时内核20的实施例、以及输入/输出(I/O)硬件24。第二客户端网络节点14通常以与第一客户端网络节点12基本相同的方式进行配置。区域服务器网络节点16包括通过管理虚拟区域28中第一和第二客户端节点12、14的会话来管理虚拟区域28的区域网络基础结构服务26(也简称为“区域服务”)。虚拟区域28主存包括用于创建虚拟区域通信环境的虚拟区域的描述的虚拟区域应用30。区域服务26根据虚拟区域应用30来管理虚拟区域28。在创建共享虚拟区域通信环境的过程中,区域服务26根据远程虚拟区域应用30受虚拟区域应用30上的一组限制32影响地远程配置第一和第二客户端网络节点12、14中的实时内核。限制32通常包括对访问虚拟区域的控制。访问控制一般基于一个或更多个能力(其中对具有适当能力或许可的通信者或客户端节点准许访问)和访问控制列表(其中对具有列表上的身份的通信者或客户端节点准许访问)。在一些实施例中,限制32由安全网络基础结构服务所管理(在以下描述)。在第一和第二客户端网络节点12、14上操作的客户端软件应用允许通信者访问共享虚拟区域通信环境,这通过根据经由实时内核20从区域服务26接收的数据呈现虚拟区域的相应视图以及通过提供用于从通信者接收命令的接口来实现。通信者通常在虚拟区域32中由相应的化身来表示,这些化身响应于由通信者在其相应的网络节点处输入的命令而在虚拟区域中四处移动。每个通信者看到的虚拟区域的视图通常是从该通信者的化身的角度来呈现的,这增强了通信者体验到的沉浸感级别。每个通信者通常能够看到在他或她的化身周围的任何虚拟区域部分。在第一和第二客户端网络节点12、14上操作的实时内核至少部分地基于虚拟区域中通信者的化身的位置来建立与共享该虚拟区域通信环境的其他网络节点的实时数据流连接。图2示出了由实时内核20实现的方法的示例性实施例。根据该方法,实时内核20建立与区域服务26的会话(图2,框34)。无论响应于通信者输入还是自动地,实时内核20请求进入虚拟区域28的实例(图2,框36)。如果对通信者访问虚拟区域实例的限制32得到满足,则区域服务26向实时内核20传送包括当前状态信息的配置数据,其中当前状态信息包括虚拟区域中化身的位置。实时内核20从区域服务26接收配置数据(图2,框38)。实时内核20根据从区域服务26接收的指令来配置I/O硬件24以呈现人类可感知的虚拟区域通信者环境(图2,框40)。在一些实施例中,配置I/O硬件24的过程涉及根据从远程网络节点14接收的指令和位置数据动态配置至少一个流处理机22。例如,虚拟区域应用30可指定一个或更多个应被应用于与虚拟区域中当前的对象相关联的音频流的音频效果,在这种情况下,区域服务26向在第一和第二客户端网络节点12、14上执行的实时内核发送指令,该指令根据虚拟区域中相应对象的位置来配置其相应音频流处理机以实现指定的效果。实时内核20通过每个配置的流处理机22处理与通信者对象相关联的实时数据流以产生相应输出33。取决于其内容,输出33可被存储在计算机可读介质上或由在第一和第二网络节点12、14上操作的I/O硬件转换成人类可感知的输出。例如,音频输出信号由音频硬件(例如,声卡和扬声器)转换成可听的声音,而图形输出信号由图形硬件(例如,视频卡和显示器)转换成可见的图像。在一些实施例中,由至少一个流处理机22产生的输出33被一个或更多个下游软件组件处理,该下游软件组件依次产生可被存储在计算机可读介质上或被转换成人类可感知的输出的输出。B.示例性操作环境实时内核20在虚拟区域通信环境10的上下文中操作,虚拟区域通信环境10包括网络18和网络基础结构服务环境,后者包括包含区域服务26的若干网络基础结构服务。实时内核20和网络基础结构服务环境构成用于为通信者创建虚拟区域通信环境的平台。1.网络环境网络18可包括局域网(LAN)、城域网(MAN)、以及广域网(WAN)(例如,因特网)的任一者。网络18通常包括若干支持网络节点之间的各种不同媒体类型(例如,文本、语音、音频、和视频)的传输的计算平台和传输设施。实时内核20通常在包括软件和硬件资源的网络节点上操作,该软件和硬件资源与管理性策略、用户偏好(包括关于用户存在性的出口以及用户至区域和连接对象的连接的偏好)、以及其他设置一起来定义影响与其他网络节点的实时连接的管理的本地配置。网络节点之间的网络连接可安排在各种不同的流处置拓扑中,包括对等架构、服务器仲裁架构、以及组合了对等和服务器仲裁架构的各方面的混合架构。图3A示出虚拟区域通信环境10的实施例42,其中第一和第二网络节点12、14以及远程网络节点16由对等架构的通信网络18互连。在此架构中,网络节点12-16的每一个向其他网络节点的每一个传送状态变化(例如,虚拟区域28中的化身运动)。网络节点之一(通常为发起通信会话的网络节点)作为“区域服务器”操作。在所解说的实施例中,网络节点16承担了区域服务器的角色。区域服务器网络节点16维护全局状态信息并用作其他网络节点12、14的数据服务器。全局状态信息包括虚拟区域中的所有对象的列表及其在虚拟区域中的相应位置。区域服务器网络节点16发送配置其他网络节点12、14的指令。区域服务器网络节点16也登记并向请求加入通信会话的其他网络节点传送初始化信息。在此过程中,区域服务器网络节点16根据虚拟区域应用30向每个加入的客户端网络节点传送在客户端网络节点上呈现虚拟区域28所需的组件(例如,插件)的列表。客户端网络节点12、14上的实时内核通常从远程服务器(例如,插件服务器)检索列表上的任何缺失的组件。区域服务器网络节点16也确保若发生通信故障,其他网络节点12、14能同步到全局状态。图3B示出虚拟区域通信环境10的实施例44,其中网络节点12-16(在此架构中也称为“区域客户端”网络节点)在由区域服务器46仲裁的架构中通信。在此实施例中,区域服务器46承担在图3A所示的对等架构实施例中由网络节点16执行的区域服务器功能。这样,区域服务器46维护全局状态信息并用作区域客户端网络节点12-16的数据服务器。该架构允许将在各种拓扑(包括对等拓扑、其中区域服务器46作为网络节点12-16之间的通信代理操作的全服务器仲裁拓扑、以及组合了对等拓扑和全服务器仲裁拓扑的各方面的混合拓扑)中处理的区域客户端节点12-16之间的实时数据流交换。这些类型的示例性拓扑在美国申请号为11/923,629和11/923,634的申请中描述,两者都在2007年10月24日提交。2.网络基础结构服务在建立和管理与其他网络节点的网络连接的过程中,一个或更多个网络基础结构服务通常与实时内核20协作。网络基础结构服务可运行在单个网络节点上或可跨多个网络节点分布。网络基础结构服务通常运行在一个或更多个专用的网络节点上(例如,执行诸如路由和交换等边缘服务的服务器计算机或网络设备)。然而,在一些实施例中,一个或更多个网络基础结构服务运行在至少一个通信者网络节点上。虚拟区域通信环境10的示例性实施例中所包括的网络基础结构服务有帐户服务、安全性服务、区域服务26、集合服务、以及交互服务等。帐户服务管理网络基础结构服务环境中的通信者帐户。帐户服务也管理可由客户端网络节点用于向任何网络基础结构服务认证它们自己的认证令牌的创建和发出。安全性服务控制通信者对虚拟区域通信环境10的资产和其他资源的访问。由安全性服务实现的访问控制方法通常基于一个或更多个能力(其中对具有适当能力或许可的实体准许访问)和访问控制列表(其中对具有列表上的身份的实体准许访问)。在已经准许特定通信者访问资源后,该通信者通常使用由其他网络基础结构服务提供的功能性在虚拟区域通信环境10中交互。区域服务26管理虚拟区域。在此过程中,区域服务26根据请求实体的能力来管理与虚拟区域相关联的连接、维护虚拟区域的全局状态信息、以及用作参与由虚拟区域定义的上下文中的共享通信会话的客户端网络节点的数据服务器。全局状态信息包括虚拟区域中的所有对象的列表及其在虚拟区域中的相应位置。区域服务26发送配置客户端网络节点的指令。区域服务26也登记并向请求加入通信会话的其他客户端网络节点传送初始化信息。在此过程中,区域服务26根据虚拟区域应用30向每个加入的客户端网络节点传送在客户端网络节点上呈现虚拟区域28所需的组件(例如,插件)的列表。区域服务26也确保若发生通信故障,客户端网络节点能同步到全局状态。集合服务根据请求实体的能力来管理存在性信息的收集、存储和分发并为网络节点提供用于彼此通信的机制(例如,通过管理连接句柄的分发)。集合服务通常在存在性数据库中存储存在性信息。交互服务根据请求实体的能力来维护记录通信者之间的交互的交互数据库并支持对交互数据库的查询。对通信者之间的每个交互,虚拟区域通信环境10中的一个或更多个服务(例如区域服务26)向交互服务传送交互数据。作为响应,交互服务在关系数据库中生成一个或更多个相应交互记录。每个交互记录描述交互的上下文。例如,在一些实施例中,交互记录包含每个通信者的标识符、交互场所的标识符(例如,虚拟区域实例)、交互场所的等级的描述(例如描述交互空间如何与较大区域相关)、交互的起始和结束时间、以及在交互期间共享的所有文件和其他流的列表。因此,对于每个实时交互,交互服务跟踪其在何时发生,在何处发生、以及在交互期间就所涉及的通信者而言发生了什么(例如,进入和退出)、被激活/禁用的对象、以及共享的文件。交互服务能基于场所以分类次序(例如,最频繁的或最近的)呈现对交互数据库记录的查询结果。查询结果能被用于导出通信者已经在哪些虚拟区域内遇到的联系人的频率分类,以及不论虚拟区域通信者已经遇到的联系人的分类、以及通信者最经常出入的虚拟区域的分类。查询结果还可被应用开发者用作基于关系使某些任务自动化的启发式系统的一部分。此类型的启发的示例是允许已经到访特定虚拟区域超过5次的通信者不必经默认的敲门就能进入的启发,或者是允许在特定时间存在于一区域中的通信者修改和删除由在相同时间存在于相同区域中的另一通信者创建的文件的启发。对交互数据库的查询可与其他搜索相组合。例如,对交互数据库的查询可与针对使用在网络基础结构服务环境的域之外的通信系统(例如,Skype、Facebook、以及Flickr)与联系人交互而生成的联系历史数据的查询相组合。3.虚拟区域实时内核20管理由虚拟区域的实例定义的通信上下文中与网络节点的实时连接。虚拟区域实例可对应关于抽象坐标所定义的抽象(非几何)虚拟空间。替换地,虚拟区域实例可对应关于与特定可视化相关联的一维、二维、或三维几何坐标所定义的视觉虚拟空间。抽象虚拟区域可以与相应可视化相关联或者也可不相关联,而视觉虚拟区域与相应可视化相关联。如上所解释的,通信者通常在具有相关联的可视化的虚拟区域中由相应的化身来表示。化身响应于由通信者在其各自相应的网络节点处输入的输入命令在虚拟区域中四处移动。通信者看到的具有相关联的可视化的虚拟区域实例的视图通常是从该通信者的化身的观点呈现的,且每个通信者通常能够观看到他或她的化身周围的任何视觉虚拟区域部分,从而增强了通信者体验到的沉浸感级别。图4示出了由计算机系统48实现的示例性网络节点的实施例。计算机系统48包括显示监视器50、计算机鼠标52、键盘554、扬声器56、58、以及话筒60。显示监视器50显示图形用户界面62。图形用户界面62是基于窗口的图形用户界面,其可包括多个窗口、图标、和指针64。在所解说的实施例中,图形用户界面62呈现对与表示艺廊的三维可视化相关联的共享虚拟区域66的二维描绘。通信者在该虚拟区域66中由各自相应的化身68、70、72来表示,每个化身可在该虚拟区域66的上下文中具有各自相应的角色(例如,馆长、艺术家、和游客)。如以下详细解释的,虚拟区域66包括与支配在虚拟区域66中由化身68-72表示的网络节点间的实时数据流开关的相应规则相关联的地带74、76、78、80、82。(在典型的通信会话期间,图4中划界出地带74-82的虚线对于通信者而言是不可见的,尽管可以有与此类地带边界相关联的视觉线索。)开关规则规定在每一个网络节点上执行的本地连接过程如何基于通信者的化身68-72在虚拟区域66的地带74-82中的位置来建立与其他网络节点的通信。虚拟区域由包括对该虚拟区域的几何要素的描述以及一个或多个规则(包括开关规则和支配规则)的规范来定义。开关规则支配网络节点之间的实时流连接。支配规则控制通信者对诸如虚拟区域本身、具有虚拟区域的区划、以及虚拟区域内的对象之类的资源的访问。在一些实施例中,虚拟区域的几何要素根据COLLADA–DigitalAssetSchemaRelease1.4.1April2006specification(2006年4月数字资产计划版本1.4.1规范,可从http://www.khronos.org/collada/得到)进行了描述,而开关规则根据在美国申请号11/923,629和11/923,634中描述的COLLADA流参考规范使用可扩展标记语言(XML)文本格式(在本文称作虚拟空间描述格式(VSDL))进行了描述。虚拟区域的几何要素通常包括虚拟区域的物理几何和碰撞几何。物理几何描述虚拟区域的形状。物理几何通常由三角形、四边形、或多边形的表面形成。颜色和纹理被映射到物理几何上以创建虚拟区域的更真实表观。例如可通过在视觉几何上描绘光线并修改光线附近的纹理、颜色、或亮度来提供光照效果。碰撞几何描述确定对象可在虚拟区域中移动的方式的不可见表面。碰撞几何可与视觉几何一致、对应于视觉几何的更简单的近似、或者与对虚拟区域设计者的因应用而异的要求有关。开关规则通常包括对用于按照虚拟区域中的位置来连接实时数据流的源和阱的条件的描述。每个规则通常包括定义该规则所适用的实时数据流类型以及该规则在该虚拟区域中所适用的(诸)位置的属性。在一些实施例中,每个规则任选地可包括指定源的所要求角色、阱的所要求角色、流的优先级别、和所请求的流处置拓扑的一个或多个属性。在一些实施例中,如果没有为虚拟区域的特定部分定义的显式开关规则,则可向虚拟区域的该部分应用一个或多个隐式或缺省开关规则。一个示例性缺省开关规则是依照策略规则将区域内的每个源连接至每个相兼容的阱的规则。策略规则可全局地适用于区域客户端之间的所有连接、或者仅适用于与个体区域客户端的相应连接。策略规则的示例是接近度策略规则,该规则仅允许与虚拟区域中彼此在规定距离(或半径)内的相应对象相关联的源和兼容阱的连接。在一些实施例中,支配规则与虚拟区域相关联以控制谁能访问该虚拟区域、谁能访问其内容、对该虚拟区域的内容的访问的范围是什么(例如,用户关于该内容能做什么)、以及访问这些内容的后继结果是什么(例如,记录保持,诸如审计日志、和支付要求)。在一些实施例中,整个虚拟区域或该虚拟区域的地带与“支配网格”相关联。在一些实施例中,支配网格是用类似于在美国申请号11/923,629和11/923,634中描述的地带网格的实现的方式来实现的。支配网格使得软件应用开发者能够将支配规则与虚拟区域或虚拟区域的地带相关联。这避免了为虚拟区域中的每个文件创建个体许可的需求并且避免了处理在需要取决于上下文不同地对待同一文档时可能产生的复杂度的需求。在一些实施例中,虚拟区域与将该虚拟区域的一个或多个地带与数字版权管理(DRM)功能相关联的支配网格相关联。DRM功能控制对虚拟区域或该虚拟区域内的一个或多个地带或该虚拟区域内的对象中的一者或多者的访问。每次通信者越过该虚拟区域内的支配网格边界时DRM功能被触发。DRM功能确定该触发动作是否被许可,并且如果许可,则确定所许可动作的范围、是否需要支付、以及是否需要生成审计记录。在虚拟区域的示例性实现中,相关联的支配网格被配置成使得如果通信者能够进入该虚拟区域,则他或她能够对与该虚拟区域相关联的所有文档执行动作,包括操控文档、查看文档、下载文档、删除文档、修改文档和重新上载文档。这样,虚拟区域可变成在由该虚拟区域定义的背景中共享和讨论的信息的储存库。关于虚拟区域的规范的附加细节在美国申请号61/042714(提交于2008年4月4日)、11/923,629(提交于2007年10月24日)、和11/923,634(提交于2007年10月24日)中记载。4.其他平台组件实时内核20被设计为作为客户端软件包的一部分的本地网络节点的组件来工作,其中客户端软件还包括:a.抬头显示器(HUD)软件应用;b.本地人类接口设备(HID)和音频回放设备;c.So3D图形显示、化身、和物理学引擎;d.系统数据库和存储设施。a.抬头显示器(HUD)抬头显示器(HUD)是在每一个客户端网络节点上操作的对实时内核20的应用接口。HUD是用户能够在他或她的桌面上一直保持和运行的小型、轻量级接口。它是用于启动虚拟区域应用、为他或她提供对实时联系人和实时协作场所(或区域)的即时访问的用户接口。虚拟区域通过HUD和实时内核20与用户的桌面整合在一起,从而使得用户能将文件拖放到虚拟区域通信环境中、利用独立于虚拟区域通信环境的原生客户端软件应用来使用与虚拟区域关联地存储同时又存在于虚拟区域中的文件、以及更一般地将虚拟区域内的存在性和位置作为其操作环境中类似于其他操作系统功能的一方面而不只是若干应用中的一个应用来对待。图5A和5B示出了通过坐落在通信者的桌面的右下角的半透明用户接口来实现的HUD的实施例84。HUD84是通往平台的应用接口。HUD84的特性包括:·意欲在用户桌面上一直运行的小型、轻量级应用;以及·为用户提供便于查看联系人并与联系人交互以及查看发生交互的虚拟区域并与虚拟区域交互的接口。在此实施例中,HUD84通过提供对控件的永久接口和访问的基本透明的(半透明)用户接口覆盖来实现。在图5A所示的实施例中,HUD84是透明的,除了该接口的以下半透明要素中的一个或多个要素的有限集合:·渐进式沉浸感控件的轮廓;·用户当前位置的轮廓;·表示虚拟区域86中的实时联系人的子图形;以及·划界出HUD区域的边界的线条。在实时内核260和HUD84正在运行而并准备好发起实时通信会话的同时,通信者能够在普通桌面计算环境中工作。例如,通信者可与诸如之类的其他应用合作以创建稍后可以在实时通信会话中共享的文档。虚拟区域86与通信者的桌面整合在一起,从而使得该通信者能将文件拖放到虚拟区域中、利用独立于虚拟区域通信环境的原生客户端软件应用来使用与虚拟区域关联地存储同时又存在于虚拟区域中的文件、以及更一般地将虚拟区域内的存在性和位置作为其操作环境中类似于其他操作系统功能的一方面而不是若干应用中的一个应用来对待。当通信者在虚拟区域86中交互时,HUD84为通信者提供对他或她所期望的可视化的独立控制。例如,通信者可显示虚拟区域的最小化视图(被最小化至桌面的右下角)并参与同该虚拟区域中的另一通信者的音频交谈,同时又工作在诸如之类的不同应用中。通信者随后可改变他或她的可视化模式并进入对虚拟区域86的更加沉浸的三维呈现。这是通过将HUD84中的渐进式沉浸感滑块88的设置从“桌面”改为“3D”来实现的。一旦处在3D可视化模式下,通信者的桌面就显示对虚拟区域86的3D呈现(如图5A中所示)。通信者(在桌面模式下由子图形90、92、94表示)现在采取如图5A中所示的三维化身96、98、100的形式。与虚拟区域86相关联的任何数据皆可被显示在观看屏102、104、106上。观看屏是可被用于呈现任何随意数据的通用数据呈现组件。可在观看屏上呈现的数据类型的示例包括:·微软PowerPoint报告书·视频·网络摄像机的输出·直接来自组织的企业资源规划(ERP)系统的实时数据如图5C中所示,HUD84被设计成充当显示信息并提供对控件的访问的真实接口,且对呈现在通信者的显示监视器上的图形用户界面62的底层部分只有最小的遮挡。HUD84高效地显示:·该通信者的当前在线的实时联系人,·该通信者与该通信者的实时联系人当前“位于”该虚拟区域86中的何处,·控制虚拟区域86的可视化的渐进式沉浸感控件,以及·使得用户能快速连接至特定场所的导航控件。具体地,HUD84为通信者提供对其实时联系人以及在发生实时协作的虚拟区域的即时访问。HUD84允许基于人的位置在区域中导航以及允许对虚拟区域的查看。这些虚拟区域可以许多方式访问:最频繁使用的、最近使用的、或应用指定方式。HUD84显示一组有序的场所瓦片108、110、112。点击场所瓦片中的一个将用户带到由所选择的场所瓦片所表示的虚拟区域。对于人而言,具有去(往通信者的区域)和取(将他们带到用户的区域)的基本隐喻。这在HUD84中通过允许通信者对去或取请求进行排队以及在无需“移动”的情况下经由文本或语音与人通信来完善。HUD84在从另一通信者收到每个通信请求时通知该通信者。该通信者可以接受该请求、忽略它、或将它添加到通信队列。这样,通信者能在稍后的时间响应非优先通信。例如,通信者可将在该通信者繁忙(例如,忙于当前通信会话)的时间期间收到的通信进行排队,并且在该通信者空闲之后,该通信者可响应该通信队列中的通信请求。如上所述,交互网络基础结构服务维护记录通信者遇到谁以及在哪里遇到的交互数据库。交互服务用可按基于场所的分类次序(例如,最常或最近)呈现的查询结果来响应对关系数据库的查询。这样,关系数据库信息可被用于导出该通信者在哪些区域遇见的人的频率分类、以及在不论区域的情况下该通信者已经遇见的人的分类、和该通信者最常出入的区域的分类。此数据被用在HUD84中。该数据也可被用虚拟区域应用开发者用作启发式系统的一部分(例如,准许已经拜访特定虚拟区域超过5次的人进入而无需默认的敲门的规则、或者允许在特定时间存在于虚拟区域中的人修改和删除由在同一时间在那里的另一通信者创建的文件的规则)。在图5C中,HUD84呈现一系列表示相应虚拟区域的场所瓦片108、110、112。这些虚拟区域中的每一个被纽带联系到对关系数据库的查询。关于每个虚拟区域,集合服务对关系数据库查询用户已在该虚拟区域中遇见过的所有联系人。集合服务通常在按频率或按交互的最近性(例如,该通信者最后交互的联系人)来分类的列表中呈现所标识的联系人。在其他实施例中,联系人可以其他某种取决于应用的方式来分类。对关系数据库的查询可与其他搜索相组合。例如,对关系数据库的查询可以与对针对使用另一通信系统(例如,Skype、Facebook、和Flickr)与联系人的交互所生成的联系人历史数据的查询相组合。在一个示例中,Skype虚拟区域112可以与对通信者的关联于Skype虚拟区域112的关系数据和该通信者的Skype历史数据的查询相关联,以产生该用户的与Skype虚拟区域112相关联的实时联系人的分类列表。图5C示出了对HUD84中的联系人和虚拟区域的基本导航。点击与虚拟区域瓦片108-112中的每一个相关联的朝左箭头显示在给定场所中按交互频率分类的实时联系人的列表。例如,点击主HUD瓦片84(标记为“办公室”)的朝左箭头114显示该用户在虚拟区域86中最频繁通信的实时联系人。联系人(由各自相应的图标瓦片表示)的列表按照频率进行分类。列表中的第一位联系人(在此示例中为DVW)代表该用户在虚拟区域86中合作最频繁的联系人、继之以PJB、Tim等等。点击朝上箭头116显示代表该通信者已经到访过的一些或所有虚拟区域的一组场所瓦片。该组场所瓦片通常按频率、最近性、或其他排序来分类。虚拟区域场所瓦片显示当前发生在相应虚拟区域中的实时活动。例如,DVW、Kim和Joe(由主虚拟区域瓦片108中的相应子图形表示)皆在该主虚拟区域中并且正在进行实时谈话,而Jeff、Ann和Jane(由虚拟区域瓦片110中的相应子图形表示)全部在Facebook虚拟区域中。假定任何通信者退出虚拟区域或进入虚拟区域,此虚拟区域中的存在性指示器(即,由圆形所示出的小图形,通常与名称或其他标识符相关联)将自动被实时更新。该特征证明虚拟区域设计者向场所瓦片输入应用专用实时数据的能力。场所瓦片可看起来与通信者相关联,或与通信者的场所相关联。例如,游戏开发者可输出通信者在其游戏环境中所在地的地图,由此通过关系数据库连接到该通信者的其他人接收对该通信者当前活动的实时馈送。这些人可使用该虚拟区域瓦片来导航至该通信者,与他或她通信、或联络他或她(例如,发送进入虚拟区域的邀请)。HUD84同时为许多不同的虚拟区域管理与联系人和虚拟区域的此接口。HUD虚拟区域瓦片84、108、110、112中使用的实时数据由主存相关区域的区域服务所管理的接口经由实时内核120来提供。每个区域服务可基于通信者察看所主存的虚拟区域的许可向通信者提供对不同的相应HUD虚拟区域瓦片数据。例如,如果通信者进入不允许该通信者察看的虚拟区域,则HUD虚拟区域瓦片可显示受限或没有详细信息。此外,由主存区域服务提供的HUD虚拟区域瓦片数据馈送可由操作该区域服务的虚拟区域提供商定制以向订阅HUD呈现该虚拟区域的应用指定视图。b.本地人类接口设备(HID)和音频回放设备;本地HID设备使通信者在参与虚拟区域通信会话时能向客户端网络节点输入命令和其他信号。示例性的HID设备包括计算机键盘、计算机鼠标、触摸屏显示器、以及话筒。音频回放设备使通信者能回放在虚拟区域通信会话期间接收的音频信号。示例性的音频回放设备包括用于操纵(例如,混频和施加特殊效果)音频信号的音频处理硬件(例如,声卡),以及用于输出声音的扬声器。c.So3D图形显示、化身、和物理学引擎So3D引擎是控制虚拟区域和虚拟区域内的对象在显示监视器上的相应视图显示的三维可视化引擎。So3D引擎通常与图形用户界面驱动器和HID设备接口以呈现虚拟区域的视图并允许通信者控制HUD应用的操作。So3D引擎通常经由实时内核20接收来自区域服务26的图形呈现指令。在一些实施例中,So3D引擎也读取包含呈现通信者在虚拟区域中的化身所需要的图像的通信者化身数据库。基于此信息,So3D引擎从虚拟区域内的通信者的化身角度(位置和取向)生成虚拟区域和该虚拟区域内的对象的视觉表示(即,图像)。该视觉表示通常被传递给操作系统的图形呈现组件,该图形呈现组件驱动图形呈现硬件在客户端网络节点上呈现虚拟区域的视觉表示。通信者可通过从HID设备(例如,计算机鼠标)向实时内核20传送命令(实时内核20将视图控制命令传送给So3D引擎)来控制虚拟区域的所呈现视图。So3D引擎根据视图控制命令来更新虚拟区域的视图。So3D引擎还根据经由实时内核20从区域服务26接收的经更新的对象位置信息来更新虚拟区域在显示监视器上的图形表示。d.系统数据库和存储设施系统数据库和存储设施存储平台使用的各种类型的信息。通常由存储设施存储的示例性的信息包括存在性数据库、交互数据库、化身数据库、真实用户id(RUID)数据库、样式(art)缓冲数据库、以及虚拟区域描述数据库。信息可在单个网络节点上存储或者可以跨多个网络节点分布。C.示例性的通信会话再次参见图4,在通信会话期间,每个客户端网络节点生成相应的实时数据流集(例如,运动数据流、音频数据流、聊天数据流、文件传递数据流、以及视频数据流)。例如,每个通信者操纵一个或更多个生成运动数据流的输入设备(例如,计算机鼠标52和键盘54),运动数据流控制他或她的化身在虚拟区域66中的移动。此外,在计算机系统48附近本地生成的通信者语音和其他声音由话筒60捕获。话筒60生成可被转换为实时音频流的音频信号。音频流的相应副本被传送给由虚拟区域66中的化身表示的其他网络节点。在这些其他网络节点本地生成的声音被转换成实时音频信号并被传送给计算机系统48。实时内核20将其他网络节点生成的音频流转换为由扬声器56、58呈现的音频信号。运动数据流和音频数据流可直接或间接从每一个通信者节点传送至其他客户端网络节点。在一些流处置拓扑中,每个客户端网络节点接收由其他客户端网络节点传送的实时数据流的副本。在其他流处置拓扑中,一个或更多个客户端网络节点接收从源自(发源于)其他一些网络节点的实时数据流导出的一个或更多个流混合。在一些实施例中,区域服务26维护包括虚拟区域的当前描述、该虚拟区域中的对象的当前登记、以及当前正由主存区域服务26的网络节点生成的任何流混合的列表的全局状态信息。对象登记通常包括针对虚拟区域中的每个对象的相应对象标识符(例如,唯一地标识对象的标签)、能与关联于该对象的网络节点建立网络连接的连接句柄(例如、URI,诸如IP地址)、以及标识与该对象相关联的实时数据源和阱(例如,与该对象相关联的网络节点的源和阱)的接口数据。对象登记还通常包括针对每个对象的一个或更多个可选角色标识符,该可选角色标识符可由通信者或区域服务26明确指派给对象,或者可从对象的其他属性推断出。在一些实施例中,对象登记还包括每个对象在虚拟区域中的当前位置,这由区域服务26从对接收自与虚拟区域中的对象相关联的网络节点的实时运动数据流的分析中确定。就此,区域服务26从与虚拟区域中的对象相关联的网络节点接收实时运动数据流、并基于该运动数据跟踪通信者的化身和进入、离开和在虚拟区域中四处移动的其他对象。区域服务26根据被跟踪对象的当前位置来更新对象登记。在管理与其他网络节点的实时数据流连接的过程中,区域服务26维护针对每个客户端网络节点的配置数据集,包括接口数据、地带列表、以及当前位于虚拟区域内的对象的位置。接口数据包括针对与每个客户端网络节点相关联的每个对象的关于关联于该对象的实时数据流类型的所有源和阱的相应列表。地带列表是虚拟区域中当前被与相应客户端网络节点相关联的化身占据的所有地带的登记。当通信者首次进入虚拟区域中时,区域服务26通常用位置初始化信息初始化当前对象位置数据库。之后,区域服务26用对象在虚拟区域中的当前位置来更新当前对象位置数据库,该当前位置从对接收自共享虚拟区域的其他客户端网络节点的实时运动数据流的分析中确定。图6示出一种方法的实施例,根据该方法,区域服务26的实施例确定当用户进入虚拟区域或穿过虚拟区域的地带之间的边界时要建立的一组所要求的实时数据流连接。区域服务26根据虚拟区域描述和每个通信者的化身在虚拟区域实例中的位置来建立该通信者的所占据地带的列表(图6,框180)。在此过程中,区域服务26从当前对象位置数据库中检索用户化身在虚拟区域实例中的当前位置,该位置包含化身在虚拟区域实例中的当前位置的坐标。区域服务26随后比较通信者的化身的当前位置和虚拟区域描述中的地带定义。区域服务26根据虚拟区域描述中与通信者化身的当前位置一致的所有地带来编辑所占据地带列表。例如,在一些实施例中,所占据地带列表包括其网格包含通信者化身的当前位置的所有地带。区域服务26确定为所占据地带列表中的地带定义的一组目标实时数据流类型(图6,框182)。区域服务26随后从该组目标实时数据流类型、对象在虚拟区域实例中的位置、以及虚拟区域描述中定义的开关规则确定所要求的实时数据流数据集(图6,框184)。在一些示例性实施例中,在区域服务26已经确定使用户能在共享虚拟区域实例中参与与其他网络节点的协作通信会话的实时数据流数据集(图6,框184)后,区域服务26确定将导致向计算机系统120传递所要求的数据流数据的实时数据流连接。在一些实施例中,区域服务26确定实时数据流处置拓扑,该处置拓扑至少部分地基于计算机系统120的带宽能力将实时数据流集传递给计算机系统120。在此过程中,区域服务26确定从未混合的实时数据流以及根据实时数据流的组合导出的流混合接收每个实时数据流的相应形式。区域服务26还确定从直接对等网络路线和由一个或更多个其他网络节点仲裁的网络路线接收每个实时数据流的网络路线。在已确定流处置拓扑后,区域服务26向在计算机系统120上操作的实时内核发送指令。该指令根据所确定的流处置拓扑指定计算机系统120和其他一些网络节点之间所要求的实时数据流连接。图7示出由实时内核20在确定向计算机系统120传递所要求的数据流数据的实时数据流连接的拓扑过程中实现的方法的实施例。根据该方法,实时内核20确定计算机系统120是否具有直接从其他网络节点接收所要求的实时数据流数据集186的足够带宽(图7,框188)。在此过程中,其他网络节点向计算机系统120传送链路请求。该链路请求指示计算机系统120传送相应的实时数据流集所需要的相应带宽要求。实时内核20将建立所要求的直接连接所需要的总带宽与当前计算机系统120可用的下载带宽进行比较。如果可用带宽至少等于总要求带宽,则实时内核20建立与提供所要求的实时数据流数据的其他网络节点的直接连接(图7,框190)。在此过程中,实时内核20创建计算机系统120与一个或更多个其他网络节点之间的套接字(例如,TCP套接字或性能最优化的专用实时套接字)。实时内核20处理实时数据流,包括加密它们、记录它们、以及将经处理的数据流传递给呈现在用户界面中及在网络18上传送所需的下游软件组件。如果可用带宽小于所要求带宽(图7,框188),则实时内核20检查流混合列表以确定区域服务26是否正在生成提供所要求实时数据流数据的流混合(图7,框192)。如果需要的流混合可用,则实时内核20与区域服务26建立将所需实时数据流混合的副本从区域服务器28传送到计算机系统120的连接(图7,框194)。如果所需流混合不可用,则实时内核20向区域服务26发送流混合请求(图7,框196)。如果可能,区域服务26响应于流混合请求生成所需流混合。IV.系统架构A.引言通信者通常从客户端网络节点连接到网络18,客户端网络节点通常由通用计算机系统或专用通信计算机系统(或“控制台”,诸如网络使能的视频游戏控制台)来实现。网络节点执行建立与其他网络节点的实时数据流连接的通信过程且通常执行呈现通信者进入的每个虚拟区域的视图的可视化呈现过程。图8示出了由计算机系统120实现的客户端网络节点的实施例。计算机系统120包括处理单元122、系统存储器124和将处理单元122耦合至计算机系统120的各种组件的系统总线126。处理单元122可包括一个或更多个数据处理器,每个数据处理器可以是任一种商业上可用的计算机处理器的形式。系统存储器124可包括存储包含计算机系统120的启动例程的基本输入/输出系统(BIOS)的只读存储器(ROM)和随机存取存储器(RAM)。系统总线126可以是存储器总线、外围总线或本地总线,并且可与任何总线协议(包括PCI、VESA、Microchannel、ISA和EISA)兼容。计算机系统120还包括连接至系统总线126并包含一个或更多个提供对数据、数据结构和计算机可执行指令的非易失或永久存储的计算机可读介质盘的永久存储存储器128(例如,硬盘驱动器、软盘驱动器、CDROM驱动器、磁带驱动器、闪存设备、以及数字视频驱动器)。通信者可使用一个或更多个输入设备130(例如,一个或更多个键盘、计算机鼠标、话筒、摄像头、操纵杆、诸如Wii输入设备的物理运动传感器、以及触摸垫等)与计算机系统120交互(例如,输入命令或数据)。信息可通过在显示监视器132上呈现给通信者的图形用户界面(GUI)来呈现,这由显示控制器134控制。计算机系统120还可包括其他输入/输出硬件136(例如,诸如扬声器和打印机等外围输出设备)。计算机系统120通过网络适配器138(也称为“网络接口卡”或NIC)连接至其他网络节点138、140和142。若干程序模块可被存储在系统存储器124中,包括操作系统(OS)144(例如,可从美国华盛顿雷蒙德的微软公司获得的Windows操作系统)、实时内核20、驱动程序146(例如,GUI驱动程序)、网络协议148、本地软件应用150(例如,HUD84)、以及数据(例如,输入数据、输出数据、程序数据、注册表156、以及配置设定152)。B.操作系统操作系统144通过提供用于创建计算机系统120上的运行时执行环境的基础操作系统服务来主存软件应用。通常由操作系统提供的示例性类型的服务是资源管理、文件管理、安全性、认证、验证、通知、以及用户接口(例如、窗口、菜单、对话等)。与计算机系统120的资源(例如,存储器、处理器、以及I/O设备)管理有关的服务通常由操作系统内核实现。文件管理可由操作系统内核实现或可用分离的文件系统管理器(例如,可安装的文件系统,其在一些操作系统中提供)实现。在打开文件(例如,计算机数据文件或软件应用文件)的过程中,文件系统管理器通常调用适当的文件系统驱动程序,该文件系统驱动程序在映射出文件在磁盘上的存储位置的数据库(例如,诸如FAT、FAT98、VFAT、MFT以及CDFS等文件分配表)中查找该文件的磁盘存储位置。诸如安全性、认证、验证、通知、以及用户接口的其他操作系统功能可由操作系统的一个或更多个其他组件(例如,一些操作系统中的可执行服务层)提供。通常由操作系统内核提供的示例性类型的服务是过程管理、存储器管理、设备管理、以及系统调用处置。过程管理包括运行应用并向计算机系统的硬件组件提供应用编程接口(API)。在运行软件应用的过程中,操作系统内核通常在存储器中建立用于该软件应用的地址空间、在该地址空间中加载包含该软件应用代码的文件、以及执行加载的软件应用代码。存储器管理涉及管理软件应用对系统存储器124的访问。设备管理涉及提供通过设备驱动器对硬件设备的访问。系统调用处置涉及提供向用户模式软件应用暴露操作系统内核服务的API。通过调用API(例如,通过过程间通信机制和系统调用),软件应用可向操作系统内核请求服务、传递参数、以及接收响应于请求由服务生成的结果。操作系统144通常在注册表156中存储硬件和软件配置信息、用户偏好、以及设置信息。例如,注册表156通常包含以下信息:引导和配置系统所需的参数值、控制操作系统144的操作的系统范围的软件设置、安全性数据库、以及每用户简档设置。在一些实施例中,连接规则32被存储在注册表156而非分离的数据库中。C.网络协议网络协议148控制或使能计算机系统120和其他网络节点之间的连接、通信、和数据传递。示例性的网络协议类型包括传输控制协议/网际协议(TCP/IP)、用户数据报协议/网际协议(UDP/IP)、实时传输协议(RTP)、以及会话发起协议(SIP)。TCP/IP包括TCP部分和IP部分。该协议的TCP部分通过将消息分裂成较小分组、在通信网络另一端重新组装分组、以及重新发送任何在路上丢失的分组来提供传输功能。该协议的IP部分通过向这些数据分组指派目的地网络以及该目的地网络处的目标节点的地址来提供路由功能。使用TCP/IP传递的每个数据分组包括包含TCP和IP信息的头部。IP不向通信栈的上层提供分组传递的保证。另一方面,TCP提供有保证的排队分组传递下面向连接的端对端传输服务。这样,TCP协议提供可靠的传输层连接。UDP是面向消息的传输层协议,其提供应用层和因特网层之间的接口。UDP不保证消息传递到应用层。UDP是无连接协议,因为对建立专用端对端连接并无建树。UDP发送方在发送UDP消息后,不保留关于这些UDP消息的状态信息。通信是基于从源到目的地的一个方向上的消息传输,不会检查接收机的状态。RTP定义用于通过网络连接传递音频和视频的标准化分组格式。各种网络协议可被用于在网络节点之间传送和接收RTP数据,包括对等连网框架、单独使用TCP套接字或与UDP联用的集中式服务器、以及多播协议。SIP向用户提供用于彼此定位、建立通信会话、以及终止活动会话的手段。有了SIP事务,根据会话描述协议(SDP)来处置话商定过程。D.设备驱动程序设备驱动程序146通常由使其他软件应用(例如,用户模式的软件应用和操作系统)与连接至计算机系统120的硬件设备交互的软件应用来实现。设备驱动程序通常向可由软件过程作出的调用所调取的功能提供API,以便转换在软件过程和硬件设备之间传递的命令和数据。E.实时内核1.引言实时内核20包括控制计算机系统120和共享虚拟区域通信环境的其他网络节点之间的实时数据流的处理和开关的服务,以及虚拟区域和该虚拟区域中的对象在显示监视器132上的相应视图呈现的服务。在这些过程中,实时内核与和驱动程序148进行通信的操作系统功能接口以向和从计算机系统120的硬件组件传递命令和数据,以便与其他网络节点交换实时数据流并向通信者呈现沉浸性虚拟区域通信体验。实时内核20的实现包括一个或更多个分立模块或分立库(例如,动态链接的库),这并不限于任何特定的硬件、固件、或软件配置。一般来说,这些模块可在任何计算或数据处理环境中实现,包括在数字电子电路(例如,应用专用集成电路,诸如数字信号处理器(DSP))中或在计算机硬件、固件、设备驱动器、或软件中。在一些实施例中,模块的功能性被组合进单个数据处理组件。在一些实施例中,一个或更多个模块的每一者的相应功能性由多个数据处理组件的相应集执行。在一些实现中,用于实现实时内核20的实施例执行的方法的过程指令(例如,诸如计算机软件等计算机可读代码),以及它们生成的数据被存储在一个或更多个计算机可读介质上。适用于有形地表达这些指令和数据的存储设备包括所有形式的非易失性计算机可读存储器,包括例如诸如EPROM、EEPROM和闪存设备的半导体存储设备;诸如内部硬盘和可移动硬盘的磁盘;磁光盘;DVD-ROM/RAM以及CD-ROM/RAM。2.示例性实时内核功能性实时内核20与一个或更多个网络基础结构服务协作以建立并管理计算机系统120与共享虚拟区域通信环境的其他网络节点之间的网络连接。在建立并管理网络连接过程中涉及的示例性功能性有会话管理、远程控制流处置、以及实时任务调度。e.会话管理图9示出由实时内核20响应于请求连接至虚拟区域的实时内核API调用实现的方法的实施例。根据图9的方法,实时内核20确定虚拟区域的指定(图9,框160)。在一些实施例中,实时内核20的该功能性通过向实时内核服务发起包括虚拟区域指定的实时内核API调用来调取。实时内核API调用可由任何软件应用、操作系统服务作出。实时内核20建立与主存指定的虚拟区域的网络基础结构服务的会话(图9,框162)。在此过程中,实时内核20建立与区域服务26的会话。实时内核20随后向区域服务26传送对连接至指定的虚拟区域的请求。区域服务26确定从实时内核20接收的请求中指定的虚拟区域的实例。在确定虚拟区域实例的实例后,区域服务46确定用户能力是否满足与虚拟区域实例相关联的能力要求。如果用户能力符合能力要求,则区域服务46传送指示描述虚拟区域实例的当前状态的状态数据的可用性的消息(例如,当前在虚拟区域实例中的对象的列表、以及与这些对象相关联的通信者的名称)。实时内核20订阅描述虚拟区域实例的当前状态的状态数据(图9,框164)。响应于订阅请求,区域服务26向实时内核20和区域服务26之间的链路上的信道公布状态信息。在一些实施例中,实时内核20的So3D引擎调用操作系统144的用户接口服务以呈现状态数据的人类可感知的视图。例如,So3D引擎可调用接口服务以在显示器132上呈现与当前在该区域内的对象相关联的每个通信者的表示。在一些实施例中,通信者可由图标、缩略图、或可选地用该通信者名称标记的其他图形来表示。在一些实施例中,状态数据在触发了实时内核20的调用的软件应用的图形界面中呈现。在一些实施例中,状态数据在抬头显示器(HUD)界面84的实施例中呈现(参见图5A-5C)。在已经建立与虚拟区域实例的连接后,触发实时内核20调用的软件应用可给予用户请求进入虚拟区域实例内的选项或可代表该用户自动请求进入该虚拟区域实例内。图10示出由实时内核20响应于请求进入虚拟区域的实时内核API调用实现的方法的实施例。根据图10的方法,实时内核20向主存虚拟区域的网络基础结构服务宣称进入该虚拟区域的意图(图10,框168)。在此过程中,实时内核20向区域服务26发送包含该宣称的消息。该消息可在与区域服务26的现有链路的信道上发送,或者在实时内核20建立的与区域服务26的新链路上发送。作为相应,区域服务26确定用户能力是否满足与虚拟区域实例相关联的能力要求。如果用户能力符合能力要求,则区域服务26向实时内核20返回配置数据。根据虚拟区域实例的描述,配置数据通常包括虚拟区域实例的定义、当前在该虚拟区域实例内的对象的登记、以及与虚拟区域中的对象相关联的实时数据流源和阱的集合。实时内核20发起至少一个实时数据流在与至少一个实时数据流源的至少一个网络连接上的传递,其中该至少一个数据流源分别与虚拟区域中的至少一个对象相关联(图10,框170)。在此过程中,实时内核20基于从区域服务26接收的配置数据确定与虚拟区域的实例相关联的一个或更多个网络节点。实时内核20随后发起至少一个实时数据流在与至少一个所确定的网络节点的至少一个网络连接上的传递。实时内核20和其他网络节点之间的连接可以是对等连接或服务器仲裁的连接。关于对等连接,连接目标网络节点和实时内核20通常彼此认证,并且随后建立链路,经由该链路向或从连接目标传送至少一个实时数据流。链路通常是单向的且由发射机请求并由接收机接受或拒绝。在所解说的实施例中,实时内核20根据虚拟区域实例的描述中的至少一个流处置定义来处理发起的实时数据流(图10,框172)。在此过程中,实时内核20根据虚拟区域描述中定义的流处理配置将流处理对象集组装成有向图。f.远程控制的流处置图11示出由实时内核20响应于从虚拟区域服务26接收的处置指令实现的方法的实施例。根据图11的方法,实时内核20从在远程网络节点上操作的区域服务26接收一个或更多个流处置指令,其中该流处置指令包括用于处理至少一个实时数据流的流处理机的描述(图11,框200)。实时内核20根据流处理机描述创建流处理机(图11,框202)。流处理机通常包括一个或更多个流处置指令中描述的混合功能。该混合功能用于将实时数据流与至少一个其他实时数据流混合以产生混合的实时数据流。实时内核20在包括通过所创建的流处理机处理实时数据流的过程中产生所得数据流(图11,框204)。在一些实施例中,该过程涉及从一个或更多个流处置指令中指定的实时状态信息中确定配置参数值、以及用该配置参数值动态地配置流处理机。图12示出由流处理机配置管理器208(其为实时内核20的组件)根据从区域服务26接收的流处置指令210创建的流处理机206的实施例。流处理机配置管理器208通常由一个或更多个构成服务和实时内核20的其他组件构成。流处理机配置管理器208从一组处理对象(也称为处理图元或PGE)构造流处理机206。每个处理对象是能够对数据流执行特定功能(例如,变换功能、分立功能、以及混合功能)的软件对象。流处理机配置管理器208实例化一个或更多个流处置指令中指定的处理对象并根据描述将实例化的处理对象组装成流处理机206的有向图组件212。在一些实施例中,流处置指令用相应的唯一标识符来指定处理对象且流处理机配置管理器208通过向处理对象API发起包括相应一些标识符的调用来实例化处理对象。流处理机206被配置成通过相应处理链216-218处理特定数据类型(例如,音频、视频、以及运动数据类型)的多个数据流214,这些处理链由相应一些处理对象构成。流处理机206另外包括混合对象220(其在一个或更多个流处置指令中指定)。在操作中,流处理机206执行混合对象220以从经处理实时数据流216-218的组合产生混合实时数据流222。在一些实施例中,至少一个实例化的处理对象将相应的调用封装到驱动程序模块224,该驱动程序模块至少部分地基于所得数据流222控制本地网络节点的硬件组件。g.实时任务调度图13示出由实时内核20在调度由实时内核20执行的任务的过程中实现的方法的实施例。根据图13的方法,实时内核20建立与至少一个远程网络节点的至少一个实时数据流连接(图13,框230)。实时内核20处理源自远程网络节点的至少一个实时数据流(图13,框232)。在此过程中,实时内核10通过一个或更多个实时数据处理操作处理该至少一个实时数据流以产生所得数据流。实时内核20监视该至少一个实时数据流的处理(图13,框234)。在一些实施例中,实时内核10监视一个或更多个以下参数:所得数据产生的速率、本地网络节点的至少一个处理器的利用、以及本地网络节点的至少一个连网资源的带宽利用。在一些实施例中,实时数据流被分组成帧且实时内核20在根据本地时钟设定的每一相继固定长度间隔期间监视每一帧的处理,该本地时钟通常与远程主时钟服务同步。基于该监视,实时内核20确定实时数据流的处理是否偏离性能目标。在一些实施例中,性能目标包括对产生所得数据流的基于时间的阈值。例如,在一些实施例中,性能目标是对产生所得数据流的帧的速率的谓项(即,条件)。该类型的示例性的性能目标包括目标阈值和目标范围。响应于确定该至少一个实时数据流的处理偏离性能目标,实时内核20根据实时性能目标例程修改该处理(图13,框236)。图14示出由实时内核20基于对至少一个实时数据流的处理的监视而执行的方法的实施例。响应于确定对该至少一个实时数据流的处理没有满足性能目标(图14,框238),实时内核20将计算资源负载减少至较低水平(图14,框240)。取决于实时性能目标例程的设计,实时内核20通常以下列方式中的一种或更多种来减少计算资源:实时内核20可忽略实时数据流的一个或更多个部分的处理(图14,框242);实时内核20可忽略一个或更多个实时数据处理操作(图14,框244);以及实时内核20可用不同的相应数据处理操作替代至少一个实时数据处理操作(图14,框246)。在忽略实时数据流的一个或更多个部分的处理的过程中(图14,框242),实时内核20通常执行以下操作中的至少一个:忽略一个或更多个由性能目标之外的相应性能值表征的数据处理操作;以及基于分别指派给各个数据处理操作的优先级值优先忽略一个或更多个数据处理操作。如果该至少一个实时数据流的处理满足性能目标(图14,框238)且计算负载已经通过以上描述的任一种方法被减少至较低水平(图14,框248),则实时内核20从该较低水平增加计算负载(图14,框250)。实时内核20通常根据启发通过反转一个或更多个用于在框240减少计算资源负载的操作来增加计算资源。如果该至少一个实时数据流的处理满足性能目标(图14,框238)且计算负载并未通过以上描述的任一种方法被减少至较低水平(图14,框248),则实时内核20维持对实时数据流的当前处理。在一些实施例中,实时内核20实例化对至少一个实时数据流执行相应一些数据处理操作的处理对象。实时内核20从一些被实例化的处理对象建立有向图并通过该有向图处理该至少一个实时数据流。取决于实时性能目标例程,实时内核20可通过从有向图中删除一个或更多个被实例化的处理对象而修改实时数据流的处理。在一些实施例中,处理对象被指派相应的优先级值,且实时内核20通过基于被指派的优先级值从有向图中移除一些被实例化的处理对象来删除处理对象。例如,在这些实施例中的一些中,该删除包括从有向图中移除一些被实例化的处理对象,这些被实例化的处理对象被指派的相应优先级值不满足优先级阈值。在一些实施例中,实时内核20从一些被实例化的处理对象建立第二有向图,第二有向图被用于处理源自本地网络节点和至少一个远程网络节点之一的第二实时数据流。在这些实施例的一些中,第一和第二有向图被指派相应的优先级值,且实时内核通过基于被指派的优先级值优先修改第一和第二有向图之一来修改第一和第二实时数据流的处理。例如,实时内核可卸下第一和第二有向图中被指派最低优先级值的那一个。在一些实施例中,实时内核20通过有向图处理第二实时数据流,其中第二实时数据流源自本地网络节点和至少一个远程网络节点之一。在这些实施例的一些中,第一和第二实时数据流被指派相应的优先级值,且实时内核20基于被指派的优先级值优先修改对第一和第二实时数据流之一的处理。在一些实施例中,实时内核20建立本地网络节点和多个远程网络节点之间的相应实时数据流连接。实时内核20通过有向图处理源自相应一些远程网络节点的实时数据流。在这些实施例的一些中,实时数据流被指派相应的优先级值,且实时内核20基于被指派的优先级值优先修改对一个或更多个实时数据流的处理。有向图通常包括相应一些被实例化的处理对象的多个有向链。实时内核20通常通过每个有向链处理相应的一个实时数据流。在这些实施例的一些中,实时内核20迭代地修改实时数据流的处理直至处理落在指定的性能目标之内。在每次迭代期间,该修改通常包括执行以下一者或更多:(i)从有向图中移除一个或更多个链以及(ii)从有向图中删除一个或更多个被实例化的处理对象。V.示例性实时内核实施例A.引言图15示出实时内核20的实施例260。实时内核260支持2D/3D图形呈现引擎、音频混合及开关引擎在不同网络节点上的远程配置和执行以创建两个或更多个通信者之间的物理存在性的感觉。在管理在同一时间在单个虚拟区域实例中交互的所有通信者的过程中,区域服务26经由实时内核260的分组传输组件(本文称为STRAW服务268)远程配置实时内核260和其他网络节点之间的会话。在一些实施例中,实时内核260点对点(P2P)配置数据流(例如,实时音频数据流)以便最小化与区域服务26的通信。区域服务26也可混合数据流并在必要时将其输送至客户端网络节点。实时内核260将向区域服务26报告P2P连接故障以便区域服务26可确定何时为客户端网络节点混合数据流。实时内核260具有小初始覆盖区域,并在网络连接上加载更新和增加功能性作为插件。实时内核260包括一组管理器和服务。实时内核管理器有连接和服务混合管理器262、区域/地带管理器264、以及插件管理器266。实时内核服务有STRAW服务268、SODA处理机服务270、媒体服务271、音频流服务272、So3D接口服务274、资产缓存服务275、一个或更多个社交服务器277,记录、回放及传输总线服务276、实时调度器服务278、时间服务280、SIP服务282、本地HID/RDS驱动程序处理机服务284,以及用于包括本地音频回放286、本地扬声器288、本地话筒290和音频的本地音频设备的接口服务。在一个示例性实施例中,实时内核260由以下运行时封装组件实现:库:其他插件:加密算法压缩算法认证算法:凭证音频混合音频源音频编解码器音频计算图形效果物理延伸脚本延伸输入设备主存B.实时内核设计如图15所示,实时内核260被设计为服务、插件和实时调度器的集合,其构成用于根据从区域服务26接收的指令呈现虚拟区域通信环境的平台。各服务协作以通过音频和图形呈现配置根据网络特性实现工作在不同级别的该平台。插件是不同种类的,每个种类附着于插件管理API且每个种类具有其自己的种类API。实时调度器278确保音频和图形呈现以均匀帧速率发生。根据虚拟区域的实例由区域服务26通过在STRAWUDP套接字(参见VI部分,其包含关于SODA记录的示例性集合的SODA定义)上传送的SODA定义记录来配置该平台。STRAW服务268使用公布/订阅模型来多路分解SODA记录流。SODA记录仅在订户存在于STRAW套接字的另一端时才被传送。收到的SODA记录在抵达时被传递给一个或更多个订户。服务支持供So3D图形引擎和HUD84使用的本地API。以下小节描述了实时内核260及其组件的实施例的安装、设计以及操作。1.安装a.概览在一些实施例中,基于虚拟区域的呈现平台经由因特网作为软件包被下载为安装包。其被HTTP下载从下载服务器传递。在操作操作系统的客户端网络节点上,平台软件包是.msi包。初始安装是在更新变为可用时在下载服务器上被修改的单个包。当新的客户端网络节点执行当前安装时,不需要其他更新直至创建作为后续更新的此种时间。实时内核260利用插件来定制应用。必要的插件包括在安装包内。组件可不时地被独立更新(例如,实时内核服务可以是修正发布的且可以增加插件)。在这种情况下,可为修正发布创建分离的.msi安装包并向更新服务器登记。安装的平台软件将被通知该更新,并将为通信者提供升级选项。一些通信者可延迟升级直至一个以上更新可用。当通信者最终同意升级时,所有可用的更新将被加载并被顺序应用。插件的多个版本可在同一时间在客户端网络节点上呈现。这是因为客户端网络节点通常商定特征,并选择适合API和版本要求的插件。每个插件广告其API和变量。这些插件将具有不同的文件名以避免文件系统中的名称冲突。具有相同API和不同变量的两个插件是不同的实现,且由请求该插件的服务作出选择(或许例如通过与服务器商定)。当加载与现有插件具有相同API和变量的插件时,这是隐错修正。新的插件替代旧的插件。服务始终由升级替代。从来没有具有相同API的两个服务。安装使用清单和捆绑的相关的DLL以保证无论环境的更新状态如何皆起效的产品。并排(side-by-side)特征被用于避免与其他产品安装要求相冲突。b.更新服务器更新服务器包含针对每个支持的主存操作环境的安装包,以及针对之前支持的每个安装包的升级包。客户端网络节点和更新服务器在可靠的STRAW信道上通信。更新服务器公布针对每个支持的主存操作环境的可用升级定义。安装在客户端网络节点上的基于虚拟区域的呈现平台软件随后可订阅升级。更新服务器开始发送合需的软件块。在一些实施例中,客户端版本和升级工具被安装在每个客户端网络节点上以允许用户察看当前客户端软件版本、列出可用的升级以及启动并监视升级过程。客户端网络节点将保留已被应用的升级包的GUID的表。该表将向更新服务器呈现该列表,且作为回报,得到以应用顺序排列的按照GUID的待决升级的列表。它们将具有所附的描述、大小和日期属性。升级仅在下载完成且自动安装报告成功时被标记为“已应用”。自动安装过程包括停止任何运行的SORK服务以便DLL可被重写。通过一系列SODA记录完成下载一升级,因此该过程可被打断并恢复而无需重复任何数据传递。记录包括升级GUID和偏移。因为对回退或重新安装不存在要求,因此无需任何“并排”库清单。任何要求的库均可作为升级的一部分被加载。升级工具将产生注册表项或保留一文件,该文件包含被应用的升级的GUID、任何当前加载升级的GUID、其偏移以及对磁盘上包含“迄今为止”的数据的文件的引用。一旦被应用,升级包就被删除。如果期望为多个客户端网络节点缓存升级包,则在将进行该缓存的同一客户端代理处指向它们的每一个。c.更新本地数据库客户端网络节点在本地文件系统中的资产目录中存储基于虚拟区域的呈现平台服务和插件。这些服务和插件是通过API和所附资源自描述的。不保留关于客户端网络节点软件状态的其他信息。当客户端网络节点重新安装基于虚拟区域的呈现平台软件时,或许在OS(操作系统)升级后,现有插件通常被重新验证。新的安装包括所有基础服务和插件,但或许在机器上存在可选插件或应用专用插件,此可选插件或应用专用插件通常被删除或被重验证。在一些实施例中,有效插件的二进制内容被散列并被单向加密,且结果值被存储为用于检查该插件是否可信的所附资源。为了验证可疑插件,当前插件内容被重新散列和加密,且将结果值与现有资源比较。如果该内容与资源不匹配,则该插件是无效的。d.客户端认证网络认证通常在每次实时内核260一启动时就进行。在一些实施例中,运行帐户网络基础结构服务的帐户服务器被用于认证通信者并为该通信者建立真实用户标识符(RUID)。帐户服务器创建令牌(随后被包括为RUID的一部分)并将该令牌给予客户端网络节点以向其他服务器认证自己。在此过程中,客户端网络节点在安装时被安全地发出一凭证。该凭证通常是由证书权威机构签发的CA定义的凭证。该证书包含私钥和公钥。基于虚拟区域的呈现平台安装包创建仅包含公钥的新凭证。私钥被安全存储在客户端网络节点上。基于虚拟区域的呈现平台安装包使用私钥创建签名以加密通信者提供的口令的摘要,并将签名安全传送给帐户服务器。帐户服务器恢复摘要并将其存储为客户端标识秘密。当建立连接时,实时内核260与帐户服务器共享凭证。帐户服务器用其凭证(例如,服务器侧的证书)作出响应。客户端网络节点和帐户服务器使用注册权威机构验证该凭证。一旦得到验证,服务器侧的凭证对任何地点的任何服务器都是有效的。在一些实施例中,帐户服务器还向客户端网络节点提供随机的128位的质询短语。客户端网络节点用通信者提供的口令的加密摘要散列该质询短语并将其返回作为响应。帐户服务器还用先前获得的该通信者的摘要散列质询短语并验证来自客户端网络节点的响应是匹配的。网络连接现在被认证且通信者被标识为私钥的拥有者。在一些实施例中,帐户服务器向通信者指派具有所附签名的随机客户端ID。该签名是使用该帐户服务器私钥加密的客户端ID的128位散列。该签名仅可由该帐户服务器创建。接收令牌的任何人可通过使用由帐户服务器公布的公钥解密摘要并将该摘要与客户端ID比较来验证通信者。e.帐户服务器认证图16示出了通过帐户服务器的凭证来认证帐户服务器296的方法的实施例。根据该方法,客户端网络节点294和帐户服务器296交换凭证(图16,框298、300)。客户端网络节点294向帐户服务器296发出服务器ID和服务器令牌用于后来向客户端网络节点294快速验证帐户服务器296(图16,框302)。帐户服务器296随后向客户端网络节点294发出客户端ID和所附的标识令牌(图16,框304)。使用参与者的公钥来加密在至帐户服务器的流上的认证短语。2.初始化序列图17示出由实时内核260的加载器组件在每次启动客户端网络节点上的操作系统时实现的方法的实施例。在此过程中,加载器解析包括一个或更多个内核服务组件的静态内核组件列表(图17,框320)。加载器确定所解析列表中的在本地储存库(例如,本地文件系统中的目录)中缺少的所有内核组件(图17,框322)。加载器检索被确定为缺少的每个内核组件(图17,框324)。在一些实施例中,加载器在客户端网络节点上实例化从远程网络节点(例如,下载服务器或更新服务器)检索缺少的内核组件的更新服务。在已经检索到缺少的内核组件后,加载器从相应一些内核服务组件实例化内核服务(图17,框326)。被实例化的内核服务被执行以在关于虚拟区域定义的通信环境中与一个或更多个远程网络节点通信(图17,框328)。例如,在一些实施例中,HUD84调用内核服务以与区域服务器通信以便建立如本文详细描述的HUD会话或区域会话。在一些实施例中,实时内核260的以下服务在引导时间被加载为服务DLL:·STRAW服务268·SODA服务270·媒体服务271·音频流服务272·连接和服务器混合管理器262·区域/地带管理器264·资产缓存服务275·实时调度器服务278·HUD84·默认插件在这些实施例中,服务通过名称而非通过GUID被加载。一次在客户端网络节点上仅呈现每个服务的一个副本。加载后,SODA信道服务270、媒体服务271、音频流服务272、区域/地带管理器、以及实时调度器服务等待空闲。连接和服务器混合管理器使音频不被配置并等待至区域服务器的连接的定义。默认插件通过GUID登记为API类对象。当由GUID在定义中引用时默认插件被加载。HUD84联络帐户服务器、认证并标识通信者。HUD84创建去往集合网络基础结构服务和交互网络基础结构服务的流并填充其最近使用的(MRU)朋友和区域列表及其频繁朋友和区域列表。资产缓存服务275通常根据启发来联络样式数据库服务器并开始缓存数字资源以及更新其GUID映射。3.会话实时内核260管理客户端网络节点和其他网络节点之间的会话。在会话期间,数据在服务器和客户端网络节点之间作为STRAW套接字上的SODA定义记录被共享。数据在公布/订阅模型中共享。实时内核260仅订阅客户端网络节点所需的数据。为了订阅,实时内核260创建与合需服务器的STRAW信道。STRAW信道通过公知的针对特定虚拟区域的GUID商定。在一些实施例中,STRAW套接字使用通过所配置的DNS提供的地址来连接。区域服务将发送公布消息,该消息指示通信者可用的数据流并用GUID句柄标签化每个数据流。实时内核260随后发送针对合需数据流的订阅消息。任何针对订阅信道的区域服务数据的变化作为SODA定义记录被发送给已经订阅那些信道的所有客户端网络节点。存在两种主要类型的会话:(a)HUD会话,其涉及在HUD84中显示当前关系和存在性信息;以及(b)区域会话,其涉及潜伏或进入虚拟区域实例。a.HUD会话在HUD会话中,HUD84联络帐户服务器、RUID服务器、以及集合服务器,并通过STRAW信道订阅通信者自身的帐户和关系信息。HUD84随后订阅针对密切相关的联系人和虚拟区域的存在性信息。在该点,HUD84可显示针对密切相关的联系人的动态存在性信息。b.区域会话在区域会话中,HUD84订阅关于相关虚拟区域的信息。在一些实施例中,咨询目录服务器以确定主存由HUD指定的虚拟区域的当前区域服务器。创建去往当前区域服务器的STRAW流。HUD订阅与虚拟区域相关联的存在性数据并用当前参与该虚拟区域的其他通信者的名称更新其2D抬头显示器。在该点,通信者“潜伏”在虚拟区域中。通信者的存在可被显示在弹出列表中,且图标被显示在HUD区域表示中(例如,在图5A-5C示出的办公场所中)。如果通信者指导HUD84进入虚拟区域,随后实时内核向集合服务通知通信者请求进入虚拟区域。订阅与虚拟区域相关联的存在性信息的其他通信者被通知已进入该虚拟区域的新通信者。实时内核260引导So3D引擎启动交互环境。So3D引擎订阅区域服务器环境数据(例如,呈现和运动数据)。区域服务器开始向实时内核260流送所请求的区域服务器环境数据。实时内核将所请求数据传递给So3D引擎,该引擎根据当前可视化模式(例如,2D俯视图、低分辨率视图、或全沉浸性3D视图)呈现数据。区域服务器定义与虚拟区域中的对象相关联的客户端网络节点之间的原始话筒音频媒体流。区域服务器还根据虚拟区域描述中的音频处置指令(例如,空间效果定义和地带定义)创建音频混合元件的定义。连接和服务器混合管理器262侦听音频定义并创建针对每个定义的媒体流,其中该定义包括针对每个P2P音频流的GUID句柄。向本地传输总线276登记每个媒体流并用音频流服务272创建适当的音频混合组件。区域/地带管理器264还订阅针对音频和针对化身运动和定向数据的SODA定义。当通信者的化身在该虚拟区域中导航时,区域/地带264控制每个音频流的增益/静音。在一些实施例中,区域/地带管理器264另外订阅关系数据,区域/地带管理器264使用该关系数据经由社交处理器277来控制化身在虚拟区域中的定向/移动/姿势(参见图15)。在此过程中,区域/地带管理器264基于化身在虚拟区域中的位置和关系数据库设定社交处理器277的参数值。这样,当通信者讲话时,可通过改变化身头部的位置和定向来指示关系(例如,当化身进入虚拟区域的地带时将其转向成面对另一化身,或者当进入虚拟区域的媒体地带时将化身定向为获得观看屏上的最佳视图)。在一些实施例中,社交处理器277被第三方开发者定义并经由插件被传递给客户端网络节点。每个社交处理器277是在特定事件发生(例如,由靠近其他化身、或区域中的位置、或二者触发的自动运动)时被自动执行的指令集。社交处理器277可为控制化身或对象在虚拟区域中的运动的任何任意程序性例程。例如,在一些实施例中,如果化身靠近观看屏,一种类型的社交处理器自动迅速将化身移到虚拟区域描述中定义的网络并将该化身在观看屏的前面居中以便用户可容易地看到观看屏的内容。这样,对于移动化身的复杂操纵的需要便消除了。另一种类型的社交处理器277自动旋转和转动化身以确认另一用户的存在性。例如,此类型的社交处理器的实施例被配置为自动将虚拟区域中的化身从彼此面对重定向为其中化身响应于新的通信者进入虚拟区域而面对新的通信者的相应取向。在这种情形中,与原来在虚拟区域中的化身相关联的通信者不必手动操纵其化身;相反,社交处理器自动旋转其头部以确认存在新的通信者。4.管理会话图18示出了由STRAW服务268实现的会话管理方法的实施例。根据图18的方法,在本地网络节点,STRAW服务268根据无连接传输协议(例如UDP)在传输流上建立与远程网络节点的第一会话(例如,图18,框362)。STRAW服务268创建该会话的定义,其中该定义包括网际协议(IP)地址、端口地址、以及传输协议的全局唯一标识符。STRAW服务268向远程网络节点发送该定义。STRAW服务268确定指派给远程网络节点的第一站定义,并将第一站定义存储在表中作为每个打开信道的属性。在此过程中,STRAW服务268解析从远程网络节点接收的站定义记录。站定义记录包括一组字段,其中每个字段被相应字段类型以及相关联的字段值所定义,且每个字段类型被相应的全局唯一标识符(GUID)标识。代表本地网络节点上的一个或更多个软件实体,STRAW服务268自动打开在第一会话中在本地网络节点和远程网络节点之间传送数据的一个或更多个信道(图18,框364)。在此过程中,STRAW服务268向远程网络节点发送定义本地公布信道的记录和具有与远程公布信道之一的标识符匹配的标识符的每一个本地订阅信道的记录。在第一会话中,STRAW服务268维护标识打开的一些信道的表并将相应的属性值与所标识的信道相关联(图18,框366)。STRAW服务268记录从本地网络节点可用的本地公布信道、一个或更多个软件实体请求的本地订阅信道、从远程网络节点可用的远程公布信道、以及远程网络节点请求的远程订阅信道的属性。在此过程中,STRAW服务268为每个本地公布信道维护一记录,该记录包括指示在本地公布信道上公布数据的能力的软件实体之一的标识符、订阅本地公布信道的远程网络节点的标识符、以及本地公布信道的标识符。STRAW服务268为每个本地订阅信道维护一记录,该记录包括订阅本地订阅信道的软件实体之一的标识符、指示在本地订阅信道上公布数据的能力的远程网络节点的标识符、本地订阅信道的标识符、以及一个或更多个与本地订阅信道相关联的网络传输参数。STRAW服务268为每个远程公布信道维护一记录,该记录包括指示在远程公布信道上公布数据的能力的远程网络节点的标识符、以及远程公布信道的标识符。STRAW服务268在会话中在一个或更多个打开的信道上在本地网络节点和远程网络节点之间传送数据。在一些实施例中,以每一记录包括一组字段的形式传送数据。记录的每个字段由相应的字段类型以及相关联的字段值所定义,且每个字段类型被相应的GUID标识。一些记录是包含媒体数据的媒体记录,该媒体数据包括可呈现数据的分组。其他记录是包含配置数据的配置记录,该配置数据包括配置设置的定义。媒体记录和配置记录通常被封装在传输流上的传输记录中。媒体记录通常使用第一数据压缩服务来压缩,而配置记录通常使用第二数据压缩服务来压缩。在传输时,STRAW服务268将传输记录与传送传输记录的相应一些信道的标识符相关联,加密该传输记录,以及按顺序排列加密的传输记录。在接收时,STRAW服务268解密传输记录并将包含在解密的传输记录中的媒体记录和配置记录分派给订阅的一些软件实体。响应于确定第一会话失败,STRAW服务268根据无连接传输协议自动尝试在第二传输流上建立与远程网络节点的第二会话(图18,框368)。在一些实施例中,STRAW服务268响应于确定指派给远程网络节点的当前站定义不同于建立第一会话时指派给远程网络节点的第一站定义而确定第一会话失败。响应于成功建立第二会话,STRAW服务268自动打开该表中标识的每个信道(图18,框370)。5.处理数据流实时内核260支持用于处理由客户端网络节点从其他网络节点接收的数据流的流处理机的远程配置。响应于从区域服务26接收的指令,实时内核260的各种服务和其他组件协同将处理元件的有向图构造和配置成用于处理数据流的流处理机。区域服务指令根据由区域服务26管理的虚拟区域所主存的虚拟区域应用来配置流处理机。图19示出由实时内核260的组件响应于从区域服务26接收的远程流处置指令实现的方法的实施例。根据图19的方法,实时内核260从一个或更多个流处置指令解析实时流处理机的描述(图19,框330)。在此过程中,STRAW服务268从区域服务26接收用于配置流处理机的SODA定义。STRAW服务268将SODA定义分派至连接和服务器混合管理器262以及区域/地带管理器264。连接和服务器混合管理器262从一个或更多个流处置指令解析输入源标识符、输出阱标识符、以及一个或更多个数据处理对象的每一者的相应标识符。连接和服务器混合管理器262实例化对应于这些标识符中相应一些标识符的实时流处置对象(图19,框332)。连接和服务器混合管理器262向传输总线276登记实例化的对象。传输总线276根据描述创建包括一些被实例化的实时流处置对象的有向图(图19,框334)。区域/地带管理器264将音频计算SODA定义传递至有向图内指定的音频计算对象。STRAW服务268从对应于输入源标识符的输入源接收实时数据流(图19,框336)。STRAW服务268将该实时数据流传递至媒体服务271,该媒体服务处理该流并将其传递至传输总线276。传输总线276顺序执行流处理机的处理图元以执行对实时数据流的指定处理。流处理机在对应于输出阱标识符的输出阱产生所得数据流(图19,框338)。所得数据流随后被传递给客户端网络节点的呈现组件。6.实时内核的服务和其他组件实时内核260的组件包括服务、插件、以及库。a.压缩器库压缩器库实现针对传输数据的可任选压缩层。并非旨在压缩协议头部或链路商定交换。压缩器库被SODA信道服务270和被媒体服务271使用。当配置加密时,这些服务270、271创建两个压缩器实例并以管道输送信道数据。一个压缩器实例被用于传送而另一个压缩器实例被用于接收。压缩器库使用由变量配置的压缩/解压缩插件。由服务商定压缩变量,并将其提供给压缩器。b.音频流服务在一些实施例中,音频流服务272是服务DLL。音频流服务272管理音频流混合。它定义用于创建和配置音频处理图元(也称为音频组件对象)的API,该音频处理图元由区域/地带管理器264操纵。音频流服务272是传输总线276的客户端。向传输总线276登记所有音频处理图元。音频处理图元经由以下API调用通过插件管理器266(PlugInMgr)来创建:插件管理器::API枚举(gui插件Api)插件管理器::变量枚举(guid标识符,guid插件Api)插件管理器::创建实例(guid标识符,guid插件Api,guid变量)插件管理器的调用::创建实例()API产生guid插件,其表示API的合需变量的实例。用于音频处理图元的插件API为:音频混合音频源音频插入音频发送调用程序提供变量,该变量仅由音频流服务272传递。变量表示音频处理图元的实现,如虚拟区域应用中所定义的。音频流服务272随后创建封装插件实例(guid插件)的音频组件对象。该音频组件使用插件管理器266来访问插件的方法。音频流服务272为每个音频API创建正确类型的导出音频组件:音频混合音频源音频插入音频发送向传输总线276登记音频组件对象。传输总线API被用于将组件链接成图。音频组件API支持传输总线276和区域/地带管理器264的操作。基类音频组件具有音频源和音频阱的API,两者都是相同插件的方面。c.STRAW服务(i)概览在一些实施例中,STRAW服务268是服务DLL。STRAW服务268实现STRAW传输协议,该协议实现网络节点之间通过无连接传输协议(例如,UDP)的面向连接的加密安全套接字连接。STRAW传输协议使用固定长度的全局唯一标识符(GUID)来识别所有记录和记录中的所有字段类型。例如,在一些实施例中,网络节点(或站)由IP_地址和端口定义。在这些实施例中,STRAW站标识记录定义具有以下GUID集的特定网络节点:{GUID1,GUID2,GUID3,GUID4,GUID5,GUID6},其中·GUID1将STRAW记录标识为SODA记录;·GUID2将STRAW记录标识为网络节点标识记录;·GUID3是IP地址字段标记;·GUID4是网络节点的IP地址;·GUID5是端口号字段标记;以及·GUID6是网络节点的端口号在这些实施例中,站标识符记录包含可易于被压缩为较小尺寸的二进制数据。在一些实施例中,一个或更多个STRAW记录的尺寸可通过省略字段标记被进一步减小。在这些实施例中,STRAW记录的发射机和接收机知晓该STRAW记录的格式以便字段值的语义是已知的而无需参考任何字段标记。参考图20,STRAW服务268管理传输流342上的会话340。在一些实施例中,STRAW会话的上下文中的流由一对(IP,端口)地址和传输GUID定义。会话包括零或更多个逻辑信道,其中信道是一系列适于特定内核管理器(例如,So3D图形引擎274、连接和服务器混合管理器262、以及区域/地带管理器264)的记录。超过一个内核管理器可从同一流接收记录,这些记录由信道区分。STRAW服务268管理两种类型的信道:包含流送数据(例如,音频)的媒体信道;以及包含SODA定义记录(或指令)的SODA信道。STRAW记录在流上封装SODA记录和媒体记录。STRAW记录被加密、序列化,且包括消息完整性字段。该序列独立于记录源或目的,其是用于检测无序或丢失记录的链路级特征。STRAW记录由信道标识。GUID被用作信道标识符。SODA和媒体记录可在信道级被压缩为无关于STRAW记录封装的流。每个SODA记录包含一个或更多个SODA定义344。SODA定义的示例包括处理图元(例如,音频混合和音频效果)、3D呈现资产(例如,纹理和网格)、以及RDS(例如,化身运动检查点)。每个媒体记录包含一个媒体分组346。媒体分组的示例包括音频编解码器和文本。应用在会话上使用公知的GUIDID公布信道。内核管理器订阅信道。公布/订阅模型是无连接的。订阅信道的内核管理器进行登记以在信道状态变化和信道记录到达时接收对它们的通知。(ii)流-会话-信道-记录在STRAW会话的上下文中,流是由两个IP地址/端口对和传输GUID定义的两个网络节点之间的双向UDP套接字。流支持信道的会话。会话是逻辑的节点对节点连接。会话为两个节点传输信道。会话可穿过一个或更多个代理站并通过可包含多个会话的流来传输。信道是在会话中在两个网络节点间传递SODA或媒体记录的逻辑结构。信道可以是可靠的或不可靠的,压缩的或非压缩的。信道的内容由内容GUID标识。信道记录在共享同一头部信道_客户端ID并具有顺序分组号和MAC字段的一系列STRAW记录中传输。MAC计算取决于仅在一个方向上的给定信道上的分组序列。单个信道上传送的所有记录共享单个配置参数集(例如,{客户端,可靠的,压缩的})。单个信道上的记录被压缩为串行流。通常仅可靠信道可被压缩。在一些实施例中,不可靠信道可用其中在每个关键帧上重启压缩的压缩过程来进行压缩。在不可靠信道上丢失分组的情况下,在该信道上的记录被丢弃直至到达关键帧(因为它们不能被无序解压缩)。压缩使用压缩.库(compress.lib)。为了改善压缩,信道定义可包括预加载数据,该预加载数据可贯穿压缩器但并不被传送。目的是用共用短语填装压缩状态表。压缩状态表在每次收到关键帧时被重设和重建。(iii)SODA记录SODA记录是具有初始GUIDID及一个或更多个SODA定义的嵌套结构。SODA定义具有定义类型、定义长度以及一个或更多个字段。定义类型是公知的GUID(例如,guid资产)。长度指示字段的总尺寸。字段是因类型而异的固定字段和嵌套的SODA定义的组合。即,SODA记录:guidIDSODA定义…SODA定义:Guid定义类型长的长度[字段]-取决于定义类型字段:固定字段或者SODA定义例如,SODA记录被封装在STRAW记录中:(iv)信道可靠性和链路级协议STRAW记录被编号且包含信道ID。在接收分组和短时间延迟后,传输发送包含针对每一信道的下一期望分组号的ACK记录,以便发送方可确认所传送的记录被接收到并可释放本地资源。除周期性传输外,没有针对该ACK的可靠性特征。该方案使用最少的网络资源实现可靠性,假定几乎所有记录都被成功接收。MAC字段针对每个被传送的STRAW记录被计算。它在接收时被检查。对于可靠信道:如果信道中的记录被无序接收,则为丢失的记录传送NACK。MAC失败也导致为期望的记录传送NACK。单个记录最高允许四个NACK,且随后该传输将失败消息排队至任何订阅内核管理器并擦除信道定义。对于不可靠信道:如果信道中的记录被无序接收,则丢失的分组号被发信号至订阅该信道的任何管理器且不发送NACK。MAC失败也作为丢失分组指示给订阅该信道的任何内核管理器且不发送NACK。不存在针对丢失分组的阈值,且该信道从不被该传输关闭。不需要“关闭”信道。如果所有内核管理器没有订阅,则信道上的数据传输停止。既然信道是逻辑实体,那么未使用操作系统资源。(v)公布/订阅STRAW服务268维护本地公布和订阅项的列表。每个项包含:创建该项的本地管理器服务器标识符信道标识符公布或订阅传输参数(用于订阅)用以下初始化列表{STRAW服务,GUID_空,会话,订阅,可靠,未压缩}这样,STRAW服务268订阅在任何会话信道上到达的所有到达SODA记录。这些记录包括公布和订阅定义。GUID_空信道从不被公布并由每一服务器假定在每一流上用公知信道ID来订阅。STRAW服务268还维护所有到达公布定义的表,用于后来在本地列表中登记订阅的情况所用。{ID客户端,ID服务器,ID信道}在ID客户端为信道旨在的特定客户端的(可能为空的)GUID的情况下,ID服务器是信道记录的远程源而ID信道是信道的公知GUID。当STRAW服务268接收针对至另一站的合需连接的会话定义时,STRAW服务268建立流,发送会话定义,并在会话信道上发送SODA记录中的所有本地表公布项。当公布定义到达STRAW服务268时,STRAW服务268将该定义输入公布定义表,并随后发送针对本地列表中在公布记录中具有匹配信道ID的每个订阅项的会话信道的订阅定义。当订阅定义到达时,STRAW服务268开始在给定信道上发送定义更新(从公布应用管道传送)作为包含对该定义的SODA记录的STRAW记录。这些记录可在多于一个信道上被发送。当内核管理器想要参与与服务器的信道时,该内核管理器定义订阅请求,无论是否存在去往任何服务器的任何STRAW流。如果虚拟区域应用后来公布(即,在建立流之后),则本地表中的变化触发表格中公布项的重新发送,这自动触发任何在链路的另一端的潜在订阅。如果内核管理器后来订阅且公布表中存在项,则STRAW服务268自动发送订阅请求。该过程确保仅在接收机需要信道数据时才在链路上发送。(vi)信道记录分派STRAW记录在其到达时被解密。如果是有效的,则其嵌入记录被解压缩并随后被分派给所有订阅内核管理器。检查本地订阅项的列表,且匹配信道ID(在订阅传输信息中)的所有项在其消息队列中接收该记录的副本。订阅内核管理器负责在消息被处理时释放消息。消息的大块数据部分不被复制,但指向包含STRAW记录的原网络缓冲器。每个内核管理器释放消息,以便当消息都被释放时,网络缓冲器可被重复利用。(vii)建立STRAW流客户端网络节点在流上连接与服务器和对等网络节点的会话。在此过程中,每一方向其他方认证自己。STRAW流是可信和安全的。这意味着:·客户端网络节点对伙伴的身份是确定的;·消息是私有的;·收到消息可证明曾被发送的消息(未在中间某处被修改);以及·消息将由双方以相同方式解释。会话定义的一部分是流传输插件GUID的列表。如果响应于该定义的客户端网络节点支持这些GUID中的至少一个,则其加载插件并使用该插件来建立会话。创建该定义的服务器可检查每个所涉及的客户端网络节点的支持列表并决定将哪个传输插件GUID包括在该定义中。会话定义的一部分是流加密插件GUID的列表。如果响应于该定义的客户端网络节点支持这些GUID中的至少一个,则其加载插件并使用该插件来加密会话。创建该定义的服务器可检查每个所涉及的客户端网络节点的支持列表并决定将哪个流加密插件GUID包括在该定义中。(viii)服务器流在一些实施例中,从客户端网络节点344到服务器346的流使用从服务器(诸如,目录服务器、映射服务器、或区域服务器)获得的地址来建立。该流的示例性目的包括获得存在性信息,使用来自映射服务器的呈现定义呈现公共空间,以及使用来自区域服务器的呈现定义呈现虚拟区域。图21示出在客户端网络节点344和服务器346之间建立服务器流的方法的实施例。根据该方法,客户端网络节点344向服务器346发送客户端凭证和流ID(图21,框348)。服务器346用服务器凭证和预主秘密来回复(图21,框350)。一旦创建流,连接的客户端网络节点344商定密码集,并随后通过呈现其标识令牌来认证(图21,框352)。服务器346呈现适合于该客户端网络节点344的服务器令牌(由流ID选择并由帐户服务器传递至服务器346)(图21,框354)。(ix)客户端流参考图22,每个会话被由发起服务器生成的新GUID所标识。将会话定义通知流中涉及的网络节点,且每个网络节点使用会话GUID和客户端ID的散列作为流加密密钥与另一节点通信。在图22示出的示例性实施例中,区域服务器356定义两个客户端网络节点358、360之间的会话。客户端网络节点358、360的每一个向区域服务器认证,并使用加密信道来传递定义(包括会话定义)。客户端网络节点358、360不需要彼此共享任何进一步的认证信息。客户端网络节点358、360的每一个被服务器346用相应GUID来标识。每个会话定义用其GUID标识客户端网络节点358、360两者。客户端网络节点358、360可使用该信息决定在会话上公布哪一信道。如果针对客户端网络节点358、360之一的流或会话失败,该客户端网络节点使用会话失败SODA定义来通知区域服务器356该失败。失败的原因包括,例如,没有兼容的传输、没有可用信道、以及可靠信道故障等。在一些实施例中,区域服务器356通过尝试重新路由该流(例如,通过经代理或服务器反射音频流)来响应会话失败SODA定义。在一些实施例中,客户端网络节点358、360根据UDP对网络地址翻译器(NAT)的简单穿越(简称为STUN)网络协议来传递P2P。在这些实施例中,客户端358、360通过响应NAT来操作。服务器(例如区域服务器356)充当STUN服务器,该STUN服务器在NAT的公共侧在网络中的两个IP地址侦听并报告NAT外部的被映射IP地址和端口。从该信息中,客户端网络节点358、360能发现NAT的存在和特定类型,并获得NAT已经为该客户端至远程主机的UDP连接分配的被映射(外部)IP地址(NAT地址)和端口号。客户端网络节点358、360随后根据UDP协议使用该外部IP地址与另一P2P通信。有关STUN协议的其他细节可从JonathanRosenberg等人的“STUN-SimpleTraversalofUserDatagramProtocol(UDP)ThroughNetworkAddressTranslators(NATs)”(STUN-用户数据报协议(UDP)对网络地址翻译器(NAT)的简单穿越,因特网提议标准RFC3489(2003年3月))来获得。(x)保持有效在一些实施例中,一旦建立流,客户端网络节点上的传输发出周期性空闲流保持有效定义。伙伴网络节点返回具有设为估计为它能忍受的最大间隔的超时的流保持有效定义。该消息的目的是保持任何NAT防火墙孔为活动的。伙伴网络节点记录合需的超时并每次延长该间隔。如果下一消息来自不同的IP和端口,则NAT超时并由保持有效创建新的孔。然后应缩短该间隔。如果客户端网络节点或伙伴网络节点注意到流保持有效因空闲定时器过期且没有收到消息、或没有收到对保持有效消息的应答而丢失,则它发出具有极小超时的立即流保持有效。这是为了在丢失站和丢失UDP分组之间进行区分。可尝试若干重试。如果在重试之后未收到应答,则用失败会话ID生成本地流故障事件,并删除流定义。在一些实施例中,STRAW服务268通过在没有应用(或客户端)干预的情况下基于本地公布和订阅表项自动重新建立链路并重新链接所有订阅和数据流来响应打断的链路。f.媒体信道服务在一些实施例中,媒体信道服务271是服务DLL。媒体信道服务271被用于健壮地传递P2P音频和文本聊天。媒体信道服务271将压缩流,如果配置为如此做的话。压缩器库按要求完成压缩。媒体信道服务使用由变量配置的音频编解码器插件。变量GUID从流定义中取出。g.SODA信道服务在一些实施例中,SODA信道服务270是服务DLL。SODA信道服务270被用于健壮地传递SODA定义。SODA信道服务270将压缩流,如果配置为如此做的话。压缩器库按要求完成压缩。这是数据结构被转换为网络字节序的场所。在一些实施例中,使用小端(英特尔)网络字节序。h.连接和服务器混合管理器在一些实施例中,连接和服务器混合管理器262是服务DLL。在一些实施例中,连接和服务器混合管理器262输出本地会议调度工具可用的程序API以发起与区域服务器的会话。此API是用于创建会话的初始项。连接和服务器混合管理器262公布活动会话定义。区域服务器在SODA信道上接收会话定义。连接和服务器混合管理器262还从音频图处理元构造音频图。该音频图处理元由区域服务器26或直接通过SODA记录或间接通过VSDL脚本来配置。在任何情况下,SODA定义是结果。在一些实施例中,连接和服务器混合管理器262处理由区域服务26发送的以下SODA定义:·音频设备·音频流·音频混合·音频效果·音频计算·音频记录·音频回放这些SODA定义在以下段落中描述。音频设备是要向音频传输总线(其为传输总线276的组件)登记为音频源的本地音频设备的定义。提供标准本地音频源(话筒、耳机)或登记的本地音频记录(文件、流送CD音频)的公知ID、连同实例ID(如果有多个耳机可用的话,则其指明为哪个耳机)。该设备被给定新的ID以在音频传输总线上使用。连接和服务器混合管理器262使用公知音频源ID创建音频设备插件的适当变量的实例并将其移交给音频传输总线。音频流是将向音频传输总线登记为音频源的传入音频流的定义。传入音频流被传送该音频流的信道ID定义。出于动态混合的目的(由区域/地带管理器264进行),必须将流与化身ID相关联。该设备使用信道ID作为其音频传输总线ID。连接和服务器混合管理器262基于信道类型ID创建音频流插件的适当变量的实例并将其移交给音频传输总线。音频混合是组合音频源和音频阱插件的定义。该定义全面指定了插件APIID、变量ID、一个或两个音频传输总线源ID、以及相关联的化身ID(针对区域/地带管理器264)。连接和服务器混合管理器262基于提供的ID创建音频混合插件的所指示变量并将其移交给音频传输总线。音频效果是组合音频源和音频阱插件的定义。该定义全面指定了插件APIID、变量ID、一个音频传输总线源ID、以及相关联的化身ID(针对区域/地带管理器264)。连接和服务器混合管理器262基于提供的ID创建音频效果插件的所指示变量并将其移交给音频传输总线。音频计算是音频计算插件的定义。该定义全面指定了插件APIID、变量ID、相关联的音频传输总线源对象ID、该组件自己的音频传输总线ID、以及两个因情形而异的参数。音频计算对象不直接在音频链中处理音频数据。相反,音频计算对象基于“域对象模型”、诸如手动设定(HUD中的静音、音量控制)等外部信息、化身位置和运动、混响空间以及设置(例如,控制面板中的扬声器选择)来计算其他音频图组件的设定。基于不同的呈现定时器事件(通常比普通音频呈现更少)执行音频计算对象。这是因为它们用作计算输入的数据变化很慢。连接和服务器混合管理器262基于提供的ID创建音频计算插件的所指示变量并将其移交给音频传输总线。音频记录是音频阱插件的定义。该定义将音频图中的点链接至存储组件。在呈现时间,音频记录组件不自己触发呈现。但是若呈现由另一音频阱组件触发,则将呈现的音频数据提供给音频记录对象用于传递给所指示的存储组件。连接和服务器混合管理器262创建该音频阱插件并将其移交给音频传输总线。音频回放是音频源插件的定义。该定义将音频图中的点链接至存储组件。如果音频链参考该组件,则在帧准备时间从存储组件中取出一个时间片的音频数据并将其提供为该组件的输出。连接和服务器混合管理器262创建该音频源插件并将其移交给音频传输总线。连接和服务器混合管理器262根据从区域服务器接收的定义配置传输总线276和音频流服务272。每个定义导致创建音频处理图元,该音频处理图元是音频流插件、音频计算插件、或音频源插件。本地音频设备(例如,话筒、扬声器、和Skype音频)可根据通过HID配置工具选择的设置来配置。HID配置工具允许用户选择键盘和鼠标选项用于在3D协作空间中导航。例如,可定义快捷键,且鼠标姿势限制于化身行为。在一些实施例中,音频输出选择遵循控制面板中针对音频和语音的“声音和音频设备”设置。这确保用于虚拟区域通信的音频设置与用于常规VOIP会话的音频设置相同。如果区域服务器会话传输失败,则连接和服务器混合管理器262尝试恢复。它卸下该会话并在不同区域服务器上重新启动该会话。如果媒体流失败,则连接和服务器混合管理器262尝试恢复。在此过程中,连接和服务器混合管理器262尝试重新连接至客户端网络节点。如果重新连接尝试失败,则连接和服务器混合管理器262将通信者状态定义为对区域服务器不可听的。i.区域/地带管理器在一些实施例中,区域/地带管理器264是服务DLL。区域/地带管理器264根据地带定义和化身位置定义调整音频流服务272混合参数。区域服务26向区域/地带管理器264公布将每个化身与响应于该化身的运动的音频处理图元联系在一起的SODA定义。化身位置数据被用于根据本地地带定义以允许每个通信者在适当音频位置以适当音量听到其他通信者的方式混合来自参与虚拟区域的每个客户端网络节点的音频流。应用到音频处理图元的参数值通常取决于包括相对位置、通信者的取向、地带定义、虚拟区域的音频属性、以及由通信者配置的手动设置(例如,静音、音量)的计算。在一些实施例中,区域/地带管理器264处理以下SODA定义,这些SODA定义属于其中呈现当前音频图的模拟音频空间的总特征。·音频混响·音频孔径·音频障碍这些SODA定义在以下段落中描述。音频混响是导致某些混响或回声效果的“中空空间”的混响空间的定义。该定义用位置标识简单的几何形状。在调用音频计算对象时,该定义在域对象模型(DOM)中被提供给所有音频计算对象。音频孔径是两个混响空间之间的连接的定义。它通过ID标识两个混响空间,并指定两个空间之间的音频连接。该连接在某一位置和方向上为圆形。在调用音频计算对象时,该定义在域对象模型(DOM)中被提供给所有音频计算对象。音频障碍是对声音传播的物理障碍物的定义。它被建模为一位置处的球体。在调用音频计算对象时,该定义在域对象模型(DOM)中被提供给所有音频计算对象。以上描述的SODA定义是对音频计算对象的输入,音频计算对象是采用以下参数作为自变量的脚本计算插件:声音源和声音阱两者的物理性质;针对源和阱的地带定义;手动设置(单独静音、音量/AGC);环境设置(全局静音、音量);以及房间音频特性。初始音频计算插件包括:手动静音;手动音量;位置;多普勒偏移;取向(朝向/背离);地带;以及房间混响。一些计算对于单独音频源是适当的;而一些计算对于整个房间的最终混合是适当的。虚拟区域应用可通过在音频定义中参考新插件而随意引入新插件。区域/地带管理器264将订阅其不具有的插件,并从区域服务器接收其定义。图23示出四通信者音频处理图380的示例,该音频处理图可由区域服务器应用指定。出于简化,通常在完整音频处理图中存在的某些音频处理图元(例如,编解码器、网络、滤波、特殊效果、以及差错消除图元)已被从此示例中省去。箭头382、384、386、388、390表示音频源,它们都是单声道干音频源。化身1、2和3是来自远程客户端网络节点的网络流。密谈是来自指定源的可选本地音频馈送。音频声像控制(panner)左边的所有东西都是具有一系列附加效果的单声道。这些效果包括根据地带和扬声器取向调整音量并施加多普勒偏移以考虑讲话者和倾听者的相对速度。音频声像控制将每个经调整的单声道信号安置在虚拟区域的当前占据地带的三百六十度音频空间内。使用讲话者相对于倾听者的位置。音频声像控制右边的所有东西是5.1音频。房间音频处理图元计算对音频信号的房间声学效果。它考虑讲话者和倾听者的位置、房间特性、以及障碍。最终混合音频处理图元将所有经处理的音频信号加在一起以产生被管道传送至指定音频输出设备(即,SPKR,其在所解说的示例中表示本地扬声器)的所得流。一些音频处理图元(插入物)具有固定参数且,因此,与任何运行时计算插件脚本不相关联。这些元件包括回声和噪声消除、自动增益控制(AGC)、寂静检测、固定源声像控制、以及最终混合。j.资产缓存服务在一些实施例中,资产缓存服务275是服务DLL。资产被记录在由GUID索引的本地数据库或表服务中。资产数据被保留在非晶存储池中。关于特定资产的ID从不会改变,由此避免了任何缓存一致性问题。资产由SODA记录缓存。这意味着大资产可存储为许多片,因为SODA记录被限制在UDPMTU的大小(大约1000字节)。资产缓存必须通过GUID和数据偏移来索引记录,数据偏移是SODA记录中的字段。(i)资产索引资产在类表、以及可选的属性表中表示。资产类表将资产GUID映射至类GUID和数据存储参考。资产ID资产类数据存储guid表面guid类纹理<图像1>guid会议表表面guid类纹理<图像2>guidSococo会议表表面guid类纹理<图像3>guidDog显示网格guid类网格<图像4>guid名称Sococo会议名称guid类文本“会议”guid作者DVWguid类文本“DavidVanWie”资产属性表向资产附加被标记的属性标量值。(ii)数据存储基于虚拟区域的呈现平台的资产存储接口允许堆积数据、事务性地存储分离索引、以及提取未用资产存储以重新使用。数据库和文件的组合将用于资产存储。数据库包含两个表:存储分配表,以及GUID/偏移索引。文件是根据配置的缓存大小以固定大小创建的。使用堆-存储段(heap-bucket)算法将资产存储在文件中。资产缓存数据存储将通过GUID和偏移来索引。堆由以2的幂的数据大小被划分成存储段。最小的存储段为32字节;最大的存储段为2k字节,其共构成7个存储段。每个存储段被预算编制相同量的存储,这意味着每个连继存储段中存在一半的数据项。每个存储段是大到足以散列足够数据项来完成存储预算的堆表,该存储预算使散列冲突的机会相当小。(iii)SODA资产定义记录资产被封装在SODA记录中供传输。定义包括资产GUID、其内容(未结构化数据)及其偏移(如果大于一个记录的话)、以及属性表。封装资产的SODA记录从不包含对存储系统的任何参考。偏移和数据字段可重复只要它们适合一个记录。对资产的查询是定义。使用定义忽略资产(iv)属性等级资产具有属性,最重要的属性是类型和默认。类型指定资产的用途。默认指定可被用于代替给定资产的基础资产。示例性的属性等级在下表中示出:名称类型默认值空白纹理空<图像5>木材粒度7纹理空白<图像6>表顶部1纹理木材粒度7<图像7>会议表木材纹理表顶部1<图像8>Sococo表纹理会议表木材<图像9>在此示例中,包括Sococo表纹理的虚拟区域场景将使用第一可用纹理来呈现,从Sococo表到会议表木材、然后是表顶部1等之中搜索。样式基础将具有基于默认资产的巨大资产等级树,所有资产最终基于较小数目的基础资产。这些基础资产被安装作为客户端软件包的一部分。该特征旨在允许设计具有指定样式资产被调出的等级,以及允许在实际设计所有样式资产之前呈现该资产。可能还期望在加载所有样式资产之前启动虚拟区域的呈现。可选属性包括默认、作者、应用和作为对从中导出资产的Collada源的参考的ColladaID。作者站上运行的浏览工具将通过任何和所有属性来索引资产。k.音频传输总线音频传输总线是处置音频流的传输总线276的组件。在一些实施例中,音频传输总线由作为组件对象集合管理音频图的库实现。所有音频图对象通过唯一ID向音频传输总线登记。音频传输总线负责在呈现音频时管理音频图对象。音频传输总线通过ID跟踪音频图组件。在此过程中,音频传输总线依次调用每个音频图组件,提供来自由ID命名的输入组件的音频数据。音频传输总线缓冲客户端网络节点上可用的每个音频流的一个时间间隔。音频传输总线馈送这些流至由音频流服务272配置的零或更多个订户。流送数据使用拖拉模型,其中最终输出级调用之前的级以获得需要的数据。每级调用一个之前的级直至到达原音频流源。如果源需要控制速率(流控制),通常进行其自身的缓冲并具有其自身的特定信令方案。例如,本地文件源可双缓冲并在处理之前一个时间间隔的同时向前读取一个时间间隔。网络文件源可通过网络向服务器信号通知流速率和缓冲器限制。另一方面,本地话筒源根本没有控制流速率的能力。音频传输总线在两个阶段操作:一旦出现呈现定时器事件,其向音频阱组件提供现有的呈现数据;音频传输总线随后遍历音频图,致使下一时间片的音频数据被呈现并被缓存。该技术给予音频图一个提供连续回放的很好机会,甚至在存在可变等待时间音频源数据时也是如此。在一些实施例中,音频传输总线测量每个音频音频图组件的呈现等待时间,并通过合计所有相关(源)音频组件等待时间来聚集每个呈现链等待时间。音频传输总线收集并登记呈现等待时间统计。基于这些统计,实时调度器278确定应当何时以及如何修改音频图才能达成音频图处理目标。在一些实施例中,实时调度器278在确定应当何时以及如何修改音频图才能达成音频图处理目标的过程中执行以上结合图13和14描述的一种或更多种方法。音频传输总线的另一个功能是周期性调用音频计算对象。音频计算对象被用于改变相关联的一些音频图处理元件的设置。音频计算执行的周期通常比音频图呈现周期要长的多(频繁度更低)。音频传输总线通常具有记录流和重放被记录的流的能力。原音频流通常被记录以便在回放期间,可根据观看者的角度来重新呈现混合。一些实施例包括接收所有原音频流的中枢。在这些实施例中,该中枢通常处置会话记录。当不期望重新呈现会话时,音频传输总线通常仅在客户端网络节点上记录音频流。音频源对象是所有音频源的基础。该对象在被轮询时传递数据,并定义其期望等待时间和信道(例如,单声道、立体声、5.1)。导出对象包括话筒、媒体流、剪辑、波形文件、DirectX音频、以及混合插件的输出侧。音频阱对象是音频输出设备的基础对象。该对象在被轮询时请求来自音频源的数据。导出对象包括扬声器、媒体流以及混合插件的输入侧。(i)音频插件API在一些实施例中,音频插件结合可从Steinberg媒体技术GmbH获得的VST音频效果C++对象。特别是,音频插件结合包装为插件的VST对象。提供填充库(shimlibrary)用于包装VST对象作为音频插件。该包装提供音频插件API。VST对象的API将被用作音频插件类专用API。该API包括:设定总线排列(输入、n输入、输出、n输出)获得总线排列(方向、索引、扬声器&)能处理样本大小(大小)获得等待时间样本()建立处理(处理)设定处理(状态)处理(数据&)获得尾部样本()在这些实施例中,VST插件被包装为音频源和音频阱。例如,音频源::帧(数据&,大小)调用将作为对之前音频源::帧(数据&,大小&)、继之以建立处理(处理)和处理(数据&)的调用来实现。配置(等待时间&,信道布局&)调用根据针对每个支持信道的获得等待时间样本()和获得总线排列(输出,i,信道布局&)来实现。包装的存在意味着需要VST源代码来将现有的VST插件填充入音频总线。(ii)OpenAL(打开音频库)使用可从www.openal.org获得的OpenAL跨平台音频API来执行大部分音频处理图混合和效果元件。该OpenAL库能够使用可用声卡的最佳特征来计算以上在区域/地带管理器部分列出的所有参数以实现这些特征。特别是,为音频图中从静音到最终混合的每个操作创建OpenAL源、倾听者、以及程序缓冲器。在每次更新之前,根据计算插件修改缓冲器参数。在一些实施例中,使用可从GlobalIPSolutions,Inc.(全局IP方案公司)获得的GIPS组件化音频库来实现流处理组件(插入物)。GIPS音频库直接支持以下音频插件:编解码器、差错消除、抖动控制、回声和噪声消除、AGC、以及寂静检查。I.本地流源本地流源是话筒、诸如记录的波形文件和音乐之类的本地声源、以及声音样式资源。操作系统API被用于附连这些源的每一者并将其呈现给音频传输总线用于分发。每个源被“包装”为音频源导出类。当接收定义时(参见第VI部分的音频设备SODA定义),创建源对象包装。针对话筒、剪辑、Skype、以及CD声音在基于的计算系统上使用直接声音API。RTP流送仅仅是实时协议(RTP)服务周围的音频源包装,该实时协议服务用于通过UDP套接字传递流送数据(例如,音频)。通过因特网的流送音频支持基于web的下载及播放以及还有微软媒体服务器流。在一些实施例中,实时内核260支持基于虚拟区域的通信与基于非虚拟区域的通信(例如,Skype和VOIP音频)的会话的发源和混合。在这些实施例中,实时内核截取基于非虚拟区域的通信并将其呈现为本地音频源。基于非虚拟区域的通信会话由通信者之一在负责与其他网络节点共享该基于非虚拟区域的通信会话的原始音频的客户端网络节点上发起。主存客户端网络节点还混合与虚拟区域通信环境相关联的音频,该通信环境针对经由该基于非虚拟区域的通信应用通信的通信者。图24示出使人们能经由不同通信应用(例如,Skype和VOIP)与虚拟区域通信者通信的计算机系统389(标记为“系统2”)的实施例。在图24中,在共享虚拟区域的四个网络节点(即,系统1、系统2、系统3和系统4)之间建立音频通信信道。系统1表示不运行基于虚拟区域的通信应用的客户端网络节点;相反,系统1被配置为操作一替换通信应用(例如,Skype)。系统2表示正运行实时内核260的实施例的通信者网络节点,该实时内核包括发出并混合与系统1的基于虚拟区域的会话的流处理机391。在此过程中,流处理机391使用虚拟化系统1的回放和音频捕获流的集成组件393。系统3和4表示正运行基于虚拟区域的通信应用的两个其他客户端终端。图24中示出的系统的诸组件包括:·流处理机391:由以下音频图处理元件构成的:○集成组件393虚拟化替换回放和捕获流。在此过程中,集成组件393发送话筒(Mic)1至接收自虚拟化替换回放的C拆分1,从P混合接收话筒2、3和4混合,以及发送虚拟化替换捕获用于传输至系统1。○C拆分1从集成组件393接收话筒1并将话筒1发送至P路由和I/O多路复用器/多路分解器两者。○C拆分2从系统2捕获接收话筒1并将话筒2发送至P混合和I/O多路复用器/多路分解器两者。○P路由从C拆分1接收话筒1以及从I/O多路复用器/多路分解器接收话筒2和3。P路由还向系统2回放发送话筒1、3和4以及向P混合发送话筒3和4。○P混合从C拆分2接收话筒2以及从P路由接收话筒3和4,向流处理机391发送话筒2、3、4的混合用于虚拟化之外的传输。·C:由基于虚拟区域的通信应用进行的音频捕获·P:由基于虚拟区域的通信应用进行的音频回放·CA:由系统1的替换音频应用进行的音频捕获·PA:由系统2的替换音频应用进行的音频回放·虚拟话筒:与系统2的替换音频相关联的虚拟话筒·虚拟扬声器:与系统2的替换音频相关联的虚拟扬声器在计算机系统389的操作中,I/O多路复用器/多路分解器将接收自系统1和2的音频信号1和2发送至系统3和4两者。I/O多路复用器/多路分解器还将接收自系统3和4的音频信号3和4发送至流处理机391的P路由组件。P路由组件向系统2的回放组件发送音频信号1、3和4并将音频信号3和4传递给系统2的P混合组件。流处理机391的P混合组件混合音频信号2、3、4并将经混合的信号传递给系统2的集成组件。集成组件393将经混合的信号传递给正在系统2上运行并对应于系统1使用的通信应用395(例如,Skype)的替换通信应用(例如,Skype)的音频捕获组件。替换音频捕获系统(CA)将捕获的经混合信号2+3+4传递给在系统1上运行的替换通信应用395的回放组件。在通信基础结构389的一些实施例中,P混合直接订阅I/O多路复用器/多路分解器以使该系统更对称。在这些实施例中,P路由变为P混合1,并从I/O接收3、4,以及从C拆分1接收1。因为这些信号作为独立信道发送,则C拆分1的输出可能直接被发送至回放组件,但这是不够灵活的(因为P混合可能执行实际的混合而非独立信道的传递,参见以下3)。在此情况下,P混合变为P混合2,并从I/O接收3、4,以及从C拆分2接收2。该混合器的输出是真实混合,因为替换音频系统是单声道通信系统(即使该声道是立体声的,另一端不存在组合来自多个源的信号的多轨混合器)。图24并未示出系统3和系统4彼此之间的交互,仅仅示出与系统2以及通过延伸而与系统1的交互。系统3和4之间的交互可以如上所述,是对等的或是服务器仲裁的。在图24中,在任何时间,两个流用逗号分隔(意指它是多信道路由),该系统也可发送经混合的流以节约内部通信资源(例如,在I/O多路复用器/多路分解器之外)。将被混合的流用加号来指示(即,由集成组件393向替换捕获组件CA发送的虚拟化话筒信号)。m.实时调度器在一些实施例中,实时调度器服务278是服务DLL。在一些实施例中,音频和3D场景的呈现在逐帧基础上进行。最初,流被启动,随后在一延迟后,实时调度器服务278开始处理第一帧。该延迟是由每个音频和视频处理链的组合期望等待时间校准的。实时调度器服务278发起对之前准备帧的消耗并随后在具有50毫秒周期的时间计时上处理下一帧。将每一链中的最终呈现对象向实时调度器服务278登记。从SoFrameRenderer类导出这些对象,SoFrameRenderer类是一种方法帧呈现(时间帧Ms)该方法从呈现链特有的数据源(音频或视频)准备具有所指示时间的一帧。SoFrameRenderer类包括另一种方法帧传递()该方法将之前准备的帧传递至最终目的地,该最终目的地是该呈现链特有的。SoFrameRenderer对象并不要求能够缓冲多于一个完整帧。实时调度器服务278将按调度来帧传递该之前准备的帧,并随后调用帧呈现以准备下一间隔的帧。操作系统没有“硬调度”能力。在一些实施例中,实时调度器服务278被配置为调用一个或更多个SoFrameRenderer类,其包括音频处理器、图形处理器、物理建模和脚本。SoFrameRenderer类使实时调度器服务278能响应于确定客户端网络节点不能跟上目标处理级别而重新调整帧处理。在一些实施例中,实时调度器278实现以上结合图13和14描述的一种或更多种方法。在一些实施例中,实时调度器服务278测量所有帧的呈现时间,并作出通过SODA接口可用的统计。如果统计落在范围之外(例如,采用了太长时间来准备帧),则生成日志事件。启发将被触发以尝试“追上”,或许通过跳过一帧、丢弃范围之外的呈现链(这通常是因硬件或网络差错导致的范围之外)、或者通过丢弃低优先级呈现链。出于实现基于优先级的调度的目的,SoFrameRenderer类定义该方法:帧优先级()该方法返回一数字,越小的数字越重要。启发可从链的等待时间和优先级确定应该丢弃哪个(些)链以产生对总优先级具有最小影响的最大收益。在一些实施例中,实时调度器服务278另外能丢弃链中的级。为此,实时调度器服务278能调用方法:等待时间=帧删除(优先级)其中处理链负责“丢弃”低于所指示的优先级的“链路”。实时调度器服务278可启动在最大优先级处的调用并倒数直至所有帧在期望总等待时间内呈现。迭代丢弃低优先级链并删除这些链本身的组合启发通常在某一优先级级别终止。如果优先级级别在阈值之下,则可作出日志项以及,在某些情况下,关闭该会话。实时调度器服务278还负责管理至SIS时间服务(网络资源)的接口,以使客户端网络节点时钟与网络中的其他客户端网络节点的时钟同步。在一些实施例中,时间服务由插件实现,如下所述。7.故障恢复实时内核260进行尽力尝试以在出现网络和服务器故障的情况下继续操作。在此过程中,实时内核260实现两层故障恢复算法。首先,在故障时,SODA信道服务270和媒体服务271独立尝试重新建立连接。媒体恢复将允许会议在出现单个音频信道故障时继续,或者在NAT超时的情况下恢复。其次,如果SODA信道服务270和媒体服务271未能重新建立连接,则它们将向其客户端信号通知该故障。在一些实施例中,多个通信者同时尝试恢复的动作可通过向可同步恢复尝试的区域vault服务器登记该客户端节点会话来协调。在一些实施例中,区域/地带管理器264还尝试在服务器故障的情况下进行恢复。区域/地带管理器264接手该流故障并随后卸下该会话并在不同区域服务器上重新启动该会话。8.插件在一些实施例中,实时内核260具有组件化的、开放的、以及平台无关的架构,该架构允许开发者独立开发并远程增加和更新实时内核260的组件。a.插件设计插件是因平台而异的二进制图像,该图像是从插件服务器下载的。在基于的计算机系统上,插件实现为DLL(例如,.NET或COM样式插件)。然而,插件与普通动态链接库的加载方式不同。特别是,在加载期间,不需要链接至插件库;也不需要对软件代码进行任何编译。相反,插件管理器266简单加载包含在插件目录中的插件。这样,插件可被增加到客户端网络节点或从其移除,而不需要对站进行任何进一步的配置(例如,注册表项),这简单地通过下载或删除可执行件来实现。这些插件以定义好的方式连接到每个插件主机。如图25所示,从相应插件变量类394导出插件392的活动实例,该插件变量类又是从相应插件基类396导出的。在一些实施例中,通过创建基础插件对象以及通过继承将该基础插件对象投向被标识的变量来实例化插件实例392。每个基类396和变量类394通过宣称实现一接口来表示它提供服务。图26示出插件基类398、400的示例性集,每个插件基类与相应的一个或更多个导出变量类402、404以及406、408的集合相关联。每个插件基类398、400定义特定的功能性类别,而每个插件变量类定义相应基类的功能性的特定用途或类别的行为(例如,API=人类接口设备,变量=鼠标)。插件通常使用头部文件来定义接口、接口功能的功能原型、以及用于调用该接口功能的宏。插件由GUID以及人类可读的名称来标识。单个插件可具有支持的多个API以及同一API上的多个变量。在一些实施例中,插件API是包含至实现由接口定义的服务的插件功能的函数指针的C语言数据结构。下表示出被标识为guid物理设定1的假想物理插件的示例。文件名内部名称标识符API变量物理.DLL无摩擦物理设定1.0guid物理设定1guid接合Guid接合球物理.DLL无摩擦物理设定1.0guid物理设定1guid接合guid接合铰链物理.DLL无摩擦物理设定1.0guid物理设定1guid接合guid接合游标物理.DLL无摩擦物理设定1.0guid物理设定1guid接合guid接合弹簧物理.DLL无摩擦物理设定1.0guid物理设定1guid冲突guid冲突八树物理.DLL无摩擦物理设定1.0guid物理设定1guid冲突guid冲突动态在此示例中,存在“接合”API的四个变量和“冲突检测”API的两个变量。文件名是插件以其被存储在文件系统中的名称。内部名称意图整体描述插件。标识符标识整个插件二进制图像,且仅由插件管理器266使用。API是指定由插件支持的程序API的公知GUID。变量是客户端应用可使用以选择针对特定用途的插件的公知GUID。例如,SODA信道服务270可商定压缩插件变量以供会话上使用。图27示出与COM(组件对象模型)架构兼容的插件410的示例性架构。插件410包括一组入口点函数412,包括第一和第二变量416、418的第一API类414,以及第二API类420。插件410实现在所有支持的API类414、420中和在每个API类中的所有变量中的所有函数。每个API类和API类中的每个变量与相应入口点函数(也称为“工厂”)相关联。当插件410被加载时,针对每个支持的API类向插件主机登记相应的入口点函数。插件主机使用与API类相关联的入口点函数以实例化该API类并获得至其Iunknown接口的指针。插件主机使用Iunknown接口来搜索由该API类所支持的变量的入口点函数。插件主机使用与变量相关联的入口点函数以实例化该变量并获得至其Iunknown接口的指针。插件主机使用Iunknown接口向该变量查询该接口的接口函数表。该函数表给予主机对变量的API实现的访问。每个插件可执行件支持允许插件管理器266管理该插件的核心插件API。核心插件API使得该插件可执行件是自描述的。特别是,每个插件输出可由插件管理器266调用以允许该插件自己登记的函数。在一些实施例中,每个插件可执行件输出以下核心插件API:(i)插件变量插件变量的活动实例从类“插件变量”导出。总是使用插件对象来创建插件变量。所有有用插件将该类扩展至包括因API而异的方法。唯一共用的方法是普通配置方法。插件变量:配置()启动对话插件变量:配置设定(参数)设定配置参数插件变量:配置获得(参数&)获得配置参数(ii)插件管理器图28示出包括插件管理器266、包含一组插件容器424的插件目录422、插件数据库426、以及调用程序428的插件架构的实施例。插件管理器266查询插件目录422中的插件容器424、在插件数据库426中登记插件、以及对来自调用程序428的对发送有关可用插件的信息以及实例化指定插件变量的请求作出响应。调用程序428通常是内核组件(例如,安装加载程序组件、诸如连接和服务器混合管理器262和区域/地带管理器264等内核管理器、以及内核服务);尽管在一些实施例中,调用程序428可对应于在客户端节点或远程网络节点(例如服务器)上运行的软件应用或服务。图29示出了由插件管理器266在登记客户端网络节点上的可用插件的过程中实现的方法的实施例。根据图29的方法,插件管理器266发现客户端网络节点上可用的插件(图29,框430)。在一些实施例中,所有插件被存储在在客户端网络节点的文件系统中创建的共享插件目录中。在这些实施例中,插件管理器266通过检查该共享插件目录发现可用插件。在其他实施例中,插件管理器266可被配置为检查其他文件位置以发现可用插件。插件管理器266查询所发现的插件以发现它们支持的所有API(图29,框432)。在此过程中,插件管理器266进行对核心API的调用以枚举与可用插件相关联的参数值。例如,插件管理器266用返回插件GUID、所支持API的GUID、以及针对给定API的所支持变量的GUID的核心API调用来查询插件。基于查询结果,插件管理器266将诸插件与这些插件分别支持的API之间的关联存储在插件数据库426中(图29,框434)。在此过程中,插件管理器266通过插件所支持的API对目录422中的所有插件进行分类。插件管理器266自动将插件输入到插件数据库426中所有支持的API下面。这样,插件数据库426允许对具有相同API的插件进行变量查询。此外,插件数据库426中的插件可由API和变量以及在由虚拟区域应用参考时创建的实例来枚举。图30示出创建数据库436的示例性实施例。插件管理器输出以下API:图31示出由插件管理器266响应于收到来自调用程序428的API调用实现的方法的实施例。根据该方法,响应于收到对枚举支持指定的一个API的所有插件的调用(图31,框440),插件管理器266返回包括插件数据库中与该指定的API相关联的所有插件的标识符的列表(图31,框442)。响应于收到对枚举由所标识的一个插件支持的所标识的一个API的变量的调用(图31,框444),插件管理器266返回包括由所标识的插件支持的该给定API的所有变量的标识符的列表(图31,框446)。响应于收到对实例化由所标识的一个插件支持的所标识的一个API的所标识的一个变量的调用(图31,框448),插件管理器266加载所标识的插件并返回至所标识的变量的实例的指针(图31,框450)。在此过程中,定位指定的变量,该指定的变量被加载至调用程序的地址空间中,并用实现由该API定义的服务的变量函数的函数表地址来填充内部指针表。(iii)插件服务器插件以适合每个所支持平台的可下载形式存在于服务器上。服务器始终支持加密、压缩以及认证插件的最小集,因此客户端网络节点在尝试服务器连接时始终成功。当首次由第三方开发者在服务器上登记时,由自动化工具检查插件以确保它符合API描述,并检查不可接受的客户端站点API参考。例如,不允许动态绑定至不是已经在插件环境中的任何本地接口。随后扫描插件是否有病毒。服务器上的所有图像随后在病毒方面是安全的。插件通过认证用户进行访问控制。这样,已经支付该访问的用户可在任何位置使用该插件。在一些实施例中,经由电子商务引擎为插件下载认证用户。b.插件类所有插件符合插件API。一些插件专用于某些工具(例如,OpenGL)并具有其自身标准。每个插件类具有因类而异的API。在一些实施例中,插件取决于所有客户端站点访问的本地应用运行时。在使用插件的每个组件中,协议允许商定使用GUID命名空间的特征。例如,在一些实例中,当连接网络流时,提供方客户端网络节点以偏好顺序提供其加密插件GUID列表,而接收方网络节点在这些提供中选择并用选择或拒绝来响应。在一些示例性实施例中,以下插件类被定义并由开发者用于开发在创建虚拟区域通信者环境中使用的插件。·加密算法·压缩算法·认证算法·凭证·图形效果·物理延伸·脚本延伸·输入设备主存·音频混合·音频源·音频插入·流传输·时间服务这些插件类在以下段落中定义。加密算法加密是流传输特征,并在流创建时间被商定。会话定义将包括加密变量ID。示例性加密变量包括AES和RC4块加密。压缩算法压缩是可选的信道内容特征。信道在传输商定信道定义时选择压缩。订阅站提供可用压缩选项,而公布站在提供公布时指示其选择。音频编解码器选择跳过压缩,因为它们的内容已经被压缩。示例性的音频压缩插件变量对因信道而异的预备(priming)流实现ITU-TV.44压缩处理。认证算法网络基础结构服务器要求某些认证协议以便连接。第三方服务器可具有特定认证要求。认证协议可被随时修改。除核心插件API外,认证插件具有用于执行认证协议并得到对本地凭证的访问的API。示例性的认证插件变量包括支持对初始服务器的SSL类型的认证以及支持使用经签名ID作为令牌的后续服务器登录的的插件变量。凭证凭证可被创建并且必须被封装在插件中以由认证算法存储和使用。示例性的凭证是包含公钥的凭证。图形效果OpenGL和Collada支持脚本式着色器、取样器、简档和注释。一些实施例支持为着色器的Colladacg_表面_类型和glsl_表面_类型,以及为取样器的gl_取样器X和cg_取样器X。物理延伸在一些实施例中,开放动态引擎(ODE)被修改为在动态行为环中包括特定钩子(hook)。虚拟区域应用通常通过对场景图中的实体施加物理属性来指定物理性质。物理延伸插件具有用于查询由该插件处理的相关联的属性GUID的API。这样,仅为有关对象和虚拟区域调用物理插件。一些实施例支持为模型内的接合的Collada刚性_约束,以及为针对化身和假象的全局运动算法的OpenGL冲突检查。脚本延伸脚本延伸插件具有允许包装脚本运行时(例如,Java或JavaScript)并向其提供本地应用运行时的附加API。脚本通过包括脚本延伸插件的GUID的SODA记录来定义。输入设备主存输入设备插件生成针对由应用逻辑处理的标准输入事件(例如由计算机键盘、计算机鼠标、控制器、以及控制器生成的事件)的SODA记录。音频混合、音频源、以及音频插入音频处理在起点(例如,话筒)处是合需的并在终点(例如,扬声器)处生效并混合。音频插件通常不能改变音频网络路由,因为这会影响其他用户的体验。平台上的音频插件是符合音频插件API的DLL。它们向实时内核260登记并可供SODA参考。虚拟区域开发者可请求音频插件作为虚拟区域应用的一部分(例如,使用延伸的Collada字段或VSDL语义)。化身脚本同样可请求音频插件。混合变量包括回声、回声消除、混响以及合成。源变量包括话筒、剪辑、媒体、Skype以及流送文件。插入变量包括声像控制、音量、iLBC、RCU、iPCM-wb、均衡器、LPF、HPF、AGC、噪声消除、差错消除、抖动控制、静音、延迟、寂静检查、舒适噪声。流传输STRAW使用流传输插件来主存网络上的会话。流传输分组并提供可靠性、认证和加密。时间服务实时调度器260对同步客户端网络节点之间的时间感兴趣。为此,每个客户端网络节点将与因特网时间标准(诸如SIS、NTP(网络时间协议)、或ITS(因特网时间服务))同步。c.插件类API所有插件类对象基于插件变量。加密算法该插件是基于插件变量的。它执行包括键控的块加密算法。该插件除密钥以外是无状态的,即每个加密是独立于其他加密的。加密::Ctor(算法,密钥)加密::加密(数据,大小,目标)加密::解密(数据,大小,目标)加密::Dtor()压缩算法该插件是基于插件变量的。它执行一个或更多个无损压缩/解压缩算法。它压缩连续流,并可保持内部状态表。该算法在每个关键帧重新开始,可包括处理没有发出但有助于压缩状态的“预备”块。压缩::Ctor(算法)压缩::关键帧(预加载)压缩::压缩(数据,大小,目标)压缩::解压(数据,大小,目标)压缩::Dtor()认证算法:该插件是基于插件变量的。它访问本地凭证,并实现一个或更多个状态的客户端认证状态机。该认证状态机不控制至认证服务器的通信链路。它仅处理消息并产生后续消息。认证::Ctor(算法,凭证)认证::初始状态()认证::状态(状态)认证::提前(消息数据,消息消费者&)认证::会话密钥(密钥&)认证::Dtor()凭证该插件是基于插件变量的。它访问因平台而异的凭证存储。凭证::Ctor()凭证::选择(索引)凭证::接受(数据,大小,索引&)凭证::私钥(密钥&)凭证::公钥(密钥&)凭证::密码短语(密码短语&)凭证::Dtor()图形效果-着色器该插件是基于插件变量的。它影响3D呈现。着色器API支持着色器(脚本程序表面生成器)。着色器::Ctor(gl&)着色器::初始化(格式,大小,mip,类型,代码,技术)着色器::设定纹理参数(纹理)着色器::设定纹理流(id流)着色器::呈现(传递)着色器::Dtor()图形效果-取样器该取样器API是基于插件变量的。它支持将纹理映射至表面。取样器::Ctor(gl&)取样::初始化(类型,包装,小滤波器,大滤波器,mip滤波器,颜色,mip映射_最大级别,mip映射_偏置)取样器::Dtor()物理延伸-接合该插件是基于插件变量的。它扩展运动的动态特性。接合API支持对化身和假象子组件的接合约束和动态特性。接合::Ctor(ode&,尺寸,n无界的)接合::初始化(身体1,锚1,取向1,身体2,锚2,取向2,轴,erp,cfm)接合::扭矩(扭矩)接合::获得状态(fps&,erp&,jLin1&,jAng1&,jLin2&,jAng2&,c&,cfm&,低&,高&)物理延伸-冲突该冲突API是基于插件变量的。它支持快速计算冲突检测。在一些实施例中,冲突插件变量可在开放动态引擎(ODE)中实现四叉树类dx空间算法。冲突::Ctor(ode&,空间)冲突::步骤()脚本延伸该插件是基于插件变量的。它支持由虚拟区域应用提供的代码的执行。该代码是二进制形式,且由语言和该特定代码定义支持的API来标记。该插件随语言而变。它加载特定的代码定义并调用该代码定义,提供适合该API的本地应用运行时对象。脚本延伸::Ctor(sonar&)脚本延伸::执行(代码,api)脚本延伸::Dtor()输入设备主存该插件是基于插件变量的。它支持用户事件捕获(除音频之外)。这包括从鼠标到具有面部识别的视频照相机的所有东西。该插件向队列生成用户事件。输入设备::Ctor(arg,队列)输入设备::配置(arg)音频混合该插件是基于音频组件的。它组合两个音频流。音频混合::Ctor(音频场景1,音频场景2,参数)音频混合::配置(参数)音频混合::Dtor()音频源该插件是基于音频组件的。它提供可轮询的音频流。音频源::Ctor()音频源::配置(arg)音频源::获得等待时间(等待时间&)音频源::轮询(数据)音频插入该插件是基于音频组件的。它翻译音频流。它可压缩、解压缩或简单地修改流。音频插入::Ctor(音频源&)音频插入::获得等待时间(等待时间&)音频插入::过程()音频发送该插件是基于音频组件的。它将音频流分为两个相等的流(复制该流)。任何音频源可被路由至任何其他音频元件。音频发送::Ctor(音频源&)音频发送::Dtor()音频发送::复制(数据&)流传输该插件是基于插件变量的。示例性的流传输插件变量支持具有可配置的认证和加密的IPUDP传输。传输::Ctor(端口,站,会话,加密)传输::MTU()传输::Hello()传输::质询(凭证)传输::回应(质询,加密)传输::响应(响应,加密)传输::标识令牌()传输::标识令牌(令牌)传输::发送(数据,大小,id信道)传输::接收(记录)传输::Dtor()时间服务该插件是基于插件变量的。它将客户端网络节点时间与因特网标准同步。时间服务::Ctor()时间服务::同步()时间服务::Dtor()VI.SODA定义会话ID站1GUIDID站2GUIDID会话GUID会话故障ID会话GUID原因长参数长站IDGUIDSTRAW_地址IP,端口STRAW_传输[GUID]公布订阅流保持有效ID会话GUID超时长流故障ID会话GUID信道故障ID信道索引GUID通信者状态ID本身GUIDID通信者GUID状态短HIDID设备类GUIDID设备GUIDIDGUID音频参数IDGUIDID参数GUID值短音频设备ID设备类GUIDID设备GUIDIDGUID区域会话ID区域GUIDIDGUID物理检查点地带音频孔径音频障碍IDGUID半径双起点双X3音频混响IDGUID形状网格起点双X3音频混合音频效果音频流ID音频GUID化身GUID音频计算插件升级相关性列表基础安装GUID描述文本升级ID[GUID]升级IDGUID偏移长数据[]音频记录IDGUIDID音频GUIDID存储GUID音频回放IDGUIDID音频GUIDID存储GUID网络DNS地址串网络代理地址串调试信息IDGUID统计GUID复位布尔调试陷阱IDGUID陷阱GUID重新装备布尔HIDIDKvmGUIDHID事件VII.结论本文描述的实施例提供支持在相应网络节点上操作的通信者之间的实时通信的实时内核。该实时内核处置连接到通信者、虚拟区域、以及其它网络资源、响应于用户输入开关这些连接、以及混合实时数据流的复杂任务。该实时内核使开发者能够专注于开发高级通信功能而非低级衔接代码。实时内核施加相对低的计算资源要求,以便实时通信性能能使用宽范围的当前可用的计算设备和网络连接来达成。其他实施例也落在权利要求的范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1