發(fā)明背景對基于化身的虛擬現(xiàn)實通信系統(tǒng)的興趣已隨具有高處理能力和高帶寬網(wǎng)絡(luò)連接的計算系統(tǒng)的可用性的增加而成長。此種虛擬現(xiàn)實系統(tǒng)的主要目標(biāo)是創(chuàng)建虛擬空間,其中用戶可使用實時數(shù)據(jù)流(諸如音頻、視頻和文本聊天流)進行交互和通信。虛擬空間一般由計算機圖形描述定義,該圖形描述描述了該空間的虛擬幾何形狀、映射到該虛擬幾何形狀上的顏色和紋理、控制用戶如何在該空間中移動的碰撞屬性、以及該空間的聽覺屬性(諸如混響和聲音吸收屬性)。在典型的虛擬現(xiàn)實系統(tǒng)中,用戶從相應(yīng)計算機通過接口彼此通信,該接口是該系統(tǒng)所支持的一個或更多個實時數(shù)據(jù)流的源、阱、或者源和阱兩者。運行在每一臺用戶計算機上的虛擬現(xiàn)實軟件應(yīng)用基于描述虛擬空間中的化身的位置的位置信息來配置其自身的音頻和圖形呈現(xiàn)。該位置信息通常直接從其他用戶的計算機接收或間接從中央存在性服務(wù)器接收。默認(rèn)地,虛擬現(xiàn)實軟件應(yīng)用通常將虛擬空間中表示的每個源連接到該虛擬空間中表示的每個阱,這受到全局開關(guān)規(guī)則、局部用戶偏好、以及該虛擬空間中的對象屬性中指定的條件的影響。這些條件通常以對象間的相對距離的方式指定。例如,一些虛擬現(xiàn)實軟件應(yīng)用被配置成使得如果化身間的分開距離超過最大閾值距離則不建立實時數(shù)據(jù)流連接。成功的虛擬現(xiàn)實通信系統(tǒng)通常應(yīng)具有相對低的計算資源要求,以便實時通信性能可使用當(dāng)前可用的計算設(shè)備和網(wǎng)絡(luò)帶寬限制來達成。此外,此種系統(tǒng)通常應(yīng)當(dāng)以鼓勵區(qū)域設(shè)計者開發(fā)提高用戶對該系統(tǒng)的采用的虛擬區(qū)域的方式來實現(xiàn)。發(fā)明概述在一方面,本發(fā)明的特征在于一種方法,根據(jù)該方法在本地網(wǎng)絡(luò)節(jié)點接收來自遠程網(wǎng)絡(luò)節(jié)點的一個或更多個流處置指令。這一個或更多個流處置指令包括對用于處理至少一個實時數(shù)據(jù)流的流處理機的描述。在本地網(wǎng)絡(luò)節(jié)點,根據(jù)該描述創(chuàng)建流處理機。在本地網(wǎng)絡(luò)節(jié)點產(chǎn)生所得數(shù)據(jù)流。在此過程中,實時數(shù)據(jù)流通過所創(chuàng)建的流處理機處理。在另一方面,本發(fā)明特征在于一種方法,根據(jù)該方法從一個或更多個流處置指令解析對實時流處理機的描述。在此過程中,從該一個或更多個流處置指令解析輸入源標(biāo)識符、輸出阱標(biāo)識符、以及一個或更多個數(shù)據(jù)處理對象中的每一者的相應(yīng)標(biāo)識符。對應(yīng)于相應(yīng)一些標(biāo)識符的實時流處置對象被實例化。根據(jù)該描述被創(chuàng)建包括一些被實例化的實時流處置對象的有向圖。從對應(yīng)于輸入源標(biāo)識符的輸入源接收實時數(shù)據(jù)流。在對應(yīng)于輸出阱標(biāo)識符的輸出阱產(chǎn)生所得數(shù)據(jù)流。在此過程中,實時數(shù)據(jù)流通過該有向圖處理。在另一方面,本發(fā)明特征在于一種方法,根據(jù)該方法在本地網(wǎng)絡(luò)節(jié)點和至少一個遠程網(wǎng)絡(luò)節(jié)點之間建立至少一個實時數(shù)據(jù)流連接。在本地網(wǎng)絡(luò)節(jié)點,源自遠程網(wǎng)絡(luò)節(jié)點的至少一個實時數(shù)據(jù)流被處理。在此過程中,通過一個或更多個實時數(shù)據(jù)處理操作處理該至少一個實時數(shù)據(jù)流以產(chǎn)生所得數(shù)據(jù)流。該處理被監(jiān)視。響應(yīng)于基于該監(jiān)視確定該處理偏離性能目標(biāo),根據(jù)實時性能目標(biāo)例程修改該處理。在另一方面,本發(fā)明特征在于一種方法,根據(jù)該方法,在本地網(wǎng)絡(luò)節(jié)點,根據(jù)無連接傳輸協(xié)議在傳輸流上建立與遠程網(wǎng)絡(luò)節(jié)點的第一會話。代表本地網(wǎng)絡(luò)節(jié)點上的一個或更多個軟件實體,自動打開在第一會話中在本地網(wǎng)絡(luò)節(jié)點和遠程網(wǎng)絡(luò)節(jié)點之間傳送數(shù)據(jù)的一個或更多個信道。在第一會話中,維護一表。該表標(biāo)識打開的一些信道并將相應(yīng)的屬性值與所標(biāo)識的信道相關(guān)聯(lián)。響應(yīng)于確定第一會話已經(jīng)失敗,根據(jù)無連接傳輸協(xié)議自動嘗試在第二傳輸流上建立與遠程網(wǎng)絡(luò)節(jié)點的第二會話。響應(yīng)于成功建立第二會話,自動打開該表中標(biāo)識的每個信道。在另一方面,本發(fā)明特征在于一種方法,根據(jù)該方法解析包括一個或更多個內(nèi)核服務(wù)組件的內(nèi)核組件的列表。確定被解析的列表中在本地儲存庫中缺少的所有內(nèi)核組件。檢索被確定為缺少的每個內(nèi)核組件。從一些內(nèi)核服務(wù)內(nèi)核組件實例化內(nèi)核服務(wù)。執(zhí)行被實例化的內(nèi)核服務(wù)以在關(guān)于虛擬區(qū)域定義的通信環(huán)境中與一個或更多個遠程網(wǎng)絡(luò)節(jié)點通信。在另一方面,本發(fā)明特征在于一種在本地網(wǎng)絡(luò)節(jié)點上執(zhí)行的方法。根據(jù)該方法,本地網(wǎng)絡(luò)節(jié)點被配置為支持在由虛擬區(qū)域定義的上下文中與至少一個遠程網(wǎng)絡(luò)節(jié)點實時通信。該配置過程包括:響應(yīng)于對枚舉支持指定的應(yīng)用編程接口(API)的所有插件的調(diào)用,返回包含插件數(shù)據(jù)庫中與該指定的API相關(guān)聯(lián)的所有插件的標(biāo)識符的列表;響應(yīng)于對枚舉所標(biāo)識的一個插件支持的給定API的變量的調(diào)用,傳遞包含由所標(biāo)識的插件支持的該給定API的所有變量的標(biāo)識符的列表;以及響應(yīng)于對實例化由所標(biāo)識的一個插件支持的所標(biāo)識的API的所標(biāo)識的一個變量的調(diào)用,加載所標(biāo)識的插件并提供至所標(biāo)識的變量的實例的指針。在所配置的本地網(wǎng)絡(luò)節(jié)點和該至少一個遠程網(wǎng)絡(luò)節(jié)點之間建立至少一個實時數(shù)據(jù)流連接。本發(fā)明的特征還在于用于實現(xiàn)上述的發(fā)明方法的裝置和存儲致使計算機實現(xiàn)上述發(fā)明方法的計算機可讀指令的計算機可讀介質(zhì)。本發(fā)明的其他特征和優(yōu)點將從包括附圖和權(quán)利要求的以下描述而變得顯而易見。附圖簡述圖1是包括由網(wǎng)絡(luò)互連的第一客戶端網(wǎng)絡(luò)節(jié)點、第二客戶端網(wǎng)絡(luò)節(jié)點、以及區(qū)域服務(wù)器網(wǎng)絡(luò)節(jié)點16的虛擬區(qū)域通信環(huán)境的實施例的圖示。圖2是由實時內(nèi)核的實施例執(zhí)行的方法的實施例的流程圖。圖3A是其中網(wǎng)絡(luò)節(jié)點以對等架構(gòu)通信的虛擬區(qū)域通信環(huán)境的實施例的圖示。圖3B是其中網(wǎng)絡(luò)節(jié)點以服務(wù)器仲裁架構(gòu)通信的虛擬區(qū)域通信環(huán)境的實施例的圖示。圖4是包括呈現(xiàn)對虛擬區(qū)域的描繪的圖形用戶界面的網(wǎng)絡(luò)節(jié)點的實施例的圖示。圖5A是抬頭顯示器(HUD)疊加在呈現(xiàn)對虛擬區(qū)域的描繪的圖形用戶界面上的實施例的圖示。圖5B是圖5A中所示的HUD的圖示。圖5C是圖5A中所示的HUD的展開視圖的圖示。圖6是由區(qū)域網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)的實施例實現(xiàn)的方法的實施例的流程圖。圖7是由實時內(nèi)核的實施例實現(xiàn)的方法的實施例的流程圖。圖8是包括實時內(nèi)核的實施例的客戶端網(wǎng)絡(luò)節(jié)點的實施例的框圖。圖9是由圖8的實時內(nèi)核的實施例響應(yīng)于請求至虛擬區(qū)域的連接的實時內(nèi)核API調(diào)用而實現(xiàn)的方法的實施例的流程圖。圖10是由圖8的實時內(nèi)核的實施例響應(yīng)于請求進入虛擬區(qū)域的實時內(nèi)核API調(diào)用而實現(xiàn)的方法的實施例的流程圖。圖11是由圖8的實時內(nèi)核的實施例響應(yīng)于從區(qū)域服務(wù)接收的流處置指令而實現(xiàn)的方法的實施例的流程圖。圖12是由流處理機配置管理器創(chuàng)建的流處理機的實施例的框圖。圖13是由圖8的實時內(nèi)核的實施例在調(diào)度由實時內(nèi)核執(zhí)行的任務(wù)的過程中實現(xiàn)的方法的實施例的流程圖。圖14是由圖8的實時內(nèi)核的實施例基于對至少一個實時數(shù)據(jù)流的處理的監(jiān)視而實現(xiàn)的方法的實施例的流程圖。圖15是圖8的實時內(nèi)核的實施例的框圖。圖16是通過帳戶服務(wù)器的憑證來認(rèn)證帳戶服務(wù)器的方法的實施例的流程圖。圖17是由圖8的實時內(nèi)核的實施例的加載器組件實現(xiàn)的方法的實施例的流程圖。圖18是由圖8的實時內(nèi)核的實施例的STRAW服務(wù)組件實現(xiàn)的會話管理方法的實施例的流程圖。圖19是由圖8的實時內(nèi)核的實施例的組件響應(yīng)于從區(qū)域網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)接收的遠程流處置指令而實現(xiàn)的方法的實施例的流程圖。圖20是由圖8的實時內(nèi)核的實施例的STRAW服務(wù)組件實現(xiàn)的傳輸協(xié)議組件的圖示。圖21示出在客戶端網(wǎng)絡(luò)節(jié)點344和服務(wù)器346之間建立服務(wù)器流的方法的實施例。參照圖22,每個會話由發(fā)起服務(wù)器生成的新GUID所標(biāo)識。圖23示出四通信者音頻處理圖的示例性實施例的元素。圖24示出使人們能經(jīng)由基于非虛擬區(qū)域的通信應(yīng)用與虛擬區(qū)域通信者通信的計算機系統(tǒng)的實施例。圖25示出插件類等級的實施例的圖示。圖26是插件基類的集合的實施例的圖示,其中每個插件基類與相應(yīng)的一個或更多個導(dǎo)出變量類的集合相關(guān)聯(lián)。圖27是插件架構(gòu)的實施例的框圖。圖28是包括插件管理器、包含一組插件容器的插件目錄、插件數(shù)據(jù)庫、以及調(diào)用程序的插件架構(gòu)的實施例的框圖。圖29是由圖28的插件管理器的實施例在客戶端網(wǎng)絡(luò)節(jié)點上登記可用插件的過程中實現(xiàn)的方法的實施例的流程圖。圖30是插件數(shù)據(jù)庫的實施例的圖示。圖31是由圖28的插件管理器的實施例響應(yīng)于收到來自調(diào)用程序的API調(diào)用而實現(xiàn)的方法的實施例的流程圖。發(fā)明詳細描述在以下描述中,相同的附圖標(biāo)記被用于標(biāo)識相同的元素。此外,附圖旨在以圖解方式解說示例性實施例的主要特征。附圖并不旨在描繪實際實施例的每個特征以及所描繪元件的相對尺寸,且并不是按比例繪制的。I.術(shù)語定義“計算機”是根據(jù)臨時或永久地存儲在計算機可讀介質(zhì)上的計算機可讀指令來處理數(shù)據(jù)的任何機器、設(shè)備、或裝置?!坝嬎銠C操作系統(tǒng)”是管理和協(xié)調(diào)任務(wù)執(zhí)行以及軟件和硬件資源共享的計算機的軟件組件?!皟?nèi)核”是可由軟件應(yīng)用調(diào)用以提供用于訪問計算機資源(例如,CPU、存儲器、網(wǎng)絡(luò)鏈路、以及外圍資源)的特定功能的軟件組件的集合?!败浖?yīng)用”(也稱為軟件、應(yīng)用、計算機軟件、計算機應(yīng)用、程序、以及計算機程序)是計算機能解讀并執(zhí)行以執(zhí)行一個或更多個任務(wù)的指令集?!皯?yīng)用編程接口”(或API)是操作系統(tǒng)、庫、或服務(wù)提供以支持軟件應(yīng)用作出的請求的功能(或規(guī)程)聲明集。API指定一接口以及該接口中指定的標(biāo)識符的行為。API的實現(xiàn)指提供該API描述的功能性的軟件應(yīng)用代碼。“計算機數(shù)據(jù)文件”是持久存儲數(shù)據(jù)以供軟件應(yīng)用使用的信息塊?!胺?wù)”是自主地執(zhí)行任務(wù)的過程(獨立于其他過程)?!肮芾砥鳌笔欠?wù)執(zhí)行任務(wù)的網(wǎng)關(guān)。管理器不自主地執(zhí)行任務(wù)?!皵?shù)據(jù)庫”是以標(biāo)準(zhǔn)化格式呈現(xiàn)的能夠被計算機搜索的記錄的組織化集合。數(shù)據(jù)庫可被存儲在單臺計算機上的單個計算機可讀數(shù)據(jù)存儲介質(zhì)上,或者可以跨一臺或更多臺計算機上的多個計算機可讀數(shù)據(jù)存儲介質(zhì)分布?!皵?shù)據(jù)阱”(本文中簡稱為“阱”)是接收數(shù)據(jù)的設(shè)備、設(shè)備(例如,計算機)的一部分、或軟件中的任一者?!皵?shù)據(jù)源”(本文中簡稱為“源”)是始發(fā)數(shù)據(jù)的設(shè)備、設(shè)備(例如,計算機)的一部分、或軟件中的任一者?!熬W(wǎng)絡(luò)節(jié)點”(也被簡稱作“節(jié)點”)是通信網(wǎng)絡(luò)中的接合點或連接點。示例性網(wǎng)絡(luò)節(jié)點包括但不限于終端、計算機、以及網(wǎng)絡(luò)交換機?!胺?wù)器網(wǎng)絡(luò)節(jié)點”是網(wǎng)絡(luò)上對信息或服務(wù)請求進行響應(yīng)的主計算機。“客戶端網(wǎng)絡(luò)節(jié)點”是網(wǎng)絡(luò)上向服務(wù)器請求信息或服務(wù)的計算機?!熬W(wǎng)絡(luò)連接”是兩個通信網(wǎng)絡(luò)節(jié)點之間的鏈路。術(shù)語“本地網(wǎng)絡(luò)節(jié)點”是指當(dāng)前為首要討論主體的網(wǎng)絡(luò)節(jié)點。術(shù)語“遠程網(wǎng)絡(luò)節(jié)點”是指通過網(wǎng)絡(luò)通信鏈路連接至本地網(wǎng)絡(luò)節(jié)點的網(wǎng)絡(luò)節(jié)點?!按嬖谛浴笔侵嘎?lián)網(wǎng)實體(例如,通信者、服務(wù)、或設(shè)備)進行通信的能力或意愿,其中此類意愿影響在網(wǎng)絡(luò)上檢測和獲得關(guān)于該實體的狀態(tài)的信息的能力以及連接到該實體的能力?!皩崟r數(shù)據(jù)流”是以連續(xù)流的形式進行結(jié)構(gòu)化和處理并且被設(shè)計成無延遲或者只有察覺不到的延遲地接收的數(shù)據(jù)。實時數(shù)據(jù)流包括語音、視頻、用戶移動、面部表情及其他物理現(xiàn)象的數(shù)字表示,以及計算環(huán)境內(nèi)可得益于迅速傳輸、迅速執(zhí)行、或迅速傳輸和迅速執(zhí)行兩者的數(shù)據(jù),包括例如化身移動指令、文本聊天、實時數(shù)據(jù)饋送(例如,傳感器數(shù)據(jù)、機器控制指令、交易流以及股價信息饋送)、以及文件傳遞?!傲骰旌稀笔窍嗤蛘Z義上一致的類型(例如,音頻、視頻、聊天、和運動數(shù)據(jù))的兩個或更多個實時數(shù)據(jù)流的組合。例如,一組語音流可被混合成單個語音流,或語音流可被混合到視頻流的音頻部分中?!伴_關(guān)規(guī)則”是遵照一個或多個條件先例指定一個或多個實時數(shù)據(jù)源與一個或多個實時數(shù)據(jù)阱的連接或斷開連接的指令?!疤摂M區(qū)域”(也被稱作“區(qū)域”或“地方”)是由計算機管理的空間或場景的表示。虛擬區(qū)域通常是一維、二維、或三維的表示;盡管在一些實施例中虛擬區(qū)域也可對應(yīng)于單個點。虛擬區(qū)域經(jīng)常被設(shè)計成模擬物理的真實世界空間。例如,使用傳統(tǒng)的計算機監(jiān)視器,虛擬區(qū)域可被可視化為由計算機生成的三維空間的二維圖形。然而,虛擬區(qū)域并不要求相關(guān)聯(lián)的可視化就能實現(xiàn)開關(guān)規(guī)則。虛擬區(qū)域通常是指虛擬區(qū)域模式的實例,其中模式以變量的方式定義虛擬區(qū)域的結(jié)構(gòu)和內(nèi)容,而實例以已從特定上下文求解出的值的方式來定義虛擬區(qū)域的結(jié)構(gòu)和內(nèi)容?!疤摂M區(qū)域應(yīng)用”(也被稱作“虛擬區(qū)域描述”)是在創(chuàng)建虛擬區(qū)域通信環(huán)境時使用的虛擬區(qū)域的描述。虛擬區(qū)域應(yīng)用通常包括對與虛擬區(qū)域的一個或多個地帶相關(guān)聯(lián)的幾何學(xué)、物理學(xué)、以及實時開關(guān)規(guī)則的定義。“虛擬通信環(huán)境”是包括至少一個虛擬區(qū)域并且支持通信者之間的實時通信的由計算機管理的空間的表示?!暗貛А笔翘摂M區(qū)域中與至少一個開關(guān)規(guī)則或支配規(guī)則相關(guān)聯(lián)的區(qū)劃。開關(guān)規(guī)則控制在虛擬區(qū)域的上下文中通信的網(wǎng)絡(luò)節(jié)點之間的實時數(shù)據(jù)流的開關(guān)(例如,路由、連接、和斷開連接)。支配規(guī)則控制通信者對資源(例如,區(qū)域、區(qū)域的區(qū)劃、或該區(qū)域或區(qū)劃的內(nèi)容)的訪問,該訪問的范圍、以及該訪問的后繼結(jié)果(例如,必須記錄關(guān)于該訪問的審計記錄的要求)。虛擬區(qū)域中的“位置”是指該虛擬區(qū)域中的點或面積或體積的位置。點通常是由定義虛擬區(qū)域中的點的一維、二維、或三維坐標(biāo)(例如,x、y、z)單個集合表示的。面積通常由定義虛擬區(qū)域中閉合的二維形狀的邊界的三個或更多個共面頂點的三維坐標(biāo)來表示的。體積通常由定義虛擬區(qū)域中的三維形狀的閉合邊界的四個或更多個非共面的頂點的三維坐標(biāo)來表示。在虛擬區(qū)域的上下文中,“對象”是虛擬區(qū)域中可被有效對待且與虛擬區(qū)域的幾何形狀無關(guān)的離散要素。示例性的對象包括門、門戶、窗、查看屏、以及擴音器。對象通常具有與虛擬區(qū)域的屬性和特性分離且不同的屬性和特性?!盎怼笔翘摂M區(qū)域中代表通信者的對象?!巴ㄐ耪摺笔窃诰W(wǎng)絡(luò)連接上與其他人通信或以其他方式交互的人,其中該通信或交互可以或者也可以不發(fā)生在虛擬區(qū)域的上下文中?!坝脩簟笔钦诓僮鞒鲇诿枋鲂阅康亩x了一特定觀點的特定網(wǎng)絡(luò)節(jié)點的通信者?!皡^(qū)域服務(wù)器”是包括區(qū)域網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)的網(wǎng)絡(luò)節(jié)點,該區(qū)域網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)通過管理與虛擬區(qū)域中的對象相關(guān)聯(lián)的客戶端節(jié)點的會話來管理主存虛擬區(qū)域應(yīng)用的虛擬區(qū)域。如本文所使用,術(shù)語“包括”意指包括但不限于,且“包含”意指包含但不限于。II.引言本文描述的實施例提供支持在相應(yīng)網(wǎng)絡(luò)節(jié)點上操作的通信者之間的實時通信的實時內(nèi)核。該實時內(nèi)核處置連接到通信者、虛擬區(qū)域、以及其他網(wǎng)絡(luò)資源、響應(yīng)于用戶輸入開關(guān)這些連接、以及混合實時數(shù)據(jù)流的復(fù)雜任務(wù)。實時內(nèi)核使開發(fā)者能夠?qū)W⒂陂_發(fā)高級通信功能而非低級銜接代碼。實時內(nèi)核施加相對低的計算資源要求,從而實時通信性能可使用當(dāng)前可用的寬泛計算設(shè)備和網(wǎng)絡(luò)連接來達成。在一些實施例中,實時內(nèi)核支持響應(yīng)于從遠程主存的虛擬區(qū)域應(yīng)用接收的指令(也稱為定義)來遠程配置和執(zhí)行音頻和圖形呈現(xiàn)引擎、以及開關(guān)實時數(shù)據(jù)流。這樣,實時內(nèi)核使得虛擬區(qū)域設(shè)計者能維持對遠程客戶端網(wǎng)絡(luò)節(jié)點上的沉浸性虛擬通信環(huán)境的呈現(xiàn)的控制,由此鼓勵開發(fā)眾多不同類型的虛擬區(qū)域并增加將希望采用該通信系統(tǒng)的用戶的數(shù)量。在一些實施例中,實時內(nèi)核監(jiān)視實時數(shù)據(jù)流的處理并基于該處理與性能目標(biāo)的偏差適配該處理。這樣,無論其中正執(zhí)行實時數(shù)據(jù)流處理的計算環(huán)境如何,內(nèi)核增加了實時性能能夠達成的可能性。在一些實施例中,實時內(nèi)核實現(xiàn)在連接和斷開連接、以及在傳輸時高效的流傳輸協(xié)議。在這樣一些實施例中,流傳輸協(xié)議在無連接傳輸協(xié)議(例如,UDP)上提供面向連接的加密連接。實時內(nèi)核另外在客戶端應(yīng)用和傳輸層之間提供重連機制,該重連機制自動嘗試重新建立失敗了的連接而無需客戶端應(yīng)用的干預(yù),由此在固有不可靠的通信協(xié)議上增加了可靠性。在一些實施例中,實時內(nèi)核具有插件架構(gòu),該插件架構(gòu)允許由一個或更多個可被動態(tài)加載到客戶端網(wǎng)絡(luò)節(jié)點上的插件提供內(nèi)核組件的功能性。這樣,內(nèi)核組件可被獨立開發(fā)并被遠程管理和更新。插件架構(gòu)另外允許實時內(nèi)核的安裝覆蓋區(qū)域?qū)嵸|(zhì)上減小,由此允許內(nèi)核被安裝在寬泛的包括那些具有顯著計算和存儲資源限制的客戶端設(shè)備上。III.概覽A.引言圖1示出了包括由網(wǎng)絡(luò)18互連的第一客戶端網(wǎng)絡(luò)節(jié)點12、第二客戶端網(wǎng)絡(luò)節(jié)點14、和區(qū)域服務(wù)器網(wǎng)絡(luò)節(jié)點16的示例性虛擬區(qū)域通信環(huán)境10的實施例。第一客戶端網(wǎng)絡(luò)節(jié)點12包括包含一個或更多個可配置的流處理機22的實時內(nèi)核20的實施例、以及輸入/輸出(I/O)硬件24。第二客戶端網(wǎng)絡(luò)節(jié)點14通常以與第一客戶端網(wǎng)絡(luò)節(jié)點12基本相同的方式進行配置。區(qū)域服務(wù)器網(wǎng)絡(luò)節(jié)點16包括通過管理虛擬區(qū)域28中第一和第二客戶端節(jié)點12、14的會話來管理虛擬區(qū)域28的區(qū)域網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)26(也簡稱為“區(qū)域服務(wù)”)。虛擬區(qū)域28主存包括用于創(chuàng)建虛擬區(qū)域通信環(huán)境的虛擬區(qū)域的描述的虛擬區(qū)域應(yīng)用30。區(qū)域服務(wù)26根據(jù)虛擬區(qū)域應(yīng)用30來管理虛擬區(qū)域28。在創(chuàng)建共享虛擬區(qū)域通信環(huán)境的過程中,區(qū)域服務(wù)26根據(jù)遠程虛擬區(qū)域應(yīng)用30受虛擬區(qū)域應(yīng)用30上的一組限制32影響地遠程配置第一和第二客戶端網(wǎng)絡(luò)節(jié)點12、14中的實時內(nèi)核。限制32通常包括對訪問虛擬區(qū)域的控制。訪問控制一般基于一個或更多個能力(其中對具有適當(dāng)能力或許可的通信者或客戶端節(jié)點準(zhǔn)許訪問)和訪問控制列表(其中對具有列表上的身份的通信者或客戶端節(jié)點準(zhǔn)許訪問)。在一些實施例中,限制32由安全網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)所管理(在以下描述)。在第一和第二客戶端網(wǎng)絡(luò)節(jié)點12、14上操作的客戶端軟件應(yīng)用允許通信者訪問共享虛擬區(qū)域通信環(huán)境,這通過根據(jù)經(jīng)由實時內(nèi)核20從區(qū)域服務(wù)26接收的數(shù)據(jù)呈現(xiàn)虛擬區(qū)域的相應(yīng)視圖以及通過提供用于從通信者接收命令的接口來實現(xiàn)。通信者通常在虛擬區(qū)域32中由相應(yīng)的化身來表示,這些化身響應(yīng)于由通信者在其相應(yīng)的網(wǎng)絡(luò)節(jié)點處輸入的命令而在虛擬區(qū)域中四處移動。每個通信者看到的虛擬區(qū)域的視圖通常是從該通信者的化身的角度來呈現(xiàn)的,這增強了通信者體驗到的沉浸感級別。每個通信者通常能夠看到在他或她的化身周圍的任何虛擬區(qū)域部分。在第一和第二客戶端網(wǎng)絡(luò)節(jié)點12、14上操作的實時內(nèi)核至少部分地基于虛擬區(qū)域中通信者的化身的位置來建立與共享該虛擬區(qū)域通信環(huán)境的其他網(wǎng)絡(luò)節(jié)點的實時數(shù)據(jù)流連接。圖2示出了由實時內(nèi)核20實現(xiàn)的方法的示例性實施例。根據(jù)該方法,實時內(nèi)核20建立與區(qū)域服務(wù)26的會話(圖2,框34)。無論響應(yīng)于通信者輸入還是自動地,實時內(nèi)核20請求進入虛擬區(qū)域28的實例(圖2,框36)。如果對通信者訪問虛擬區(qū)域?qū)嵗南拗?2得到滿足,則區(qū)域服務(wù)26向?qū)崟r內(nèi)核20傳送包括當(dāng)前狀態(tài)信息的配置數(shù)據(jù),其中當(dāng)前狀態(tài)信息包括虛擬區(qū)域中化身的位置。實時內(nèi)核20從區(qū)域服務(wù)26接收配置數(shù)據(jù)(圖2,框38)。實時內(nèi)核20根據(jù)從區(qū)域服務(wù)26接收的指令來配置I/O硬件24以呈現(xiàn)人類可感知的虛擬區(qū)域通信者環(huán)境(圖2,框40)。在一些實施例中,配置I/O硬件24的過程涉及根據(jù)從遠程網(wǎng)絡(luò)節(jié)點14接收的指令和位置數(shù)據(jù)動態(tài)配置至少一個流處理機22。例如,虛擬區(qū)域應(yīng)用30可指定一個或更多個應(yīng)被應(yīng)用于與虛擬區(qū)域中當(dāng)前的對象相關(guān)聯(lián)的音頻流的音頻效果,在這種情況下,區(qū)域服務(wù)26向在第一和第二客戶端網(wǎng)絡(luò)節(jié)點12、14上執(zhí)行的實時內(nèi)核發(fā)送指令,該指令根據(jù)虛擬區(qū)域中相應(yīng)對象的位置來配置其相應(yīng)音頻流處理機以實現(xiàn)指定的效果。實時內(nèi)核20通過每個配置的流處理機22處理與通信者對象相關(guān)聯(lián)的實時數(shù)據(jù)流以產(chǎn)生相應(yīng)輸出33。取決于其內(nèi)容,輸出33可被存儲在計算機可讀介質(zhì)上或由在第一和第二網(wǎng)絡(luò)節(jié)點12、14上操作的I/O硬件轉(zhuǎn)換成人類可感知的輸出。例如,音頻輸出信號由音頻硬件(例如,聲卡和揚聲器)轉(zhuǎn)換成可聽的聲音,而圖形輸出信號由圖形硬件(例如,視頻卡和顯示器)轉(zhuǎn)換成可見的圖像。在一些實施例中,由至少一個流處理機22產(chǎn)生的輸出33被一個或更多個下游軟件組件處理,該下游軟件組件依次產(chǎn)生可被存儲在計算機可讀介質(zhì)上或被轉(zhuǎn)換成人類可感知的輸出的輸出。B.示例性操作環(huán)境實時內(nèi)核20在虛擬區(qū)域通信環(huán)境10的上下文中操作,虛擬區(qū)域通信環(huán)境10包括網(wǎng)絡(luò)18和網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)環(huán)境,后者包括包含區(qū)域服務(wù)26的若干網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)。實時內(nèi)核20和網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)環(huán)境構(gòu)成用于為通信者創(chuàng)建虛擬區(qū)域通信環(huán)境的平臺。1.網(wǎng)絡(luò)環(huán)境網(wǎng)絡(luò)18可包括局域網(wǎng)(LAN)、城域網(wǎng)(MAN)、以及廣域網(wǎng)(WAN)(例如,因特網(wǎng))的任一者。網(wǎng)絡(luò)18通常包括若干支持網(wǎng)絡(luò)節(jié)點之間的各種不同媒體類型(例如,文本、語音、音頻、和視頻)的傳輸?shù)挠嬎闫脚_和傳輸設(shè)施。實時內(nèi)核20通常在包括軟件和硬件資源的網(wǎng)絡(luò)節(jié)點上操作,該軟件和硬件資源與管理性策略、用戶偏好(包括關(guān)于用戶存在性的出口以及用戶至區(qū)域和連接對象的連接的偏好)、以及其他設(shè)置一起來定義影響與其他網(wǎng)絡(luò)節(jié)點的實時連接的管理的本地配置。網(wǎng)絡(luò)節(jié)點之間的網(wǎng)絡(luò)連接可安排在各種不同的流處置拓?fù)渲?,包括對等架?gòu)、服務(wù)器仲裁架構(gòu)、以及組合了對等和服務(wù)器仲裁架構(gòu)的各方面的混合架構(gòu)。圖3A示出虛擬區(qū)域通信環(huán)境10的實施例42,其中第一和第二網(wǎng)絡(luò)節(jié)點12、14以及遠程網(wǎng)絡(luò)節(jié)點16由對等架構(gòu)的通信網(wǎng)絡(luò)18互連。在此架構(gòu)中,網(wǎng)絡(luò)節(jié)點12-16的每一個向其他網(wǎng)絡(luò)節(jié)點的每一個傳送狀態(tài)變化(例如,虛擬區(qū)域28中的化身運動)。網(wǎng)絡(luò)節(jié)點之一(通常為發(fā)起通信會話的網(wǎng)絡(luò)節(jié)點)作為“區(qū)域服務(wù)器”操作。在所解說的實施例中,網(wǎng)絡(luò)節(jié)點16承擔(dān)了區(qū)域服務(wù)器的角色。區(qū)域服務(wù)器網(wǎng)絡(luò)節(jié)點16維護全局狀態(tài)信息并用作其他網(wǎng)絡(luò)節(jié)點12、14的數(shù)據(jù)服務(wù)器。全局狀態(tài)信息包括虛擬區(qū)域中的所有對象的列表及其在虛擬區(qū)域中的相應(yīng)位置。區(qū)域服務(wù)器網(wǎng)絡(luò)節(jié)點16發(fā)送配置其他網(wǎng)絡(luò)節(jié)點12、14的指令。區(qū)域服務(wù)器網(wǎng)絡(luò)節(jié)點16也登記并向請求加入通信會話的其他網(wǎng)絡(luò)節(jié)點傳送初始化信息。在此過程中,區(qū)域服務(wù)器網(wǎng)絡(luò)節(jié)點16根據(jù)虛擬區(qū)域應(yīng)用30向每個加入的客戶端網(wǎng)絡(luò)節(jié)點傳送在客戶端網(wǎng)絡(luò)節(jié)點上呈現(xiàn)虛擬區(qū)域28所需的組件(例如,插件)的列表??蛻舳司W(wǎng)絡(luò)節(jié)點12、14上的實時內(nèi)核通常從遠程服務(wù)器(例如,插件服務(wù)器)檢索列表上的任何缺失的組件。區(qū)域服務(wù)器網(wǎng)絡(luò)節(jié)點16也確保若發(fā)生通信故障,其他網(wǎng)絡(luò)節(jié)點12、14能同步到全局狀態(tài)。圖3B示出虛擬區(qū)域通信環(huán)境10的實施例44,其中網(wǎng)絡(luò)節(jié)點12-16(在此架構(gòu)中也稱為“區(qū)域客戶端”網(wǎng)絡(luò)節(jié)點)在由區(qū)域服務(wù)器46仲裁的架構(gòu)中通信。在此實施例中,區(qū)域服務(wù)器46承擔(dān)在圖3A所示的對等架構(gòu)實施例中由網(wǎng)絡(luò)節(jié)點16執(zhí)行的區(qū)域服務(wù)器功能。這樣,區(qū)域服務(wù)器46維護全局狀態(tài)信息并用作區(qū)域客戶端網(wǎng)絡(luò)節(jié)點12-16的數(shù)據(jù)服務(wù)器。該架構(gòu)允許將在各種拓?fù)?包括對等拓?fù)?、其中區(qū)域服務(wù)器46作為網(wǎng)絡(luò)節(jié)點12-16之間的通信代理操作的全服務(wù)器仲裁拓?fù)?、以及組合了對等拓?fù)浜腿?wù)器仲裁拓?fù)涞母鞣矫娴幕旌贤負(fù)?中處理的區(qū)域客戶端節(jié)點12-16之間的實時數(shù)據(jù)流交換。這些類型的示例性拓?fù)湓诿绹暾執(zhí)枮?1/923,629和11/923,634的申請中描述,兩者都在2007年10月24日提交。2.網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)在建立和管理與其他網(wǎng)絡(luò)節(jié)點的網(wǎng)絡(luò)連接的過程中,一個或更多個網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)通常與實時內(nèi)核20協(xié)作。網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)可運行在單個網(wǎng)絡(luò)節(jié)點上或可跨多個網(wǎng)絡(luò)節(jié)點分布。網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)通常運行在一個或更多個專用的網(wǎng)絡(luò)節(jié)點上(例如,執(zhí)行諸如路由和交換等邊緣服務(wù)的服務(wù)器計算機或網(wǎng)絡(luò)設(shè)備)。然而,在一些實施例中,一個或更多個網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)運行在至少一個通信者網(wǎng)絡(luò)節(jié)點上。虛擬區(qū)域通信環(huán)境10的示例性實施例中所包括的網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)有帳戶服務(wù)、安全性服務(wù)、區(qū)域服務(wù)26、集合服務(wù)、以及交互服務(wù)等。帳戶服務(wù)管理網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)環(huán)境中的通信者帳戶。帳戶服務(wù)也管理可由客戶端網(wǎng)絡(luò)節(jié)點用于向任何網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)認(rèn)證它們自己的認(rèn)證令牌的創(chuàng)建和發(fā)出。安全性服務(wù)控制通信者對虛擬區(qū)域通信環(huán)境10的資產(chǎn)和其他資源的訪問。由安全性服務(wù)實現(xiàn)的訪問控制方法通常基于一個或更多個能力(其中對具有適當(dāng)能力或許可的實體準(zhǔn)許訪問)和訪問控制列表(其中對具有列表上的身份的實體準(zhǔn)許訪問)。在已經(jīng)準(zhǔn)許特定通信者訪問資源后,該通信者通常使用由其他網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)提供的功能性在虛擬區(qū)域通信環(huán)境10中交互。區(qū)域服務(wù)26管理虛擬區(qū)域。在此過程中,區(qū)域服務(wù)26根據(jù)請求實體的能力來管理與虛擬區(qū)域相關(guān)聯(lián)的連接、維護虛擬區(qū)域的全局狀態(tài)信息、以及用作參與由虛擬區(qū)域定義的上下文中的共享通信會話的客戶端網(wǎng)絡(luò)節(jié)點的數(shù)據(jù)服務(wù)器。全局狀態(tài)信息包括虛擬區(qū)域中的所有對象的列表及其在虛擬區(qū)域中的相應(yīng)位置。區(qū)域服務(wù)26發(fā)送配置客戶端網(wǎng)絡(luò)節(jié)點的指令。區(qū)域服務(wù)26也登記并向請求加入通信會話的其他客戶端網(wǎng)絡(luò)節(jié)點傳送初始化信息。在此過程中,區(qū)域服務(wù)26根據(jù)虛擬區(qū)域應(yīng)用30向每個加入的客戶端網(wǎng)絡(luò)節(jié)點傳送在客戶端網(wǎng)絡(luò)節(jié)點上呈現(xiàn)虛擬區(qū)域28所需的組件(例如,插件)的列表。區(qū)域服務(wù)26也確保若發(fā)生通信故障,客戶端網(wǎng)絡(luò)節(jié)點能同步到全局狀態(tài)。集合服務(wù)根據(jù)請求實體的能力來管理存在性信息的收集、存儲和分發(fā)并為網(wǎng)絡(luò)節(jié)點提供用于彼此通信的機制(例如,通過管理連接句柄的分發(fā))。集合服務(wù)通常在存在性數(shù)據(jù)庫中存儲存在性信息。交互服務(wù)根據(jù)請求實體的能力來維護記錄通信者之間的交互的交互數(shù)據(jù)庫并支持對交互數(shù)據(jù)庫的查詢。對通信者之間的每個交互,虛擬區(qū)域通信環(huán)境10中的一個或更多個服務(wù)(例如區(qū)域服務(wù)26)向交互服務(wù)傳送交互數(shù)據(jù)。作為響應(yīng),交互服務(wù)在關(guān)系數(shù)據(jù)庫中生成一個或更多個相應(yīng)交互記錄。每個交互記錄描述交互的上下文。例如,在一些實施例中,交互記錄包含每個通信者的標(biāo)識符、交互場所的標(biāo)識符(例如,虛擬區(qū)域?qū)嵗?、交互場所的等級的描述(例如描述交互空間如何與較大區(qū)域相關(guān))、交互的起始和結(jié)束時間、以及在交互期間共享的所有文件和其他流的列表。因此,對于每個實時交互,交互服務(wù)跟蹤其在何時發(fā)生,在何處發(fā)生、以及在交互期間就所涉及的通信者而言發(fā)生了什么(例如,進入和退出)、被激活/禁用的對象、以及共享的文件。交互服務(wù)能基于場所以分類次序(例如,最頻繁的或最近的)呈現(xiàn)對交互數(shù)據(jù)庫記錄的查詢結(jié)果。查詢結(jié)果能被用于導(dǎo)出通信者已經(jīng)在哪些虛擬區(qū)域內(nèi)遇到的聯(lián)系人的頻率分類,以及不論虛擬區(qū)域通信者已經(jīng)遇到的聯(lián)系人的分類、以及通信者最經(jīng)常出入的虛擬區(qū)域的分類。查詢結(jié)果還可被應(yīng)用開發(fā)者用作基于關(guān)系使某些任務(wù)自動化的啟發(fā)式系統(tǒng)的一部分。此類型的啟發(fā)的示例是允許已經(jīng)到訪特定虛擬區(qū)域超過5次的通信者不必經(jīng)默認(rèn)的敲門就能進入的啟發(fā),或者是允許在特定時間存在于一區(qū)域中的通信者修改和刪除由在相同時間存在于相同區(qū)域中的另一通信者創(chuàng)建的文件的啟發(fā)。對交互數(shù)據(jù)庫的查詢可與其他搜索相組合。例如,對交互數(shù)據(jù)庫的查詢可與針對使用在網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)環(huán)境的域之外的通信系統(tǒng)(例如,Skype、Facebook、以及Flickr)與聯(lián)系人交互而生成的聯(lián)系歷史數(shù)據(jù)的查詢相組合。3.虛擬區(qū)域?qū)崟r內(nèi)核20管理由虛擬區(qū)域的實例定義的通信上下文中與網(wǎng)絡(luò)節(jié)點的實時連接。虛擬區(qū)域?qū)嵗蓪?yīng)關(guān)于抽象坐標(biāo)所定義的抽象(非幾何)虛擬空間。替換地,虛擬區(qū)域?qū)嵗蓪?yīng)關(guān)于與特定可視化相關(guān)聯(lián)的一維、二維、或三維幾何坐標(biāo)所定義的視覺虛擬空間。抽象虛擬區(qū)域可以與相應(yīng)可視化相關(guān)聯(lián)或者也可不相關(guān)聯(lián),而視覺虛擬區(qū)域與相應(yīng)可視化相關(guān)聯(lián)。如上所解釋的,通信者通常在具有相關(guān)聯(lián)的可視化的虛擬區(qū)域中由相應(yīng)的化身來表示?;眄憫?yīng)于由通信者在其各自相應(yīng)的網(wǎng)絡(luò)節(jié)點處輸入的輸入命令在虛擬區(qū)域中四處移動。通信者看到的具有相關(guān)聯(lián)的可視化的虛擬區(qū)域?qū)嵗囊晥D通常是從該通信者的化身的觀點呈現(xiàn)的,且每個通信者通常能夠觀看到他或她的化身周圍的任何視覺虛擬區(qū)域部分,從而增強了通信者體驗到的沉浸感級別。圖4示出了由計算機系統(tǒng)48實現(xiàn)的示例性網(wǎng)絡(luò)節(jié)點的實施例。計算機系統(tǒng)48包括顯示監(jiān)視器50、計算機鼠標(biāo)52、鍵盤554、揚聲器56、58、以及話筒60。顯示監(jiān)視器50顯示圖形用戶界面62。圖形用戶界面62是基于窗口的圖形用戶界面,其可包括多個窗口、圖標(biāo)、和指針64。在所解說的實施例中,圖形用戶界面62呈現(xiàn)對與表示藝?yán)鹊娜S可視化相關(guān)聯(lián)的共享虛擬區(qū)域66的二維描繪。通信者在該虛擬區(qū)域66中由各自相應(yīng)的化身68、70、72來表示,每個化身可在該虛擬區(qū)域66的上下文中具有各自相應(yīng)的角色(例如,館長、藝術(shù)家、和游客)。如以下詳細解釋的,虛擬區(qū)域66包括與支配在虛擬區(qū)域66中由化身68-72表示的網(wǎng)絡(luò)節(jié)點間的實時數(shù)據(jù)流開關(guān)的相應(yīng)規(guī)則相關(guān)聯(lián)的地帶74、76、78、80、82。(在典型的通信會話期間,圖4中劃界出地帶74-82的虛線對于通信者而言是不可見的,盡管可以有與此類地帶邊界相關(guān)聯(lián)的視覺線索。)開關(guān)規(guī)則規(guī)定在每一個網(wǎng)絡(luò)節(jié)點上執(zhí)行的本地連接過程如何基于通信者的化身68-72在虛擬區(qū)域66的地帶74-82中的位置來建立與其他網(wǎng)絡(luò)節(jié)點的通信。虛擬區(qū)域由包括對該虛擬區(qū)域的幾何要素的描述以及一個或多個規(guī)則(包括開關(guān)規(guī)則和支配規(guī)則)的規(guī)范來定義。開關(guān)規(guī)則支配網(wǎng)絡(luò)節(jié)點之間的實時流連接。支配規(guī)則控制通信者對諸如虛擬區(qū)域本身、具有虛擬區(qū)域的區(qū)劃、以及虛擬區(qū)域內(nèi)的對象之類的資源的訪問。在一些實施例中,虛擬區(qū)域的幾何要素根據(jù)COLLADA–DigitalAssetSchemaRelease1.4.1April2006specification(2006年4月數(shù)字資產(chǎn)計劃版本1.4.1規(guī)范,可從http://www.khronos.org/collada/得到)進行了描述,而開關(guān)規(guī)則根據(jù)在美國申請?zhí)?1/923,629和11/923,634中描述的COLLADA流參考規(guī)范使用可擴展標(biāo)記語言(XML)文本格式(在本文稱作虛擬空間描述格式(VSDL))進行了描述。虛擬區(qū)域的幾何要素通常包括虛擬區(qū)域的物理幾何和碰撞幾何。物理幾何描述虛擬區(qū)域的形狀。物理幾何通常由三角形、四邊形、或多邊形的表面形成。顏色和紋理被映射到物理幾何上以創(chuàng)建虛擬區(qū)域的更真實表觀。例如可通過在視覺幾何上描繪光線并修改光線附近的紋理、顏色、或亮度來提供光照效果。碰撞幾何描述確定對象可在虛擬區(qū)域中移動的方式的不可見表面。碰撞幾何可與視覺幾何一致、對應(yīng)于視覺幾何的更簡單的近似、或者與對虛擬區(qū)域設(shè)計者的因應(yīng)用而異的要求有關(guān)。開關(guān)規(guī)則通常包括對用于按照虛擬區(qū)域中的位置來連接實時數(shù)據(jù)流的源和阱的條件的描述。每個規(guī)則通常包括定義該規(guī)則所適用的實時數(shù)據(jù)流類型以及該規(guī)則在該虛擬區(qū)域中所適用的(諸)位置的屬性。在一些實施例中,每個規(guī)則任選地可包括指定源的所要求角色、阱的所要求角色、流的優(yōu)先級別、和所請求的流處置拓?fù)涞囊粋€或多個屬性。在一些實施例中,如果沒有為虛擬區(qū)域的特定部分定義的顯式開關(guān)規(guī)則,則可向虛擬區(qū)域的該部分應(yīng)用一個或多個隱式或缺省開關(guān)規(guī)則。一個示例性缺省開關(guān)規(guī)則是依照策略規(guī)則將區(qū)域內(nèi)的每個源連接至每個相兼容的阱的規(guī)則。策略規(guī)則可全局地適用于區(qū)域客戶端之間的所有連接、或者僅適用于與個體區(qū)域客戶端的相應(yīng)連接。策略規(guī)則的示例是接近度策略規(guī)則,該規(guī)則僅允許與虛擬區(qū)域中彼此在規(guī)定距離(或半徑)內(nèi)的相應(yīng)對象相關(guān)聯(lián)的源和兼容阱的連接。在一些實施例中,支配規(guī)則與虛擬區(qū)域相關(guān)聯(lián)以控制誰能訪問該虛擬區(qū)域、誰能訪問其內(nèi)容、對該虛擬區(qū)域的內(nèi)容的訪問的范圍是什么(例如,用戶關(guān)于該內(nèi)容能做什么)、以及訪問這些內(nèi)容的后繼結(jié)果是什么(例如,記錄保持,諸如審計日志、和支付要求)。在一些實施例中,整個虛擬區(qū)域或該虛擬區(qū)域的地帶與“支配網(wǎng)格”相關(guān)聯(lián)。在一些實施例中,支配網(wǎng)格是用類似于在美國申請?zhí)?1/923,629和11/923,634中描述的地帶網(wǎng)格的實現(xiàn)的方式來實現(xiàn)的。支配網(wǎng)格使得軟件應(yīng)用開發(fā)者能夠?qū)⒅湟?guī)則與虛擬區(qū)域或虛擬區(qū)域的地帶相關(guān)聯(lián)。這避免了為虛擬區(qū)域中的每個文件創(chuàng)建個體許可的需求并且避免了處理在需要取決于上下文不同地對待同一文檔時可能產(chǎn)生的復(fù)雜度的需求。在一些實施例中,虛擬區(qū)域與將該虛擬區(qū)域的一個或多個地帶與數(shù)字版權(quán)管理(DRM)功能相關(guān)聯(lián)的支配網(wǎng)格相關(guān)聯(lián)。DRM功能控制對虛擬區(qū)域或該虛擬區(qū)域內(nèi)的一個或多個地帶或該虛擬區(qū)域內(nèi)的對象中的一者或多者的訪問。每次通信者越過該虛擬區(qū)域內(nèi)的支配網(wǎng)格邊界時DRM功能被觸發(fā)。DRM功能確定該觸發(fā)動作是否被許可,并且如果許可,則確定所許可動作的范圍、是否需要支付、以及是否需要生成審計記錄。在虛擬區(qū)域的示例性實現(xiàn)中,相關(guān)聯(lián)的支配網(wǎng)格被配置成使得如果通信者能夠進入該虛擬區(qū)域,則他或她能夠?qū)εc該虛擬區(qū)域相關(guān)聯(lián)的所有文檔執(zhí)行動作,包括操控文檔、查看文檔、下載文檔、刪除文檔、修改文檔和重新上載文檔。這樣,虛擬區(qū)域可變成在由該虛擬區(qū)域定義的背景中共享和討論的信息的儲存庫。關(guān)于虛擬區(qū)域的規(guī)范的附加細節(jié)在美國申請?zhí)?1/042714(提交于2008年4月4日)、11/923,629(提交于2007年10月24日)、和11/923,634(提交于2007年10月24日)中記載。4.其他平臺組件實時內(nèi)核20被設(shè)計為作為客戶端軟件包的一部分的本地網(wǎng)絡(luò)節(jié)點的組件來工作,其中客戶端軟件還包括:a.抬頭顯示器(HUD)軟件應(yīng)用;b.本地人類接口設(shè)備(HID)和音頻回放設(shè)備;c.So3D圖形顯示、化身、和物理學(xué)引擎;d.系統(tǒng)數(shù)據(jù)庫和存儲設(shè)施。a.抬頭顯示器(HUD)抬頭顯示器(HUD)是在每一個客戶端網(wǎng)絡(luò)節(jié)點上操作的對實時內(nèi)核20的應(yīng)用接口。HUD是用戶能夠在他或她的桌面上一直保持和運行的小型、輕量級接口。它是用于啟動虛擬區(qū)域應(yīng)用、為他或她提供對實時聯(lián)系人和實時協(xié)作場所(或區(qū)域)的即時訪問的用戶接口。虛擬區(qū)域通過HUD和實時內(nèi)核20與用戶的桌面整合在一起,從而使得用戶能將文件拖放到虛擬區(qū)域通信環(huán)境中、利用獨立于虛擬區(qū)域通信環(huán)境的原生客戶端軟件應(yīng)用來使用與虛擬區(qū)域關(guān)聯(lián)地存儲同時又存在于虛擬區(qū)域中的文件、以及更一般地將虛擬區(qū)域內(nèi)的存在性和位置作為其操作環(huán)境中類似于其他操作系統(tǒng)功能的一方面而不只是若干應(yīng)用中的一個應(yīng)用來對待。圖5A和5B示出了通過坐落在通信者的桌面的右下角的半透明用戶接口來實現(xiàn)的HUD的實施例84。HUD84是通往平臺的應(yīng)用接口。HUD84的特性包括:·意欲在用戶桌面上一直運行的小型、輕量級應(yīng)用;以及·為用戶提供便于查看聯(lián)系人并與聯(lián)系人交互以及查看發(fā)生交互的虛擬區(qū)域并與虛擬區(qū)域交互的接口。在此實施例中,HUD84通過提供對控件的永久接口和訪問的基本透明的(半透明)用戶接口覆蓋來實現(xiàn)。在圖5A所示的實施例中,HUD84是透明的,除了該接口的以下半透明要素中的一個或多個要素的有限集合:·漸進式沉浸感控件的輪廓;·用戶當(dāng)前位置的輪廓;·表示虛擬區(qū)域86中的實時聯(lián)系人的子圖形;以及·劃界出HUD區(qū)域的邊界的線條。在實時內(nèi)核260和HUD84正在運行而并準(zhǔn)備好發(fā)起實時通信會話的同時,通信者能夠在普通桌面計算環(huán)境中工作。例如,通信者可與諸如之類的其他應(yīng)用合作以創(chuàng)建稍后可以在實時通信會話中共享的文檔。虛擬區(qū)域86與通信者的桌面整合在一起,從而使得該通信者能將文件拖放到虛擬區(qū)域中、利用獨立于虛擬區(qū)域通信環(huán)境的原生客戶端軟件應(yīng)用來使用與虛擬區(qū)域關(guān)聯(lián)地存儲同時又存在于虛擬區(qū)域中的文件、以及更一般地將虛擬區(qū)域內(nèi)的存在性和位置作為其操作環(huán)境中類似于其他操作系統(tǒng)功能的一方面而不是若干應(yīng)用中的一個應(yīng)用來對待。當(dāng)通信者在虛擬區(qū)域86中交互時,HUD84為通信者提供對他或她所期望的可視化的獨立控制。例如,通信者可顯示虛擬區(qū)域的最小化視圖(被最小化至桌面的右下角)并參與同該虛擬區(qū)域中的另一通信者的音頻交談,同時又工作在諸如之類的不同應(yīng)用中。通信者隨后可改變他或她的可視化模式并進入對虛擬區(qū)域86的更加沉浸的三維呈現(xiàn)。這是通過將HUD84中的漸進式沉浸感滑塊88的設(shè)置從“桌面”改為“3D”來實現(xiàn)的。一旦處在3D可視化模式下,通信者的桌面就顯示對虛擬區(qū)域86的3D呈現(xiàn)(如圖5A中所示)。通信者(在桌面模式下由子圖形90、92、94表示)現(xiàn)在采取如圖5A中所示的三維化身96、98、100的形式。與虛擬區(qū)域86相關(guān)聯(lián)的任何數(shù)據(jù)皆可被顯示在觀看屏102、104、106上。觀看屏是可被用于呈現(xiàn)任何隨意數(shù)據(jù)的通用數(shù)據(jù)呈現(xiàn)組件。可在觀看屏上呈現(xiàn)的數(shù)據(jù)類型的示例包括:·微軟PowerPoint報告書·視頻·網(wǎng)絡(luò)攝像機的輸出·直接來自組織的企業(yè)資源規(guī)劃(ERP)系統(tǒng)的實時數(shù)據(jù)如圖5C中所示,HUD84被設(shè)計成充當(dāng)顯示信息并提供對控件的訪問的真實接口,且對呈現(xiàn)在通信者的顯示監(jiān)視器上的圖形用戶界面62的底層部分只有最小的遮擋。HUD84高效地顯示:·該通信者的當(dāng)前在線的實時聯(lián)系人,·該通信者與該通信者的實時聯(lián)系人當(dāng)前“位于”該虛擬區(qū)域86中的何處,·控制虛擬區(qū)域86的可視化的漸進式沉浸感控件,以及·使得用戶能快速連接至特定場所的導(dǎo)航控件。具體地,HUD84為通信者提供對其實時聯(lián)系人以及在發(fā)生實時協(xié)作的虛擬區(qū)域的即時訪問。HUD84允許基于人的位置在區(qū)域中導(dǎo)航以及允許對虛擬區(qū)域的查看。這些虛擬區(qū)域可以許多方式訪問:最頻繁使用的、最近使用的、或應(yīng)用指定方式。HUD84顯示一組有序的場所瓦片108、110、112。點擊場所瓦片中的一個將用戶帶到由所選擇的場所瓦片所表示的虛擬區(qū)域。對于人而言,具有去(往通信者的區(qū)域)和取(將他們帶到用戶的區(qū)域)的基本隱喻。這在HUD84中通過允許通信者對去或取請求進行排隊以及在無需“移動”的情況下經(jīng)由文本或語音與人通信來完善。HUD84在從另一通信者收到每個通信請求時通知該通信者。該通信者可以接受該請求、忽略它、或?qū)⑺砑拥酵ㄐ抨犃小_@樣,通信者能在稍后的時間響應(yīng)非優(yōu)先通信。例如,通信者可將在該通信者繁忙(例如,忙于當(dāng)前通信會話)的時間期間收到的通信進行排隊,并且在該通信者空閑之后,該通信者可響應(yīng)該通信隊列中的通信請求。如上所述,交互網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)維護記錄通信者遇到誰以及在哪里遇到的交互數(shù)據(jù)庫。交互服務(wù)用可按基于場所的分類次序(例如,最?;蜃罱?呈現(xiàn)的查詢結(jié)果來響應(yīng)對關(guān)系數(shù)據(jù)庫的查詢。這樣,關(guān)系數(shù)據(jù)庫信息可被用于導(dǎo)出該通信者在哪些區(qū)域遇見的人的頻率分類、以及在不論區(qū)域的情況下該通信者已經(jīng)遇見的人的分類、和該通信者最常出入的區(qū)域的分類。此數(shù)據(jù)被用在HUD84中。該數(shù)據(jù)也可被用虛擬區(qū)域應(yīng)用開發(fā)者用作啟發(fā)式系統(tǒng)的一部分(例如,準(zhǔn)許已經(jīng)拜訪特定虛擬區(qū)域超過5次的人進入而無需默認(rèn)的敲門的規(guī)則、或者允許在特定時間存在于虛擬區(qū)域中的人修改和刪除由在同一時間在那里的另一通信者創(chuàng)建的文件的規(guī)則)。在圖5C中,HUD84呈現(xiàn)一系列表示相應(yīng)虛擬區(qū)域的場所瓦片108、110、112。這些虛擬區(qū)域中的每一個被紐帶聯(lián)系到對關(guān)系數(shù)據(jù)庫的查詢。關(guān)于每個虛擬區(qū)域,集合服務(wù)對關(guān)系數(shù)據(jù)庫查詢用戶已在該虛擬區(qū)域中遇見過的所有聯(lián)系人。集合服務(wù)通常在按頻率或按交互的最近性(例如,該通信者最后交互的聯(lián)系人)來分類的列表中呈現(xiàn)所標(biāo)識的聯(lián)系人。在其他實施例中,聯(lián)系人可以其他某種取決于應(yīng)用的方式來分類。對關(guān)系數(shù)據(jù)庫的查詢可與其他搜索相組合。例如,對關(guān)系數(shù)據(jù)庫的查詢可以與對針對使用另一通信系統(tǒng)(例如,Skype、Facebook、和Flickr)與聯(lián)系人的交互所生成的聯(lián)系人歷史數(shù)據(jù)的查詢相組合。在一個示例中,Skype虛擬區(qū)域112可以與對通信者的關(guān)聯(lián)于Skype虛擬區(qū)域112的關(guān)系數(shù)據(jù)和該通信者的Skype歷史數(shù)據(jù)的查詢相關(guān)聯(lián),以產(chǎn)生該用戶的與Skype虛擬區(qū)域112相關(guān)聯(lián)的實時聯(lián)系人的分類列表。圖5C示出了對HUD84中的聯(lián)系人和虛擬區(qū)域的基本導(dǎo)航。點擊與虛擬區(qū)域瓦片108-112中的每一個相關(guān)聯(lián)的朝左箭頭顯示在給定場所中按交互頻率分類的實時聯(lián)系人的列表。例如,點擊主HUD瓦片84(標(biāo)記為“辦公室”)的朝左箭頭114顯示該用戶在虛擬區(qū)域86中最頻繁通信的實時聯(lián)系人。聯(lián)系人(由各自相應(yīng)的圖標(biāo)瓦片表示)的列表按照頻率進行分類。列表中的第一位聯(lián)系人(在此示例中為DVW)代表該用戶在虛擬區(qū)域86中合作最頻繁的聯(lián)系人、繼之以PJB、Tim等等。點擊朝上箭頭116顯示代表該通信者已經(jīng)到訪過的一些或所有虛擬區(qū)域的一組場所瓦片。該組場所瓦片通常按頻率、最近性、或其他排序來分類。虛擬區(qū)域場所瓦片顯示當(dāng)前發(fā)生在相應(yīng)虛擬區(qū)域中的實時活動。例如,DVW、Kim和Joe(由主虛擬區(qū)域瓦片108中的相應(yīng)子圖形表示)皆在該主虛擬區(qū)域中并且正在進行實時談話,而Jeff、Ann和Jane(由虛擬區(qū)域瓦片110中的相應(yīng)子圖形表示)全部在Facebook虛擬區(qū)域中。假定任何通信者退出虛擬區(qū)域或進入虛擬區(qū)域,此虛擬區(qū)域中的存在性指示器(即,由圓形所示出的小圖形,通常與名稱或其他標(biāo)識符相關(guān)聯(lián))將自動被實時更新。該特征證明虛擬區(qū)域設(shè)計者向場所瓦片輸入應(yīng)用專用實時數(shù)據(jù)的能力。場所瓦片可看起來與通信者相關(guān)聯(lián),或與通信者的場所相關(guān)聯(lián)。例如,游戲開發(fā)者可輸出通信者在其游戲環(huán)境中所在地的地圖,由此通過關(guān)系數(shù)據(jù)庫連接到該通信者的其他人接收對該通信者當(dāng)前活動的實時饋送。這些人可使用該虛擬區(qū)域瓦片來導(dǎo)航至該通信者,與他或她通信、或聯(lián)絡(luò)他或她(例如,發(fā)送進入虛擬區(qū)域的邀請)。HUD84同時為許多不同的虛擬區(qū)域管理與聯(lián)系人和虛擬區(qū)域的此接口。HUD虛擬區(qū)域瓦片84、108、110、112中使用的實時數(shù)據(jù)由主存相關(guān)區(qū)域的區(qū)域服務(wù)所管理的接口經(jīng)由實時內(nèi)核120來提供。每個區(qū)域服務(wù)可基于通信者察看所主存的虛擬區(qū)域的許可向通信者提供對不同的相應(yīng)HUD虛擬區(qū)域瓦片數(shù)據(jù)。例如,如果通信者進入不允許該通信者察看的虛擬區(qū)域,則HUD虛擬區(qū)域瓦片可顯示受限或沒有詳細信息。此外,由主存區(qū)域服務(wù)提供的HUD虛擬區(qū)域瓦片數(shù)據(jù)饋送可由操作該區(qū)域服務(wù)的虛擬區(qū)域提供商定制以向訂閱HUD呈現(xiàn)該虛擬區(qū)域的應(yīng)用指定視圖。b.本地人類接口設(shè)備(HID)和音頻回放設(shè)備;本地HID設(shè)備使通信者在參與虛擬區(qū)域通信會話時能向客戶端網(wǎng)絡(luò)節(jié)點輸入命令和其他信號。示例性的HID設(shè)備包括計算機鍵盤、計算機鼠標(biāo)、觸摸屏顯示器、以及話筒。音頻回放設(shè)備使通信者能回放在虛擬區(qū)域通信會話期間接收的音頻信號。示例性的音頻回放設(shè)備包括用于操縱(例如,混頻和施加特殊效果)音頻信號的音頻處理硬件(例如,聲卡),以及用于輸出聲音的揚聲器。c.So3D圖形顯示、化身、和物理學(xué)引擎So3D引擎是控制虛擬區(qū)域和虛擬區(qū)域內(nèi)的對象在顯示監(jiān)視器上的相應(yīng)視圖顯示的三維可視化引擎。So3D引擎通常與圖形用戶界面驅(qū)動器和HID設(shè)備接口以呈現(xiàn)虛擬區(qū)域的視圖并允許通信者控制HUD應(yīng)用的操作。So3D引擎通常經(jīng)由實時內(nèi)核20接收來自區(qū)域服務(wù)26的圖形呈現(xiàn)指令。在一些實施例中,So3D引擎也讀取包含呈現(xiàn)通信者在虛擬區(qū)域中的化身所需要的圖像的通信者化身數(shù)據(jù)庫。基于此信息,So3D引擎從虛擬區(qū)域內(nèi)的通信者的化身角度(位置和取向)生成虛擬區(qū)域和該虛擬區(qū)域內(nèi)的對象的視覺表示(即,圖像)。該視覺表示通常被傳遞給操作系統(tǒng)的圖形呈現(xiàn)組件,該圖形呈現(xiàn)組件驅(qū)動圖形呈現(xiàn)硬件在客戶端網(wǎng)絡(luò)節(jié)點上呈現(xiàn)虛擬區(qū)域的視覺表示。通信者可通過從HID設(shè)備(例如,計算機鼠標(biāo))向?qū)崟r內(nèi)核20傳送命令(實時內(nèi)核20將視圖控制命令傳送給So3D引擎)來控制虛擬區(qū)域的所呈現(xiàn)視圖。So3D引擎根據(jù)視圖控制命令來更新虛擬區(qū)域的視圖。So3D引擎還根據(jù)經(jīng)由實時內(nèi)核20從區(qū)域服務(wù)26接收的經(jīng)更新的對象位置信息來更新虛擬區(qū)域在顯示監(jiān)視器上的圖形表示。d.系統(tǒng)數(shù)據(jù)庫和存儲設(shè)施系統(tǒng)數(shù)據(jù)庫和存儲設(shè)施存儲平臺使用的各種類型的信息。通常由存儲設(shè)施存儲的示例性的信息包括存在性數(shù)據(jù)庫、交互數(shù)據(jù)庫、化身數(shù)據(jù)庫、真實用戶id(RUID)數(shù)據(jù)庫、樣式(art)緩沖數(shù)據(jù)庫、以及虛擬區(qū)域描述數(shù)據(jù)庫。信息可在單個網(wǎng)絡(luò)節(jié)點上存儲或者可以跨多個網(wǎng)絡(luò)節(jié)點分布。C.示例性的通信會話再次參見圖4,在通信會話期間,每個客戶端網(wǎng)絡(luò)節(jié)點生成相應(yīng)的實時數(shù)據(jù)流集(例如,運動數(shù)據(jù)流、音頻數(shù)據(jù)流、聊天數(shù)據(jù)流、文件傳遞數(shù)據(jù)流、以及視頻數(shù)據(jù)流)。例如,每個通信者操縱一個或更多個生成運動數(shù)據(jù)流的輸入設(shè)備(例如,計算機鼠標(biāo)52和鍵盤54),運動數(shù)據(jù)流控制他或她的化身在虛擬區(qū)域66中的移動。此外,在計算機系統(tǒng)48附近本地生成的通信者語音和其他聲音由話筒60捕獲。話筒60生成可被轉(zhuǎn)換為實時音頻流的音頻信號。音頻流的相應(yīng)副本被傳送給由虛擬區(qū)域66中的化身表示的其他網(wǎng)絡(luò)節(jié)點。在這些其他網(wǎng)絡(luò)節(jié)點本地生成的聲音被轉(zhuǎn)換成實時音頻信號并被傳送給計算機系統(tǒng)48。實時內(nèi)核20將其他網(wǎng)絡(luò)節(jié)點生成的音頻流轉(zhuǎn)換為由揚聲器56、58呈現(xiàn)的音頻信號。運動數(shù)據(jù)流和音頻數(shù)據(jù)流可直接或間接從每一個通信者節(jié)點傳送至其他客戶端網(wǎng)絡(luò)節(jié)點。在一些流處置拓?fù)渲校總€客戶端網(wǎng)絡(luò)節(jié)點接收由其他客戶端網(wǎng)絡(luò)節(jié)點傳送的實時數(shù)據(jù)流的副本。在其他流處置拓?fù)渲?,一個或更多個客戶端網(wǎng)絡(luò)節(jié)點接收從源自(發(fā)源于)其他一些網(wǎng)絡(luò)節(jié)點的實時數(shù)據(jù)流導(dǎo)出的一個或更多個流混合。在一些實施例中,區(qū)域服務(wù)26維護包括虛擬區(qū)域的當(dāng)前描述、該虛擬區(qū)域中的對象的當(dāng)前登記、以及當(dāng)前正由主存區(qū)域服務(wù)26的網(wǎng)絡(luò)節(jié)點生成的任何流混合的列表的全局狀態(tài)信息。對象登記通常包括針對虛擬區(qū)域中的每個對象的相應(yīng)對象標(biāo)識符(例如,唯一地標(biāo)識對象的標(biāo)簽)、能與關(guān)聯(lián)于該對象的網(wǎng)絡(luò)節(jié)點建立網(wǎng)絡(luò)連接的連接句柄(例如、URI,諸如IP地址)、以及標(biāo)識與該對象相關(guān)聯(lián)的實時數(shù)據(jù)源和阱(例如,與該對象相關(guān)聯(lián)的網(wǎng)絡(luò)節(jié)點的源和阱)的接口數(shù)據(jù)。對象登記還通常包括針對每個對象的一個或更多個可選角色標(biāo)識符,該可選角色標(biāo)識符可由通信者或區(qū)域服務(wù)26明確指派給對象,或者可從對象的其他屬性推斷出。在一些實施例中,對象登記還包括每個對象在虛擬區(qū)域中的當(dāng)前位置,這由區(qū)域服務(wù)26從對接收自與虛擬區(qū)域中的對象相關(guān)聯(lián)的網(wǎng)絡(luò)節(jié)點的實時運動數(shù)據(jù)流的分析中確定。就此,區(qū)域服務(wù)26從與虛擬區(qū)域中的對象相關(guān)聯(lián)的網(wǎng)絡(luò)節(jié)點接收實時運動數(shù)據(jù)流、并基于該運動數(shù)據(jù)跟蹤通信者的化身和進入、離開和在虛擬區(qū)域中四處移動的其他對象。區(qū)域服務(wù)26根據(jù)被跟蹤對象的當(dāng)前位置來更新對象登記。在管理與其他網(wǎng)絡(luò)節(jié)點的實時數(shù)據(jù)流連接的過程中,區(qū)域服務(wù)26維護針對每個客戶端網(wǎng)絡(luò)節(jié)點的配置數(shù)據(jù)集,包括接口數(shù)據(jù)、地帶列表、以及當(dāng)前位于虛擬區(qū)域內(nèi)的對象的位置。接口數(shù)據(jù)包括針對與每個客戶端網(wǎng)絡(luò)節(jié)點相關(guān)聯(lián)的每個對象的關(guān)于關(guān)聯(lián)于該對象的實時數(shù)據(jù)流類型的所有源和阱的相應(yīng)列表。地帶列表是虛擬區(qū)域中當(dāng)前被與相應(yīng)客戶端網(wǎng)絡(luò)節(jié)點相關(guān)聯(lián)的化身占據(jù)的所有地帶的登記。當(dāng)通信者首次進入虛擬區(qū)域中時,區(qū)域服務(wù)26通常用位置初始化信息初始化當(dāng)前對象位置數(shù)據(jù)庫。之后,區(qū)域服務(wù)26用對象在虛擬區(qū)域中的當(dāng)前位置來更新當(dāng)前對象位置數(shù)據(jù)庫,該當(dāng)前位置從對接收自共享虛擬區(qū)域的其他客戶端網(wǎng)絡(luò)節(jié)點的實時運動數(shù)據(jù)流的分析中確定。圖6示出一種方法的實施例,根據(jù)該方法,區(qū)域服務(wù)26的實施例確定當(dāng)用戶進入虛擬區(qū)域或穿過虛擬區(qū)域的地帶之間的邊界時要建立的一組所要求的實時數(shù)據(jù)流連接。區(qū)域服務(wù)26根據(jù)虛擬區(qū)域描述和每個通信者的化身在虛擬區(qū)域?qū)嵗械奈恢脕斫⒃撏ㄐ耪叩乃紦?jù)地帶的列表(圖6,框180)。在此過程中,區(qū)域服務(wù)26從當(dāng)前對象位置數(shù)據(jù)庫中檢索用戶化身在虛擬區(qū)域?qū)嵗械漠?dāng)前位置,該位置包含化身在虛擬區(qū)域?qū)嵗械漠?dāng)前位置的坐標(biāo)。區(qū)域服務(wù)26隨后比較通信者的化身的當(dāng)前位置和虛擬區(qū)域描述中的地帶定義。區(qū)域服務(wù)26根據(jù)虛擬區(qū)域描述中與通信者化身的當(dāng)前位置一致的所有地帶來編輯所占據(jù)地帶列表。例如,在一些實施例中,所占據(jù)地帶列表包括其網(wǎng)格包含通信者化身的當(dāng)前位置的所有地帶。區(qū)域服務(wù)26確定為所占據(jù)地帶列表中的地帶定義的一組目標(biāo)實時數(shù)據(jù)流類型(圖6,框182)。區(qū)域服務(wù)26隨后從該組目標(biāo)實時數(shù)據(jù)流類型、對象在虛擬區(qū)域?qū)嵗械奈恢?、以及虛擬區(qū)域描述中定義的開關(guān)規(guī)則確定所要求的實時數(shù)據(jù)流數(shù)據(jù)集(圖6,框184)。在一些示例性實施例中,在區(qū)域服務(wù)26已經(jīng)確定使用戶能在共享虛擬區(qū)域?qū)嵗袇⑴c與其他網(wǎng)絡(luò)節(jié)點的協(xié)作通信會話的實時數(shù)據(jù)流數(shù)據(jù)集(圖6,框184)后,區(qū)域服務(wù)26確定將導(dǎo)致向計算機系統(tǒng)120傳遞所要求的數(shù)據(jù)流數(shù)據(jù)的實時數(shù)據(jù)流連接。在一些實施例中,區(qū)域服務(wù)26確定實時數(shù)據(jù)流處置拓?fù)?,該處置拓?fù)渲辽俨糠值鼗谟嬎銠C系統(tǒng)120的帶寬能力將實時數(shù)據(jù)流集傳遞給計算機系統(tǒng)120。在此過程中,區(qū)域服務(wù)26確定從未混合的實時數(shù)據(jù)流以及根據(jù)實時數(shù)據(jù)流的組合導(dǎo)出的流混合接收每個實時數(shù)據(jù)流的相應(yīng)形式。區(qū)域服務(wù)26還確定從直接對等網(wǎng)絡(luò)路線和由一個或更多個其他網(wǎng)絡(luò)節(jié)點仲裁的網(wǎng)絡(luò)路線接收每個實時數(shù)據(jù)流的網(wǎng)絡(luò)路線。在已確定流處置拓?fù)浜?,區(qū)域服務(wù)26向在計算機系統(tǒng)120上操作的實時內(nèi)核發(fā)送指令。該指令根據(jù)所確定的流處置拓?fù)渲付ㄓ嬎銠C系統(tǒng)120和其他一些網(wǎng)絡(luò)節(jié)點之間所要求的實時數(shù)據(jù)流連接。圖7示出由實時內(nèi)核20在確定向計算機系統(tǒng)120傳遞所要求的數(shù)據(jù)流數(shù)據(jù)的實時數(shù)據(jù)流連接的拓?fù)溥^程中實現(xiàn)的方法的實施例。根據(jù)該方法,實時內(nèi)核20確定計算機系統(tǒng)120是否具有直接從其他網(wǎng)絡(luò)節(jié)點接收所要求的實時數(shù)據(jù)流數(shù)據(jù)集186的足夠帶寬(圖7,框188)。在此過程中,其他網(wǎng)絡(luò)節(jié)點向計算機系統(tǒng)120傳送鏈路請求。該鏈路請求指示計算機系統(tǒng)120傳送相應(yīng)的實時數(shù)據(jù)流集所需要的相應(yīng)帶寬要求。實時內(nèi)核20將建立所要求的直接連接所需要的總帶寬與當(dāng)前計算機系統(tǒng)120可用的下載帶寬進行比較。如果可用帶寬至少等于總要求帶寬,則實時內(nèi)核20建立與提供所要求的實時數(shù)據(jù)流數(shù)據(jù)的其他網(wǎng)絡(luò)節(jié)點的直接連接(圖7,框190)。在此過程中,實時內(nèi)核20創(chuàng)建計算機系統(tǒng)120與一個或更多個其他網(wǎng)絡(luò)節(jié)點之間的套接字(例如,TCP套接字或性能最優(yōu)化的專用實時套接字)。實時內(nèi)核20處理實時數(shù)據(jù)流,包括加密它們、記錄它們、以及將經(jīng)處理的數(shù)據(jù)流傳遞給呈現(xiàn)在用戶界面中及在網(wǎng)絡(luò)18上傳送所需的下游軟件組件。如果可用帶寬小于所要求帶寬(圖7,框188),則實時內(nèi)核20檢查流混合列表以確定區(qū)域服務(wù)26是否正在生成提供所要求實時數(shù)據(jù)流數(shù)據(jù)的流混合(圖7,框192)。如果需要的流混合可用,則實時內(nèi)核20與區(qū)域服務(wù)26建立將所需實時數(shù)據(jù)流混合的副本從區(qū)域服務(wù)器28傳送到計算機系統(tǒng)120的連接(圖7,框194)。如果所需流混合不可用,則實時內(nèi)核20向區(qū)域服務(wù)26發(fā)送流混合請求(圖7,框196)。如果可能,區(qū)域服務(wù)26響應(yīng)于流混合請求生成所需流混合。IV.系統(tǒng)架構(gòu)A.引言通信者通常從客戶端網(wǎng)絡(luò)節(jié)點連接到網(wǎng)絡(luò)18,客戶端網(wǎng)絡(luò)節(jié)點通常由通用計算機系統(tǒng)或?qū)S猛ㄐ庞嬎銠C系統(tǒng)(或“控制臺”,諸如網(wǎng)絡(luò)使能的視頻游戲控制臺)來實現(xiàn)。網(wǎng)絡(luò)節(jié)點執(zhí)行建立與其他網(wǎng)絡(luò)節(jié)點的實時數(shù)據(jù)流連接的通信過程且通常執(zhí)行呈現(xiàn)通信者進入的每個虛擬區(qū)域的視圖的可視化呈現(xiàn)過程。圖8示出了由計算機系統(tǒng)120實現(xiàn)的客戶端網(wǎng)絡(luò)節(jié)點的實施例。計算機系統(tǒng)120包括處理單元122、系統(tǒng)存儲器124和將處理單元122耦合至計算機系統(tǒng)120的各種組件的系統(tǒng)總線126。處理單元122可包括一個或更多個數(shù)據(jù)處理器,每個數(shù)據(jù)處理器可以是任一種商業(yè)上可用的計算機處理器的形式。系統(tǒng)存儲器124可包括存儲包含計算機系統(tǒng)120的啟動例程的基本輸入/輸出系統(tǒng)(BIOS)的只讀存儲器(ROM)和隨機存取存儲器(RAM)。系統(tǒng)總線126可以是存儲器總線、外圍總線或本地總線,并且可與任何總線協(xié)議(包括PCI、VESA、Microchannel、ISA和EISA)兼容。計算機系統(tǒng)120還包括連接至系統(tǒng)總線126并包含一個或更多個提供對數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)和計算機可執(zhí)行指令的非易失或永久存儲的計算機可讀介質(zhì)盤的永久存儲存儲器128(例如,硬盤驅(qū)動器、軟盤驅(qū)動器、CDROM驅(qū)動器、磁帶驅(qū)動器、閃存設(shè)備、以及數(shù)字視頻驅(qū)動器)。通信者可使用一個或更多個輸入設(shè)備130(例如,一個或更多個鍵盤、計算機鼠標(biāo)、話筒、攝像頭、操縱桿、諸如Wii輸入設(shè)備的物理運動傳感器、以及觸摸墊等)與計算機系統(tǒng)120交互(例如,輸入命令或數(shù)據(jù))。信息可通過在顯示監(jiān)視器132上呈現(xiàn)給通信者的圖形用戶界面(GUI)來呈現(xiàn),這由顯示控制器134控制。計算機系統(tǒng)120還可包括其他輸入/輸出硬件136(例如,諸如揚聲器和打印機等外圍輸出設(shè)備)。計算機系統(tǒng)120通過網(wǎng)絡(luò)適配器138(也稱為“網(wǎng)絡(luò)接口卡”或NIC)連接至其他網(wǎng)絡(luò)節(jié)點138、140和142。若干程序模塊可被存儲在系統(tǒng)存儲器124中,包括操作系統(tǒng)(OS)144(例如,可從美國華盛頓雷蒙德的微軟公司獲得的Windows操作系統(tǒng))、實時內(nèi)核20、驅(qū)動程序146(例如,GUI驅(qū)動程序)、網(wǎng)絡(luò)協(xié)議148、本地軟件應(yīng)用150(例如,HUD84)、以及數(shù)據(jù)(例如,輸入數(shù)據(jù)、輸出數(shù)據(jù)、程序數(shù)據(jù)、注冊表156、以及配置設(shè)定152)。B.操作系統(tǒng)操作系統(tǒng)144通過提供用于創(chuàng)建計算機系統(tǒng)120上的運行時執(zhí)行環(huán)境的基礎(chǔ)操作系統(tǒng)服務(wù)來主存軟件應(yīng)用。通常由操作系統(tǒng)提供的示例性類型的服務(wù)是資源管理、文件管理、安全性、認(rèn)證、驗證、通知、以及用戶接口(例如、窗口、菜單、對話等)。與計算機系統(tǒng)120的資源(例如,存儲器、處理器、以及I/O設(shè)備)管理有關(guān)的服務(wù)通常由操作系統(tǒng)內(nèi)核實現(xiàn)。文件管理可由操作系統(tǒng)內(nèi)核實現(xiàn)或可用分離的文件系統(tǒng)管理器(例如,可安裝的文件系統(tǒng),其在一些操作系統(tǒng)中提供)實現(xiàn)。在打開文件(例如,計算機數(shù)據(jù)文件或軟件應(yīng)用文件)的過程中,文件系統(tǒng)管理器通常調(diào)用適當(dāng)?shù)奈募到y(tǒng)驅(qū)動程序,該文件系統(tǒng)驅(qū)動程序在映射出文件在磁盤上的存儲位置的數(shù)據(jù)庫(例如,諸如FAT、FAT98、VFAT、MFT以及CDFS等文件分配表)中查找該文件的磁盤存儲位置。諸如安全性、認(rèn)證、驗證、通知、以及用戶接口的其他操作系統(tǒng)功能可由操作系統(tǒng)的一個或更多個其他組件(例如,一些操作系統(tǒng)中的可執(zhí)行服務(wù)層)提供。通常由操作系統(tǒng)內(nèi)核提供的示例性類型的服務(wù)是過程管理、存儲器管理、設(shè)備管理、以及系統(tǒng)調(diào)用處置。過程管理包括運行應(yīng)用并向計算機系統(tǒng)的硬件組件提供應(yīng)用編程接口(API)。在運行軟件應(yīng)用的過程中,操作系統(tǒng)內(nèi)核通常在存儲器中建立用于該軟件應(yīng)用的地址空間、在該地址空間中加載包含該軟件應(yīng)用代碼的文件、以及執(zhí)行加載的軟件應(yīng)用代碼。存儲器管理涉及管理軟件應(yīng)用對系統(tǒng)存儲器124的訪問。設(shè)備管理涉及提供通過設(shè)備驅(qū)動器對硬件設(shè)備的訪問。系統(tǒng)調(diào)用處置涉及提供向用戶模式軟件應(yīng)用暴露操作系統(tǒng)內(nèi)核服務(wù)的API。通過調(diào)用API(例如,通過過程間通信機制和系統(tǒng)調(diào)用),軟件應(yīng)用可向操作系統(tǒng)內(nèi)核請求服務(wù)、傳遞參數(shù)、以及接收響應(yīng)于請求由服務(wù)生成的結(jié)果。操作系統(tǒng)144通常在注冊表156中存儲硬件和軟件配置信息、用戶偏好、以及設(shè)置信息。例如,注冊表156通常包含以下信息:引導(dǎo)和配置系統(tǒng)所需的參數(shù)值、控制操作系統(tǒng)144的操作的系統(tǒng)范圍的軟件設(shè)置、安全性數(shù)據(jù)庫、以及每用戶簡檔設(shè)置。在一些實施例中,連接規(guī)則32被存儲在注冊表156而非分離的數(shù)據(jù)庫中。C.網(wǎng)絡(luò)協(xié)議網(wǎng)絡(luò)協(xié)議148控制或使能計算機系統(tǒng)120和其他網(wǎng)絡(luò)節(jié)點之間的連接、通信、和數(shù)據(jù)傳遞。示例性的網(wǎng)絡(luò)協(xié)議類型包括傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)、用戶數(shù)據(jù)報協(xié)議/網(wǎng)際協(xié)議(UDP/IP)、實時傳輸協(xié)議(RTP)、以及會話發(fā)起協(xié)議(SIP)。TCP/IP包括TCP部分和IP部分。該協(xié)議的TCP部分通過將消息分裂成較小分組、在通信網(wǎng)絡(luò)另一端重新組裝分組、以及重新發(fā)送任何在路上丟失的分組來提供傳輸功能。該協(xié)議的IP部分通過向這些數(shù)據(jù)分組指派目的地網(wǎng)絡(luò)以及該目的地網(wǎng)絡(luò)處的目標(biāo)節(jié)點的地址來提供路由功能。使用TCP/IP傳遞的每個數(shù)據(jù)分組包括包含TCP和IP信息的頭部。IP不向通信棧的上層提供分組傳遞的保證。另一方面,TCP提供有保證的排隊分組傳遞下面向連接的端對端傳輸服務(wù)。這樣,TCP協(xié)議提供可靠的傳輸層連接。UDP是面向消息的傳輸層協(xié)議,其提供應(yīng)用層和因特網(wǎng)層之間的接口。UDP不保證消息傳遞到應(yīng)用層。UDP是無連接協(xié)議,因為對建立專用端對端連接并無建樹。UDP發(fā)送方在發(fā)送UDP消息后,不保留關(guān)于這些UDP消息的狀態(tài)信息。通信是基于從源到目的地的一個方向上的消息傳輸,不會檢查接收機的狀態(tài)。RTP定義用于通過網(wǎng)絡(luò)連接傳遞音頻和視頻的標(biāo)準(zhǔn)化分組格式。各種網(wǎng)絡(luò)協(xié)議可被用于在網(wǎng)絡(luò)節(jié)點之間傳送和接收RTP數(shù)據(jù),包括對等連網(wǎng)框架、單獨使用TCP套接字或與UDP聯(lián)用的集中式服務(wù)器、以及多播協(xié)議。SIP向用戶提供用于彼此定位、建立通信會話、以及終止活動會話的手段。有了SIP事務(wù),根據(jù)會話描述協(xié)議(SDP)來處置話商定過程。D.設(shè)備驅(qū)動程序設(shè)備驅(qū)動程序146通常由使其他軟件應(yīng)用(例如,用戶模式的軟件應(yīng)用和操作系統(tǒng))與連接至計算機系統(tǒng)120的硬件設(shè)備交互的軟件應(yīng)用來實現(xiàn)。設(shè)備驅(qū)動程序通常向可由軟件過程作出的調(diào)用所調(diào)取的功能提供API,以便轉(zhuǎn)換在軟件過程和硬件設(shè)備之間傳遞的命令和數(shù)據(jù)。E.實時內(nèi)核1.引言實時內(nèi)核20包括控制計算機系統(tǒng)120和共享虛擬區(qū)域通信環(huán)境的其他網(wǎng)絡(luò)節(jié)點之間的實時數(shù)據(jù)流的處理和開關(guān)的服務(wù),以及虛擬區(qū)域和該虛擬區(qū)域中的對象在顯示監(jiān)視器132上的相應(yīng)視圖呈現(xiàn)的服務(wù)。在這些過程中,實時內(nèi)核與和驅(qū)動程序148進行通信的操作系統(tǒng)功能接口以向和從計算機系統(tǒng)120的硬件組件傳遞命令和數(shù)據(jù),以便與其他網(wǎng)絡(luò)節(jié)點交換實時數(shù)據(jù)流并向通信者呈現(xiàn)沉浸性虛擬區(qū)域通信體驗。實時內(nèi)核20的實現(xiàn)包括一個或更多個分立模塊或分立庫(例如,動態(tài)鏈接的庫),這并不限于任何特定的硬件、固件、或軟件配置。一般來說,這些模塊可在任何計算或數(shù)據(jù)處理環(huán)境中實現(xiàn),包括在數(shù)字電子電路(例如,應(yīng)用專用集成電路,諸如數(shù)字信號處理器(DSP))中或在計算機硬件、固件、設(shè)備驅(qū)動器、或軟件中。在一些實施例中,模塊的功能性被組合進單個數(shù)據(jù)處理組件。在一些實施例中,一個或更多個模塊的每一者的相應(yīng)功能性由多個數(shù)據(jù)處理組件的相應(yīng)集執(zhí)行。在一些實現(xiàn)中,用于實現(xiàn)實時內(nèi)核20的實施例執(zhí)行的方法的過程指令(例如,諸如計算機軟件等計算機可讀代碼),以及它們生成的數(shù)據(jù)被存儲在一個或更多個計算機可讀介質(zhì)上。適用于有形地表達這些指令和數(shù)據(jù)的存儲設(shè)備包括所有形式的非易失性計算機可讀存儲器,包括例如諸如EPROM、EEPROM和閃存設(shè)備的半導(dǎo)體存儲設(shè)備;諸如內(nèi)部硬盤和可移動硬盤的磁盤;磁光盤;DVD-ROM/RAM以及CD-ROM/RAM。2.示例性實時內(nèi)核功能性實時內(nèi)核20與一個或更多個網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)協(xié)作以建立并管理計算機系統(tǒng)120與共享虛擬區(qū)域通信環(huán)境的其他網(wǎng)絡(luò)節(jié)點之間的網(wǎng)絡(luò)連接。在建立并管理網(wǎng)絡(luò)連接過程中涉及的示例性功能性有會話管理、遠程控制流處置、以及實時任務(wù)調(diào)度。e.會話管理圖9示出由實時內(nèi)核20響應(yīng)于請求連接至虛擬區(qū)域的實時內(nèi)核API調(diào)用實現(xiàn)的方法的實施例。根據(jù)圖9的方法,實時內(nèi)核20確定虛擬區(qū)域的指定(圖9,框160)。在一些實施例中,實時內(nèi)核20的該功能性通過向?qū)崟r內(nèi)核服務(wù)發(fā)起包括虛擬區(qū)域指定的實時內(nèi)核API調(diào)用來調(diào)取。實時內(nèi)核API調(diào)用可由任何軟件應(yīng)用、操作系統(tǒng)服務(wù)作出。實時內(nèi)核20建立與主存指定的虛擬區(qū)域的網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)的會話(圖9,框162)。在此過程中,實時內(nèi)核20建立與區(qū)域服務(wù)26的會話。實時內(nèi)核20隨后向區(qū)域服務(wù)26傳送對連接至指定的虛擬區(qū)域的請求。區(qū)域服務(wù)26確定從實時內(nèi)核20接收的請求中指定的虛擬區(qū)域的實例。在確定虛擬區(qū)域?qū)嵗膶嵗?,區(qū)域服務(wù)46確定用戶能力是否滿足與虛擬區(qū)域?qū)嵗嚓P(guān)聯(lián)的能力要求。如果用戶能力符合能力要求,則區(qū)域服務(wù)46傳送指示描述虛擬區(qū)域?qū)嵗漠?dāng)前狀態(tài)的狀態(tài)數(shù)據(jù)的可用性的消息(例如,當(dāng)前在虛擬區(qū)域?qū)嵗械膶ο蟮牧斜?、以及與這些對象相關(guān)聯(lián)的通信者的名稱)。實時內(nèi)核20訂閱描述虛擬區(qū)域?qū)嵗漠?dāng)前狀態(tài)的狀態(tài)數(shù)據(jù)(圖9,框164)。響應(yīng)于訂閱請求,區(qū)域服務(wù)26向?qū)崟r內(nèi)核20和區(qū)域服務(wù)26之間的鏈路上的信道公布狀態(tài)信息。在一些實施例中,實時內(nèi)核20的So3D引擎調(diào)用操作系統(tǒng)144的用戶接口服務(wù)以呈現(xiàn)狀態(tài)數(shù)據(jù)的人類可感知的視圖。例如,So3D引擎可調(diào)用接口服務(wù)以在顯示器132上呈現(xiàn)與當(dāng)前在該區(qū)域內(nèi)的對象相關(guān)聯(lián)的每個通信者的表示。在一些實施例中,通信者可由圖標(biāo)、縮略圖、或可選地用該通信者名稱標(biāo)記的其他圖形來表示。在一些實施例中,狀態(tài)數(shù)據(jù)在觸發(fā)了實時內(nèi)核20的調(diào)用的軟件應(yīng)用的圖形界面中呈現(xiàn)。在一些實施例中,狀態(tài)數(shù)據(jù)在抬頭顯示器(HUD)界面84的實施例中呈現(xiàn)(參見圖5A-5C)。在已經(jīng)建立與虛擬區(qū)域?qū)嵗倪B接后,觸發(fā)實時內(nèi)核20調(diào)用的軟件應(yīng)用可給予用戶請求進入虛擬區(qū)域?qū)嵗齼?nèi)的選項或可代表該用戶自動請求進入該虛擬區(qū)域?qū)嵗齼?nèi)。圖10示出由實時內(nèi)核20響應(yīng)于請求進入虛擬區(qū)域的實時內(nèi)核API調(diào)用實現(xiàn)的方法的實施例。根據(jù)圖10的方法,實時內(nèi)核20向主存虛擬區(qū)域的網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)宣稱進入該虛擬區(qū)域的意圖(圖10,框168)。在此過程中,實時內(nèi)核20向區(qū)域服務(wù)26發(fā)送包含該宣稱的消息。該消息可在與區(qū)域服務(wù)26的現(xiàn)有鏈路的信道上發(fā)送,或者在實時內(nèi)核20建立的與區(qū)域服務(wù)26的新鏈路上發(fā)送。作為相應(yīng),區(qū)域服務(wù)26確定用戶能力是否滿足與虛擬區(qū)域?qū)嵗嚓P(guān)聯(lián)的能力要求。如果用戶能力符合能力要求,則區(qū)域服務(wù)26向?qū)崟r內(nèi)核20返回配置數(shù)據(jù)。根據(jù)虛擬區(qū)域?qū)嵗拿枋觯渲脭?shù)據(jù)通常包括虛擬區(qū)域?qū)嵗亩x、當(dāng)前在該虛擬區(qū)域?qū)嵗齼?nèi)的對象的登記、以及與虛擬區(qū)域中的對象相關(guān)聯(lián)的實時數(shù)據(jù)流源和阱的集合。實時內(nèi)核20發(fā)起至少一個實時數(shù)據(jù)流在與至少一個實時數(shù)據(jù)流源的至少一個網(wǎng)絡(luò)連接上的傳遞,其中該至少一個數(shù)據(jù)流源分別與虛擬區(qū)域中的至少一個對象相關(guān)聯(lián)(圖10,框170)。在此過程中,實時內(nèi)核20基于從區(qū)域服務(wù)26接收的配置數(shù)據(jù)確定與虛擬區(qū)域的實例相關(guān)聯(lián)的一個或更多個網(wǎng)絡(luò)節(jié)點。實時內(nèi)核20隨后發(fā)起至少一個實時數(shù)據(jù)流在與至少一個所確定的網(wǎng)絡(luò)節(jié)點的至少一個網(wǎng)絡(luò)連接上的傳遞。實時內(nèi)核20和其他網(wǎng)絡(luò)節(jié)點之間的連接可以是對等連接或服務(wù)器仲裁的連接。關(guān)于對等連接,連接目標(biāo)網(wǎng)絡(luò)節(jié)點和實時內(nèi)核20通常彼此認(rèn)證,并且隨后建立鏈路,經(jīng)由該鏈路向或從連接目標(biāo)傳送至少一個實時數(shù)據(jù)流。鏈路通常是單向的且由發(fā)射機請求并由接收機接受或拒絕。在所解說的實施例中,實時內(nèi)核20根據(jù)虛擬區(qū)域?qū)嵗拿枋鲋械闹辽僖粋€流處置定義來處理發(fā)起的實時數(shù)據(jù)流(圖10,框172)。在此過程中,實時內(nèi)核20根據(jù)虛擬區(qū)域描述中定義的流處理配置將流處理對象集組裝成有向圖。f.遠程控制的流處置圖11示出由實時內(nèi)核20響應(yīng)于從虛擬區(qū)域服務(wù)26接收的處置指令實現(xiàn)的方法的實施例。根據(jù)圖11的方法,實時內(nèi)核20從在遠程網(wǎng)絡(luò)節(jié)點上操作的區(qū)域服務(wù)26接收一個或更多個流處置指令,其中該流處置指令包括用于處理至少一個實時數(shù)據(jù)流的流處理機的描述(圖11,框200)。實時內(nèi)核20根據(jù)流處理機描述創(chuàng)建流處理機(圖11,框202)。流處理機通常包括一個或更多個流處置指令中描述的混合功能。該混合功能用于將實時數(shù)據(jù)流與至少一個其他實時數(shù)據(jù)流混合以產(chǎn)生混合的實時數(shù)據(jù)流。實時內(nèi)核20在包括通過所創(chuàng)建的流處理機處理實時數(shù)據(jù)流的過程中產(chǎn)生所得數(shù)據(jù)流(圖11,框204)。在一些實施例中,該過程涉及從一個或更多個流處置指令中指定的實時狀態(tài)信息中確定配置參數(shù)值、以及用該配置參數(shù)值動態(tài)地配置流處理機。圖12示出由流處理機配置管理器208(其為實時內(nèi)核20的組件)根據(jù)從區(qū)域服務(wù)26接收的流處置指令210創(chuàng)建的流處理機206的實施例。流處理機配置管理器208通常由一個或更多個構(gòu)成服務(wù)和實時內(nèi)核20的其他組件構(gòu)成。流處理機配置管理器208從一組處理對象(也稱為處理圖元或PGE)構(gòu)造流處理機206。每個處理對象是能夠?qū)?shù)據(jù)流執(zhí)行特定功能(例如,變換功能、分立功能、以及混合功能)的軟件對象。流處理機配置管理器208實例化一個或更多個流處置指令中指定的處理對象并根據(jù)描述將實例化的處理對象組裝成流處理機206的有向圖組件212。在一些實施例中,流處置指令用相應(yīng)的唯一標(biāo)識符來指定處理對象且流處理機配置管理器208通過向處理對象API發(fā)起包括相應(yīng)一些標(biāo)識符的調(diào)用來實例化處理對象。流處理機206被配置成通過相應(yīng)處理鏈216-218處理特定數(shù)據(jù)類型(例如,音頻、視頻、以及運動數(shù)據(jù)類型)的多個數(shù)據(jù)流214,這些處理鏈由相應(yīng)一些處理對象構(gòu)成。流處理機206另外包括混合對象220(其在一個或更多個流處置指令中指定)。在操作中,流處理機206執(zhí)行混合對象220以從經(jīng)處理實時數(shù)據(jù)流216-218的組合產(chǎn)生混合實時數(shù)據(jù)流222。在一些實施例中,至少一個實例化的處理對象將相應(yīng)的調(diào)用封裝到驅(qū)動程序模塊224,該驅(qū)動程序模塊至少部分地基于所得數(shù)據(jù)流222控制本地網(wǎng)絡(luò)節(jié)點的硬件組件。g.實時任務(wù)調(diào)度圖13示出由實時內(nèi)核20在調(diào)度由實時內(nèi)核20執(zhí)行的任務(wù)的過程中實現(xiàn)的方法的實施例。根據(jù)圖13的方法,實時內(nèi)核20建立與至少一個遠程網(wǎng)絡(luò)節(jié)點的至少一個實時數(shù)據(jù)流連接(圖13,框230)。實時內(nèi)核20處理源自遠程網(wǎng)絡(luò)節(jié)點的至少一個實時數(shù)據(jù)流(圖13,框232)。在此過程中,實時內(nèi)核10通過一個或更多個實時數(shù)據(jù)處理操作處理該至少一個實時數(shù)據(jù)流以產(chǎn)生所得數(shù)據(jù)流。實時內(nèi)核20監(jiān)視該至少一個實時數(shù)據(jù)流的處理(圖13,框234)。在一些實施例中,實時內(nèi)核10監(jiān)視一個或更多個以下參數(shù):所得數(shù)據(jù)產(chǎn)生的速率、本地網(wǎng)絡(luò)節(jié)點的至少一個處理器的利用、以及本地網(wǎng)絡(luò)節(jié)點的至少一個連網(wǎng)資源的帶寬利用。在一些實施例中,實時數(shù)據(jù)流被分組成幀且實時內(nèi)核20在根據(jù)本地時鐘設(shè)定的每一相繼固定長度間隔期間監(jiān)視每一幀的處理,該本地時鐘通常與遠程主時鐘服務(wù)同步?;谠摫O(jiān)視,實時內(nèi)核20確定實時數(shù)據(jù)流的處理是否偏離性能目標(biāo)。在一些實施例中,性能目標(biāo)包括對產(chǎn)生所得數(shù)據(jù)流的基于時間的閾值。例如,在一些實施例中,性能目標(biāo)是對產(chǎn)生所得數(shù)據(jù)流的幀的速率的謂項(即,條件)。該類型的示例性的性能目標(biāo)包括目標(biāo)閾值和目標(biāo)范圍。響應(yīng)于確定該至少一個實時數(shù)據(jù)流的處理偏離性能目標(biāo),實時內(nèi)核20根據(jù)實時性能目標(biāo)例程修改該處理(圖13,框236)。圖14示出由實時內(nèi)核20基于對至少一個實時數(shù)據(jù)流的處理的監(jiān)視而執(zhí)行的方法的實施例。響應(yīng)于確定對該至少一個實時數(shù)據(jù)流的處理沒有滿足性能目標(biāo)(圖14,框238),實時內(nèi)核20將計算資源負(fù)載減少至較低水平(圖14,框240)。取決于實時性能目標(biāo)例程的設(shè)計,實時內(nèi)核20通常以下列方式中的一種或更多種來減少計算資源:實時內(nèi)核20可忽略實時數(shù)據(jù)流的一個或更多個部分的處理(圖14,框242);實時內(nèi)核20可忽略一個或更多個實時數(shù)據(jù)處理操作(圖14,框244);以及實時內(nèi)核20可用不同的相應(yīng)數(shù)據(jù)處理操作替代至少一個實時數(shù)據(jù)處理操作(圖14,框246)。在忽略實時數(shù)據(jù)流的一個或更多個部分的處理的過程中(圖14,框242),實時內(nèi)核20通常執(zhí)行以下操作中的至少一個:忽略一個或更多個由性能目標(biāo)之外的相應(yīng)性能值表征的數(shù)據(jù)處理操作;以及基于分別指派給各個數(shù)據(jù)處理操作的優(yōu)先級值優(yōu)先忽略一個或更多個數(shù)據(jù)處理操作。如果該至少一個實時數(shù)據(jù)流的處理滿足性能目標(biāo)(圖14,框238)且計算負(fù)載已經(jīng)通過以上描述的任一種方法被減少至較低水平(圖14,框248),則實時內(nèi)核20從該較低水平增加計算負(fù)載(圖14,框250)。實時內(nèi)核20通常根據(jù)啟發(fā)通過反轉(zhuǎn)一個或更多個用于在框240減少計算資源負(fù)載的操作來增加計算資源。如果該至少一個實時數(shù)據(jù)流的處理滿足性能目標(biāo)(圖14,框238)且計算負(fù)載并未通過以上描述的任一種方法被減少至較低水平(圖14,框248),則實時內(nèi)核20維持對實時數(shù)據(jù)流的當(dāng)前處理。在一些實施例中,實時內(nèi)核20實例化對至少一個實時數(shù)據(jù)流執(zhí)行相應(yīng)一些數(shù)據(jù)處理操作的處理對象。實時內(nèi)核20從一些被實例化的處理對象建立有向圖并通過該有向圖處理該至少一個實時數(shù)據(jù)流。取決于實時性能目標(biāo)例程,實時內(nèi)核20可通過從有向圖中刪除一個或更多個被實例化的處理對象而修改實時數(shù)據(jù)流的處理。在一些實施例中,處理對象被指派相應(yīng)的優(yōu)先級值,且實時內(nèi)核20通過基于被指派的優(yōu)先級值從有向圖中移除一些被實例化的處理對象來刪除處理對象。例如,在這些實施例中的一些中,該刪除包括從有向圖中移除一些被實例化的處理對象,這些被實例化的處理對象被指派的相應(yīng)優(yōu)先級值不滿足優(yōu)先級閾值。在一些實施例中,實時內(nèi)核20從一些被實例化的處理對象建立第二有向圖,第二有向圖被用于處理源自本地網(wǎng)絡(luò)節(jié)點和至少一個遠程網(wǎng)絡(luò)節(jié)點之一的第二實時數(shù)據(jù)流。在這些實施例的一些中,第一和第二有向圖被指派相應(yīng)的優(yōu)先級值,且實時內(nèi)核通過基于被指派的優(yōu)先級值優(yōu)先修改第一和第二有向圖之一來修改第一和第二實時數(shù)據(jù)流的處理。例如,實時內(nèi)核可卸下第一和第二有向圖中被指派最低優(yōu)先級值的那一個。在一些實施例中,實時內(nèi)核20通過有向圖處理第二實時數(shù)據(jù)流,其中第二實時數(shù)據(jù)流源自本地網(wǎng)絡(luò)節(jié)點和至少一個遠程網(wǎng)絡(luò)節(jié)點之一。在這些實施例的一些中,第一和第二實時數(shù)據(jù)流被指派相應(yīng)的優(yōu)先級值,且實時內(nèi)核20基于被指派的優(yōu)先級值優(yōu)先修改對第一和第二實時數(shù)據(jù)流之一的處理。在一些實施例中,實時內(nèi)核20建立本地網(wǎng)絡(luò)節(jié)點和多個遠程網(wǎng)絡(luò)節(jié)點之間的相應(yīng)實時數(shù)據(jù)流連接。實時內(nèi)核20通過有向圖處理源自相應(yīng)一些遠程網(wǎng)絡(luò)節(jié)點的實時數(shù)據(jù)流。在這些實施例的一些中,實時數(shù)據(jù)流被指派相應(yīng)的優(yōu)先級值,且實時內(nèi)核20基于被指派的優(yōu)先級值優(yōu)先修改對一個或更多個實時數(shù)據(jù)流的處理。有向圖通常包括相應(yīng)一些被實例化的處理對象的多個有向鏈。實時內(nèi)核20通常通過每個有向鏈處理相應(yīng)的一個實時數(shù)據(jù)流。在這些實施例的一些中,實時內(nèi)核20迭代地修改實時數(shù)據(jù)流的處理直至處理落在指定的性能目標(biāo)之內(nèi)。在每次迭代期間,該修改通常包括執(zhí)行以下一者或更多:(i)從有向圖中移除一個或更多個鏈以及(ii)從有向圖中刪除一個或更多個被實例化的處理對象。V.示例性實時內(nèi)核實施例A.引言圖15示出實時內(nèi)核20的實施例260。實時內(nèi)核260支持2D/3D圖形呈現(xiàn)引擎、音頻混合及開關(guān)引擎在不同網(wǎng)絡(luò)節(jié)點上的遠程配置和執(zhí)行以創(chuàng)建兩個或更多個通信者之間的物理存在性的感覺。在管理在同一時間在單個虛擬區(qū)域?qū)嵗薪换サ乃型ㄐ耪叩倪^程中,區(qū)域服務(wù)26經(jīng)由實時內(nèi)核260的分組傳輸組件(本文稱為STRAW服務(wù)268)遠程配置實時內(nèi)核260和其他網(wǎng)絡(luò)節(jié)點之間的會話。在一些實施例中,實時內(nèi)核260點對點(P2P)配置數(shù)據(jù)流(例如,實時音頻數(shù)據(jù)流)以便最小化與區(qū)域服務(wù)26的通信。區(qū)域服務(wù)26也可混合數(shù)據(jù)流并在必要時將其輸送至客戶端網(wǎng)絡(luò)節(jié)點。實時內(nèi)核260將向區(qū)域服務(wù)26報告P2P連接故障以便區(qū)域服務(wù)26可確定何時為客戶端網(wǎng)絡(luò)節(jié)點混合數(shù)據(jù)流。實時內(nèi)核260具有小初始覆蓋區(qū)域,并在網(wǎng)絡(luò)連接上加載更新和增加功能性作為插件。實時內(nèi)核260包括一組管理器和服務(wù)。實時內(nèi)核管理器有連接和服務(wù)混合管理器262、區(qū)域/地帶管理器264、以及插件管理器266。實時內(nèi)核服務(wù)有STRAW服務(wù)268、SODA處理機服務(wù)270、媒體服務(wù)271、音頻流服務(wù)272、So3D接口服務(wù)274、資產(chǎn)緩存服務(wù)275、一個或更多個社交服務(wù)器277,記錄、回放及傳輸總線服務(wù)276、實時調(diào)度器服務(wù)278、時間服務(wù)280、SIP服務(wù)282、本地HID/RDS驅(qū)動程序處理機服務(wù)284,以及用于包括本地音頻回放286、本地?fù)P聲器288、本地話筒290和音頻的本地音頻設(shè)備的接口服務(wù)。在一個示例性實施例中,實時內(nèi)核260由以下運行時封裝組件實現(xiàn):庫:其他插件:加密算法壓縮算法認(rèn)證算法:憑證音頻混合音頻源音頻編解碼器音頻計算圖形效果物理延伸腳本延伸輸入設(shè)備主存B.實時內(nèi)核設(shè)計如圖15所示,實時內(nèi)核260被設(shè)計為服務(wù)、插件和實時調(diào)度器的集合,其構(gòu)成用于根據(jù)從區(qū)域服務(wù)26接收的指令呈現(xiàn)虛擬區(qū)域通信環(huán)境的平臺。各服務(wù)協(xié)作以通過音頻和圖形呈現(xiàn)配置根據(jù)網(wǎng)絡(luò)特性實現(xiàn)工作在不同級別的該平臺。插件是不同種類的,每個種類附著于插件管理API且每個種類具有其自己的種類API。實時調(diào)度器278確保音頻和圖形呈現(xiàn)以均勻幀速率發(fā)生。根據(jù)虛擬區(qū)域的實例由區(qū)域服務(wù)26通過在STRAWUDP套接字(參見VI部分,其包含關(guān)于SODA記錄的示例性集合的SODA定義)上傳送的SODA定義記錄來配置該平臺。STRAW服務(wù)268使用公布/訂閱模型來多路分解SODA記錄流。SODA記錄僅在訂戶存在于STRAW套接字的另一端時才被傳送。收到的SODA記錄在抵達時被傳遞給一個或更多個訂戶。服務(wù)支持供So3D圖形引擎和HUD84使用的本地API。以下小節(jié)描述了實時內(nèi)核260及其組件的實施例的安裝、設(shè)計以及操作。1.安裝a.概覽在一些實施例中,基于虛擬區(qū)域的呈現(xiàn)平臺經(jīng)由因特網(wǎng)作為軟件包被下載為安裝包。其被HTTP下載從下載服務(wù)器傳遞。在操作操作系統(tǒng)的客戶端網(wǎng)絡(luò)節(jié)點上,平臺軟件包是.msi包。初始安裝是在更新變?yōu)榭捎脮r在下載服務(wù)器上被修改的單個包。當(dāng)新的客戶端網(wǎng)絡(luò)節(jié)點執(zhí)行當(dāng)前安裝時,不需要其他更新直至創(chuàng)建作為后續(xù)更新的此種時間。實時內(nèi)核260利用插件來定制應(yīng)用。必要的插件包括在安裝包內(nèi)。組件可不時地被獨立更新(例如,實時內(nèi)核服務(wù)可以是修正發(fā)布的且可以增加插件)。在這種情況下,可為修正發(fā)布創(chuàng)建分離的.msi安裝包并向更新服務(wù)器登記。安裝的平臺軟件將被通知該更新,并將為通信者提供升級選項。一些通信者可延遲升級直至一個以上更新可用。當(dāng)通信者最終同意升級時,所有可用的更新將被加載并被順序應(yīng)用。插件的多個版本可在同一時間在客戶端網(wǎng)絡(luò)節(jié)點上呈現(xiàn)。這是因為客戶端網(wǎng)絡(luò)節(jié)點通常商定特征,并選擇適合API和版本要求的插件。每個插件廣告其API和變量。這些插件將具有不同的文件名以避免文件系統(tǒng)中的名稱沖突。具有相同API和不同變量的兩個插件是不同的實現(xiàn),且由請求該插件的服務(wù)作出選擇(或許例如通過與服務(wù)器商定)。當(dāng)加載與現(xiàn)有插件具有相同API和變量的插件時,這是隱錯修正。新的插件替代舊的插件。服務(wù)始終由升級替代。從來沒有具有相同API的兩個服務(wù)。安裝使用清單和捆綁的相關(guān)的DLL以保證無論環(huán)境的更新狀態(tài)如何皆起效的產(chǎn)品。并排(side-by-side)特征被用于避免與其他產(chǎn)品安裝要求相沖突。b.更新服務(wù)器更新服務(wù)器包含針對每個支持的主存操作環(huán)境的安裝包,以及針對之前支持的每個安裝包的升級包。客戶端網(wǎng)絡(luò)節(jié)點和更新服務(wù)器在可靠的STRAW信道上通信。更新服務(wù)器公布針對每個支持的主存操作環(huán)境的可用升級定義。安裝在客戶端網(wǎng)絡(luò)節(jié)點上的基于虛擬區(qū)域的呈現(xiàn)平臺軟件隨后可訂閱升級。更新服務(wù)器開始發(fā)送合需的軟件塊。在一些實施例中,客戶端版本和升級工具被安裝在每個客戶端網(wǎng)絡(luò)節(jié)點上以允許用戶察看當(dāng)前客戶端軟件版本、列出可用的升級以及啟動并監(jiān)視升級過程??蛻舳司W(wǎng)絡(luò)節(jié)點將保留已被應(yīng)用的升級包的GUID的表。該表將向更新服務(wù)器呈現(xiàn)該列表,且作為回報,得到以應(yīng)用順序排列的按照GUID的待決升級的列表。它們將具有所附的描述、大小和日期屬性。升級僅在下載完成且自動安裝報告成功時被標(biāo)記為“已應(yīng)用”。自動安裝過程包括停止任何運行的SORK服務(wù)以便DLL可被重寫。通過一系列SODA記錄完成下載一升級,因此該過程可被打斷并恢復(fù)而無需重復(fù)任何數(shù)據(jù)傳遞。記錄包括升級GUID和偏移。因為對回退或重新安裝不存在要求,因此無需任何“并排”庫清單。任何要求的庫均可作為升級的一部分被加載。升級工具將產(chǎn)生注冊表項或保留一文件,該文件包含被應(yīng)用的升級的GUID、任何當(dāng)前加載升級的GUID、其偏移以及對磁盤上包含“迄今為止”的數(shù)據(jù)的文件的引用。一旦被應(yīng)用,升級包就被刪除。如果期望為多個客戶端網(wǎng)絡(luò)節(jié)點緩存升級包,則在將進行該緩存的同一客戶端代理處指向它們的每一個。c.更新本地數(shù)據(jù)庫客戶端網(wǎng)絡(luò)節(jié)點在本地文件系統(tǒng)中的資產(chǎn)目錄中存儲基于虛擬區(qū)域的呈現(xiàn)平臺服務(wù)和插件。這些服務(wù)和插件是通過API和所附資源自描述的。不保留關(guān)于客戶端網(wǎng)絡(luò)節(jié)點軟件狀態(tài)的其他信息。當(dāng)客戶端網(wǎng)絡(luò)節(jié)點重新安裝基于虛擬區(qū)域的呈現(xiàn)平臺軟件時,或許在OS(操作系統(tǒng))升級后,現(xiàn)有插件通常被重新驗證。新的安裝包括所有基礎(chǔ)服務(wù)和插件,但或許在機器上存在可選插件或應(yīng)用專用插件,此可選插件或應(yīng)用專用插件通常被刪除或被重驗證。在一些實施例中,有效插件的二進制內(nèi)容被散列并被單向加密,且結(jié)果值被存儲為用于檢查該插件是否可信的所附資源。為了驗證可疑插件,當(dāng)前插件內(nèi)容被重新散列和加密,且將結(jié)果值與現(xiàn)有資源比較。如果該內(nèi)容與資源不匹配,則該插件是無效的。d.客戶端認(rèn)證網(wǎng)絡(luò)認(rèn)證通常在每次實時內(nèi)核260一啟動時就進行。在一些實施例中,運行帳戶網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)的帳戶服務(wù)器被用于認(rèn)證通信者并為該通信者建立真實用戶標(biāo)識符(RUID)。帳戶服務(wù)器創(chuàng)建令牌(隨后被包括為RUID的一部分)并將該令牌給予客戶端網(wǎng)絡(luò)節(jié)點以向其他服務(wù)器認(rèn)證自己。在此過程中,客戶端網(wǎng)絡(luò)節(jié)點在安裝時被安全地發(fā)出一憑證。該憑證通常是由證書權(quán)威機構(gòu)簽發(fā)的CA定義的憑證。該證書包含私鑰和公鑰?;谔摂M區(qū)域的呈現(xiàn)平臺安裝包創(chuàng)建僅包含公鑰的新憑證。私鑰被安全存儲在客戶端網(wǎng)絡(luò)節(jié)點上?;谔摂M區(qū)域的呈現(xiàn)平臺安裝包使用私鑰創(chuàng)建簽名以加密通信者提供的口令的摘要,并將簽名安全傳送給帳戶服務(wù)器。帳戶服務(wù)器恢復(fù)摘要并將其存儲為客戶端標(biāo)識秘密。當(dāng)建立連接時,實時內(nèi)核260與帳戶服務(wù)器共享憑證。帳戶服務(wù)器用其憑證(例如,服務(wù)器側(cè)的證書)作出響應(yīng)??蛻舳司W(wǎng)絡(luò)節(jié)點和帳戶服務(wù)器使用注冊權(quán)威機構(gòu)驗證該憑證。一旦得到驗證,服務(wù)器側(cè)的憑證對任何地點的任何服務(wù)器都是有效的。在一些實施例中,帳戶服務(wù)器還向客戶端網(wǎng)絡(luò)節(jié)點提供隨機的128位的質(zhì)詢短語??蛻舳司W(wǎng)絡(luò)節(jié)點用通信者提供的口令的加密摘要散列該質(zhì)詢短語并將其返回作為響應(yīng)。帳戶服務(wù)器還用先前獲得的該通信者的摘要散列質(zhì)詢短語并驗證來自客戶端網(wǎng)絡(luò)節(jié)點的響應(yīng)是匹配的。網(wǎng)絡(luò)連接現(xiàn)在被認(rèn)證且通信者被標(biāo)識為私鑰的擁有者。在一些實施例中,帳戶服務(wù)器向通信者指派具有所附簽名的隨機客戶端ID。該簽名是使用該帳戶服務(wù)器私鑰加密的客戶端ID的128位散列。該簽名僅可由該帳戶服務(wù)器創(chuàng)建。接收令牌的任何人可通過使用由帳戶服務(wù)器公布的公鑰解密摘要并將該摘要與客戶端ID比較來驗證通信者。e.帳戶服務(wù)器認(rèn)證圖16示出了通過帳戶服務(wù)器的憑證來認(rèn)證帳戶服務(wù)器296的方法的實施例。根據(jù)該方法,客戶端網(wǎng)絡(luò)節(jié)點294和帳戶服務(wù)器296交換憑證(圖16,框298、300)。客戶端網(wǎng)絡(luò)節(jié)點294向帳戶服務(wù)器296發(fā)出服務(wù)器ID和服務(wù)器令牌用于后來向客戶端網(wǎng)絡(luò)節(jié)點294快速驗證帳戶服務(wù)器296(圖16,框302)。帳戶服務(wù)器296隨后向客戶端網(wǎng)絡(luò)節(jié)點294發(fā)出客戶端ID和所附的標(biāo)識令牌(圖16,框304)。使用參與者的公鑰來加密在至帳戶服務(wù)器的流上的認(rèn)證短語。2.初始化序列圖17示出由實時內(nèi)核260的加載器組件在每次啟動客戶端網(wǎng)絡(luò)節(jié)點上的操作系統(tǒng)時實現(xiàn)的方法的實施例。在此過程中,加載器解析包括一個或更多個內(nèi)核服務(wù)組件的靜態(tài)內(nèi)核組件列表(圖17,框320)。加載器確定所解析列表中的在本地儲存庫(例如,本地文件系統(tǒng)中的目錄)中缺少的所有內(nèi)核組件(圖17,框322)。加載器檢索被確定為缺少的每個內(nèi)核組件(圖17,框324)。在一些實施例中,加載器在客戶端網(wǎng)絡(luò)節(jié)點上實例化從遠程網(wǎng)絡(luò)節(jié)點(例如,下載服務(wù)器或更新服務(wù)器)檢索缺少的內(nèi)核組件的更新服務(wù)。在已經(jīng)檢索到缺少的內(nèi)核組件后,加載器從相應(yīng)一些內(nèi)核服務(wù)組件實例化內(nèi)核服務(wù)(圖17,框326)。被實例化的內(nèi)核服務(wù)被執(zhí)行以在關(guān)于虛擬區(qū)域定義的通信環(huán)境中與一個或更多個遠程網(wǎng)絡(luò)節(jié)點通信(圖17,框328)。例如,在一些實施例中,HUD84調(diào)用內(nèi)核服務(wù)以與區(qū)域服務(wù)器通信以便建立如本文詳細描述的HUD會話或區(qū)域會話。在一些實施例中,實時內(nèi)核260的以下服務(wù)在引導(dǎo)時間被加載為服務(wù)DLL:·STRAW服務(wù)268·SODA服務(wù)270·媒體服務(wù)271·音頻流服務(wù)272·連接和服務(wù)器混合管理器262·區(qū)域/地帶管理器264·資產(chǎn)緩存服務(wù)275·實時調(diào)度器服務(wù)278·HUD84·默認(rèn)插件在這些實施例中,服務(wù)通過名稱而非通過GUID被加載。一次在客戶端網(wǎng)絡(luò)節(jié)點上僅呈現(xiàn)每個服務(wù)的一個副本。加載后,SODA信道服務(wù)270、媒體服務(wù)271、音頻流服務(wù)272、區(qū)域/地帶管理器、以及實時調(diào)度器服務(wù)等待空閑。連接和服務(wù)器混合管理器使音頻不被配置并等待至區(qū)域服務(wù)器的連接的定義。默認(rèn)插件通過GUID登記為API類對象。當(dāng)由GUID在定義中引用時默認(rèn)插件被加載。HUD84聯(lián)絡(luò)帳戶服務(wù)器、認(rèn)證并標(biāo)識通信者。HUD84創(chuàng)建去往集合網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)和交互網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)的流并填充其最近使用的(MRU)朋友和區(qū)域列表及其頻繁朋友和區(qū)域列表。資產(chǎn)緩存服務(wù)275通常根據(jù)啟發(fā)來聯(lián)絡(luò)樣式數(shù)據(jù)庫服務(wù)器并開始緩存數(shù)字資源以及更新其GUID映射。3.會話實時內(nèi)核260管理客戶端網(wǎng)絡(luò)節(jié)點和其他網(wǎng)絡(luò)節(jié)點之間的會話。在會話期間,數(shù)據(jù)在服務(wù)器和客戶端網(wǎng)絡(luò)節(jié)點之間作為STRAW套接字上的SODA定義記錄被共享。數(shù)據(jù)在公布/訂閱模型中共享。實時內(nèi)核260僅訂閱客戶端網(wǎng)絡(luò)節(jié)點所需的數(shù)據(jù)。為了訂閱,實時內(nèi)核260創(chuàng)建與合需服務(wù)器的STRAW信道。STRAW信道通過公知的針對特定虛擬區(qū)域的GUID商定。在一些實施例中,STRAW套接字使用通過所配置的DNS提供的地址來連接。區(qū)域服務(wù)將發(fā)送公布消息,該消息指示通信者可用的數(shù)據(jù)流并用GUID句柄標(biāo)簽化每個數(shù)據(jù)流。實時內(nèi)核260隨后發(fā)送針對合需數(shù)據(jù)流的訂閱消息。任何針對訂閱信道的區(qū)域服務(wù)數(shù)據(jù)的變化作為SODA定義記錄被發(fā)送給已經(jīng)訂閱那些信道的所有客戶端網(wǎng)絡(luò)節(jié)點。存在兩種主要類型的會話:(a)HUD會話,其涉及在HUD84中顯示當(dāng)前關(guān)系和存在性信息;以及(b)區(qū)域會話,其涉及潛伏或進入虛擬區(qū)域?qū)嵗?。a.HUD會話在HUD會話中,HUD84聯(lián)絡(luò)帳戶服務(wù)器、RUID服務(wù)器、以及集合服務(wù)器,并通過STRAW信道訂閱通信者自身的帳戶和關(guān)系信息。HUD84隨后訂閱針對密切相關(guān)的聯(lián)系人和虛擬區(qū)域的存在性信息。在該點,HUD84可顯示針對密切相關(guān)的聯(lián)系人的動態(tài)存在性信息。b.區(qū)域會話在區(qū)域會話中,HUD84訂閱關(guān)于相關(guān)虛擬區(qū)域的信息。在一些實施例中,咨詢目錄服務(wù)器以確定主存由HUD指定的虛擬區(qū)域的當(dāng)前區(qū)域服務(wù)器。創(chuàng)建去往當(dāng)前區(qū)域服務(wù)器的STRAW流。HUD訂閱與虛擬區(qū)域相關(guān)聯(lián)的存在性數(shù)據(jù)并用當(dāng)前參與該虛擬區(qū)域的其他通信者的名稱更新其2D抬頭顯示器。在該點,通信者“潛伏”在虛擬區(qū)域中。通信者的存在可被顯示在彈出列表中,且圖標(biāo)被顯示在HUD區(qū)域表示中(例如,在圖5A-5C示出的辦公場所中)。如果通信者指導(dǎo)HUD84進入虛擬區(qū)域,隨后實時內(nèi)核向集合服務(wù)通知通信者請求進入虛擬區(qū)域。訂閱與虛擬區(qū)域相關(guān)聯(lián)的存在性信息的其他通信者被通知已進入該虛擬區(qū)域的新通信者。實時內(nèi)核260引導(dǎo)So3D引擎啟動交互環(huán)境。So3D引擎訂閱區(qū)域服務(wù)器環(huán)境數(shù)據(jù)(例如,呈現(xiàn)和運動數(shù)據(jù))。區(qū)域服務(wù)器開始向?qū)崟r內(nèi)核260流送所請求的區(qū)域服務(wù)器環(huán)境數(shù)據(jù)。實時內(nèi)核將所請求數(shù)據(jù)傳遞給So3D引擎,該引擎根據(jù)當(dāng)前可視化模式(例如,2D俯視圖、低分辨率視圖、或全沉浸性3D視圖)呈現(xiàn)數(shù)據(jù)。區(qū)域服務(wù)器定義與虛擬區(qū)域中的對象相關(guān)聯(lián)的客戶端網(wǎng)絡(luò)節(jié)點之間的原始話筒音頻媒體流。區(qū)域服務(wù)器還根據(jù)虛擬區(qū)域描述中的音頻處置指令(例如,空間效果定義和地帶定義)創(chuàng)建音頻混合元件的定義。連接和服務(wù)器混合管理器262偵聽音頻定義并創(chuàng)建針對每個定義的媒體流,其中該定義包括針對每個P2P音頻流的GUID句柄。向本地傳輸總線276登記每個媒體流并用音頻流服務(wù)272創(chuàng)建適當(dāng)?shù)囊纛l混合組件。區(qū)域/地帶管理器264還訂閱針對音頻和針對化身運動和定向數(shù)據(jù)的SODA定義。當(dāng)通信者的化身在該虛擬區(qū)域中導(dǎo)航時,區(qū)域/地帶264控制每個音頻流的增益/靜音。在一些實施例中,區(qū)域/地帶管理器264另外訂閱關(guān)系數(shù)據(jù),區(qū)域/地帶管理器264使用該關(guān)系數(shù)據(jù)經(jīng)由社交處理器277來控制化身在虛擬區(qū)域中的定向/移動/姿勢(參見圖15)。在此過程中,區(qū)域/地帶管理器264基于化身在虛擬區(qū)域中的位置和關(guān)系數(shù)據(jù)庫設(shè)定社交處理器277的參數(shù)值。這樣,當(dāng)通信者講話時,可通過改變化身頭部的位置和定向來指示關(guān)系(例如,當(dāng)化身進入虛擬區(qū)域的地帶時將其轉(zhuǎn)向成面對另一化身,或者當(dāng)進入虛擬區(qū)域的媒體地帶時將化身定向為獲得觀看屏上的最佳視圖)。在一些實施例中,社交處理器277被第三方開發(fā)者定義并經(jīng)由插件被傳遞給客戶端網(wǎng)絡(luò)節(jié)點。每個社交處理器277是在特定事件發(fā)生(例如,由靠近其他化身、或區(qū)域中的位置、或二者觸發(fā)的自動運動)時被自動執(zhí)行的指令集。社交處理器277可為控制化身或?qū)ο笤谔摂M區(qū)域中的運動的任何任意程序性例程。例如,在一些實施例中,如果化身靠近觀看屏,一種類型的社交處理器自動迅速將化身移到虛擬區(qū)域描述中定義的網(wǎng)絡(luò)并將該化身在觀看屏的前面居中以便用戶可容易地看到觀看屏的內(nèi)容。這樣,對于移動化身的復(fù)雜操縱的需要便消除了。另一種類型的社交處理器277自動旋轉(zhuǎn)和轉(zhuǎn)動化身以確認(rèn)另一用戶的存在性。例如,此類型的社交處理器的實施例被配置為自動將虛擬區(qū)域中的化身從彼此面對重定向為其中化身響應(yīng)于新的通信者進入虛擬區(qū)域而面對新的通信者的相應(yīng)取向。在這種情形中,與原來在虛擬區(qū)域中的化身相關(guān)聯(lián)的通信者不必手動操縱其化身;相反,社交處理器自動旋轉(zhuǎn)其頭部以確認(rèn)存在新的通信者。4.管理會話圖18示出了由STRAW服務(wù)268實現(xiàn)的會話管理方法的實施例。根據(jù)圖18的方法,在本地網(wǎng)絡(luò)節(jié)點,STRAW服務(wù)268根據(jù)無連接傳輸協(xié)議(例如UDP)在傳輸流上建立與遠程網(wǎng)絡(luò)節(jié)點的第一會話(例如,圖18,框362)。STRAW服務(wù)268創(chuàng)建該會話的定義,其中該定義包括網(wǎng)際協(xié)議(IP)地址、端口地址、以及傳輸協(xié)議的全局唯一標(biāo)識符。STRAW服務(wù)268向遠程網(wǎng)絡(luò)節(jié)點發(fā)送該定義。STRAW服務(wù)268確定指派給遠程網(wǎng)絡(luò)節(jié)點的第一站定義,并將第一站定義存儲在表中作為每個打開信道的屬性。在此過程中,STRAW服務(wù)268解析從遠程網(wǎng)絡(luò)節(jié)點接收的站定義記錄。站定義記錄包括一組字段,其中每個字段被相應(yīng)字段類型以及相關(guān)聯(lián)的字段值所定義,且每個字段類型被相應(yīng)的全局唯一標(biāo)識符(GUID)標(biāo)識。代表本地網(wǎng)絡(luò)節(jié)點上的一個或更多個軟件實體,STRAW服務(wù)268自動打開在第一會話中在本地網(wǎng)絡(luò)節(jié)點和遠程網(wǎng)絡(luò)節(jié)點之間傳送數(shù)據(jù)的一個或更多個信道(圖18,框364)。在此過程中,STRAW服務(wù)268向遠程網(wǎng)絡(luò)節(jié)點發(fā)送定義本地公布信道的記錄和具有與遠程公布信道之一的標(biāo)識符匹配的標(biāo)識符的每一個本地訂閱信道的記錄。在第一會話中,STRAW服務(wù)268維護標(biāo)識打開的一些信道的表并將相應(yīng)的屬性值與所標(biāo)識的信道相關(guān)聯(lián)(圖18,框366)。STRAW服務(wù)268記錄從本地網(wǎng)絡(luò)節(jié)點可用的本地公布信道、一個或更多個軟件實體請求的本地訂閱信道、從遠程網(wǎng)絡(luò)節(jié)點可用的遠程公布信道、以及遠程網(wǎng)絡(luò)節(jié)點請求的遠程訂閱信道的屬性。在此過程中,STRAW服務(wù)268為每個本地公布信道維護一記錄,該記錄包括指示在本地公布信道上公布數(shù)據(jù)的能力的軟件實體之一的標(biāo)識符、訂閱本地公布信道的遠程網(wǎng)絡(luò)節(jié)點的標(biāo)識符、以及本地公布信道的標(biāo)識符。STRAW服務(wù)268為每個本地訂閱信道維護一記錄,該記錄包括訂閱本地訂閱信道的軟件實體之一的標(biāo)識符、指示在本地訂閱信道上公布數(shù)據(jù)的能力的遠程網(wǎng)絡(luò)節(jié)點的標(biāo)識符、本地訂閱信道的標(biāo)識符、以及一個或更多個與本地訂閱信道相關(guān)聯(lián)的網(wǎng)絡(luò)傳輸參數(shù)。STRAW服務(wù)268為每個遠程公布信道維護一記錄,該記錄包括指示在遠程公布信道上公布數(shù)據(jù)的能力的遠程網(wǎng)絡(luò)節(jié)點的標(biāo)識符、以及遠程公布信道的標(biāo)識符。STRAW服務(wù)268在會話中在一個或更多個打開的信道上在本地網(wǎng)絡(luò)節(jié)點和遠程網(wǎng)絡(luò)節(jié)點之間傳送數(shù)據(jù)。在一些實施例中,以每一記錄包括一組字段的形式傳送數(shù)據(jù)。記錄的每個字段由相應(yīng)的字段類型以及相關(guān)聯(lián)的字段值所定義,且每個字段類型被相應(yīng)的GUID標(biāo)識。一些記錄是包含媒體數(shù)據(jù)的媒體記錄,該媒體數(shù)據(jù)包括可呈現(xiàn)數(shù)據(jù)的分組。其他記錄是包含配置數(shù)據(jù)的配置記錄,該配置數(shù)據(jù)包括配置設(shè)置的定義。媒體記錄和配置記錄通常被封裝在傳輸流上的傳輸記錄中。媒體記錄通常使用第一數(shù)據(jù)壓縮服務(wù)來壓縮,而配置記錄通常使用第二數(shù)據(jù)壓縮服務(wù)來壓縮。在傳輸時,STRAW服務(wù)268將傳輸記錄與傳送傳輸記錄的相應(yīng)一些信道的標(biāo)識符相關(guān)聯(lián),加密該傳輸記錄,以及按順序排列加密的傳輸記錄。在接收時,STRAW服務(wù)268解密傳輸記錄并將包含在解密的傳輸記錄中的媒體記錄和配置記錄分派給訂閱的一些軟件實體。響應(yīng)于確定第一會話失敗,STRAW服務(wù)268根據(jù)無連接傳輸協(xié)議自動嘗試在第二傳輸流上建立與遠程網(wǎng)絡(luò)節(jié)點的第二會話(圖18,框368)。在一些實施例中,STRAW服務(wù)268響應(yīng)于確定指派給遠程網(wǎng)絡(luò)節(jié)點的當(dāng)前站定義不同于建立第一會話時指派給遠程網(wǎng)絡(luò)節(jié)點的第一站定義而確定第一會話失敗。響應(yīng)于成功建立第二會話,STRAW服務(wù)268自動打開該表中標(biāo)識的每個信道(圖18,框370)。5.處理數(shù)據(jù)流實時內(nèi)核260支持用于處理由客戶端網(wǎng)絡(luò)節(jié)點從其他網(wǎng)絡(luò)節(jié)點接收的數(shù)據(jù)流的流處理機的遠程配置。響應(yīng)于從區(qū)域服務(wù)26接收的指令,實時內(nèi)核260的各種服務(wù)和其他組件協(xié)同將處理元件的有向圖構(gòu)造和配置成用于處理數(shù)據(jù)流的流處理機。區(qū)域服務(wù)指令根據(jù)由區(qū)域服務(wù)26管理的虛擬區(qū)域所主存的虛擬區(qū)域應(yīng)用來配置流處理機。圖19示出由實時內(nèi)核260的組件響應(yīng)于從區(qū)域服務(wù)26接收的遠程流處置指令實現(xiàn)的方法的實施例。根據(jù)圖19的方法,實時內(nèi)核260從一個或更多個流處置指令解析實時流處理機的描述(圖19,框330)。在此過程中,STRAW服務(wù)268從區(qū)域服務(wù)26接收用于配置流處理機的SODA定義。STRAW服務(wù)268將SODA定義分派至連接和服務(wù)器混合管理器262以及區(qū)域/地帶管理器264。連接和服務(wù)器混合管理器262從一個或更多個流處置指令解析輸入源標(biāo)識符、輸出阱標(biāo)識符、以及一個或更多個數(shù)據(jù)處理對象的每一者的相應(yīng)標(biāo)識符。連接和服務(wù)器混合管理器262實例化對應(yīng)于這些標(biāo)識符中相應(yīng)一些標(biāo)識符的實時流處置對象(圖19,框332)。連接和服務(wù)器混合管理器262向傳輸總線276登記實例化的對象。傳輸總線276根據(jù)描述創(chuàng)建包括一些被實例化的實時流處置對象的有向圖(圖19,框334)。區(qū)域/地帶管理器264將音頻計算SODA定義傳遞至有向圖內(nèi)指定的音頻計算對象。STRAW服務(wù)268從對應(yīng)于輸入源標(biāo)識符的輸入源接收實時數(shù)據(jù)流(圖19,框336)。STRAW服務(wù)268將該實時數(shù)據(jù)流傳遞至媒體服務(wù)271,該媒體服務(wù)處理該流并將其傳遞至傳輸總線276。傳輸總線276順序執(zhí)行流處理機的處理圖元以執(zhí)行對實時數(shù)據(jù)流的指定處理。流處理機在對應(yīng)于輸出阱標(biāo)識符的輸出阱產(chǎn)生所得數(shù)據(jù)流(圖19,框338)。所得數(shù)據(jù)流隨后被傳遞給客戶端網(wǎng)絡(luò)節(jié)點的呈現(xiàn)組件。6.實時內(nèi)核的服務(wù)和其他組件實時內(nèi)核260的組件包括服務(wù)、插件、以及庫。a.壓縮器庫壓縮器庫實現(xiàn)針對傳輸數(shù)據(jù)的可任選壓縮層。并非旨在壓縮協(xié)議頭部或鏈路商定交換。壓縮器庫被SODA信道服務(wù)270和被媒體服務(wù)271使用。當(dāng)配置加密時,這些服務(wù)270、271創(chuàng)建兩個壓縮器實例并以管道輸送信道數(shù)據(jù)。一個壓縮器實例被用于傳送而另一個壓縮器實例被用于接收。壓縮器庫使用由變量配置的壓縮/解壓縮插件。由服務(wù)商定壓縮變量,并將其提供給壓縮器。b.音頻流服務(wù)在一些實施例中,音頻流服務(wù)272是服務(wù)DLL。音頻流服務(wù)272管理音頻流混合。它定義用于創(chuàng)建和配置音頻處理圖元(也稱為音頻組件對象)的API,該音頻處理圖元由區(qū)域/地帶管理器264操縱。音頻流服務(wù)272是傳輸總線276的客戶端。向傳輸總線276登記所有音頻處理圖元。音頻處理圖元經(jīng)由以下API調(diào)用通過插件管理器266(PlugInMgr)來創(chuàng)建:插件管理器::API枚舉(gui插件Api)插件管理器::變量枚舉(guid標(biāo)識符,guid插件Api)插件管理器::創(chuàng)建實例(guid標(biāo)識符,guid插件Api,guid變量)插件管理器的調(diào)用::創(chuàng)建實例()API產(chǎn)生guid插件,其表示API的合需變量的實例。用于音頻處理圖元的插件API為:音頻混合音頻源音頻插入音頻發(fā)送調(diào)用程序提供變量,該變量僅由音頻流服務(wù)272傳遞。變量表示音頻處理圖元的實現(xiàn),如虛擬區(qū)域應(yīng)用中所定義的。音頻流服務(wù)272隨后創(chuàng)建封裝插件實例(guid插件)的音頻組件對象。該音頻組件使用插件管理器266來訪問插件的方法。音頻流服務(wù)272為每個音頻API創(chuàng)建正確類型的導(dǎo)出音頻組件:音頻混合音頻源音頻插入音頻發(fā)送向傳輸總線276登記音頻組件對象。傳輸總線API被用于將組件鏈接成圖。音頻組件API支持傳輸總線276和區(qū)域/地帶管理器264的操作。基類音頻組件具有音頻源和音頻阱的API,兩者都是相同插件的方面。c.STRAW服務(wù)(i)概覽在一些實施例中,STRAW服務(wù)268是服務(wù)DLL。STRAW服務(wù)268實現(xiàn)STRAW傳輸協(xié)議,該協(xié)議實現(xiàn)網(wǎng)絡(luò)節(jié)點之間通過無連接傳輸協(xié)議(例如,UDP)的面向連接的加密安全套接字連接。STRAW傳輸協(xié)議使用固定長度的全局唯一標(biāo)識符(GUID)來識別所有記錄和記錄中的所有字段類型。例如,在一些實施例中,網(wǎng)絡(luò)節(jié)點(或站)由IP_地址和端口定義。在這些實施例中,STRAW站標(biāo)識記錄定義具有以下GUID集的特定網(wǎng)絡(luò)節(jié)點:{GUID1,GUID2,GUID3,GUID4,GUID5,GUID6},其中·GUID1將STRAW記錄標(biāo)識為SODA記錄;·GUID2將STRAW記錄標(biāo)識為網(wǎng)絡(luò)節(jié)點標(biāo)識記錄;·GUID3是IP地址字段標(biāo)記;·GUID4是網(wǎng)絡(luò)節(jié)點的IP地址;·GUID5是端口號字段標(biāo)記;以及·GUID6是網(wǎng)絡(luò)節(jié)點的端口號在這些實施例中,站標(biāo)識符記錄包含可易于被壓縮為較小尺寸的二進制數(shù)據(jù)。在一些實施例中,一個或更多個STRAW記錄的尺寸可通過省略字段標(biāo)記被進一步減小。在這些實施例中,STRAW記錄的發(fā)射機和接收機知曉該STRAW記錄的格式以便字段值的語義是已知的而無需參考任何字段標(biāo)記。參考圖20,STRAW服務(wù)268管理傳輸流342上的會話340。在一些實施例中,STRAW會話的上下文中的流由一對(IP,端口)地址和傳輸GUID定義。會話包括零或更多個邏輯信道,其中信道是一系列適于特定內(nèi)核管理器(例如,So3D圖形引擎274、連接和服務(wù)器混合管理器262、以及區(qū)域/地帶管理器264)的記錄。超過一個內(nèi)核管理器可從同一流接收記錄,這些記錄由信道區(qū)分。STRAW服務(wù)268管理兩種類型的信道:包含流送數(shù)據(jù)(例如,音頻)的媒體信道;以及包含SODA定義記錄(或指令)的SODA信道。STRAW記錄在流上封裝SODA記錄和媒體記錄。STRAW記錄被加密、序列化,且包括消息完整性字段。該序列獨立于記錄源或目的,其是用于檢測無序或丟失記錄的鏈路級特征。STRAW記錄由信道標(biāo)識。GUID被用作信道標(biāo)識符。SODA和媒體記錄可在信道級被壓縮為無關(guān)于STRAW記錄封裝的流。每個SODA記錄包含一個或更多個SODA定義344。SODA定義的示例包括處理圖元(例如,音頻混合和音頻效果)、3D呈現(xiàn)資產(chǎn)(例如,紋理和網(wǎng)格)、以及RDS(例如,化身運動檢查點)。每個媒體記錄包含一個媒體分組346。媒體分組的示例包括音頻編解碼器和文本。應(yīng)用在會話上使用公知的GUIDID公布信道。內(nèi)核管理器訂閱信道。公布/訂閱模型是無連接的。訂閱信道的內(nèi)核管理器進行登記以在信道狀態(tài)變化和信道記錄到達時接收對它們的通知。(ii)流-會話-信道-記錄在STRAW會話的上下文中,流是由兩個IP地址/端口對和傳輸GUID定義的兩個網(wǎng)絡(luò)節(jié)點之間的雙向UDP套接字。流支持信道的會話。會話是邏輯的節(jié)點對節(jié)點連接。會話為兩個節(jié)點傳輸信道。會話可穿過一個或更多個代理站并通過可包含多個會話的流來傳輸。信道是在會話中在兩個網(wǎng)絡(luò)節(jié)點間傳遞SODA或媒體記錄的邏輯結(jié)構(gòu)。信道可以是可靠的或不可靠的,壓縮的或非壓縮的。信道的內(nèi)容由內(nèi)容GUID標(biāo)識。信道記錄在共享同一頭部信道_客戶端ID并具有順序分組號和MAC字段的一系列STRAW記錄中傳輸。MAC計算取決于僅在一個方向上的給定信道上的分組序列。單個信道上傳送的所有記錄共享單個配置參數(shù)集(例如,{客戶端,可靠的,壓縮的})。單個信道上的記錄被壓縮為串行流。通常僅可靠信道可被壓縮。在一些實施例中,不可靠信道可用其中在每個關(guān)鍵幀上重啟壓縮的壓縮過程來進行壓縮。在不可靠信道上丟失分組的情況下,在該信道上的記錄被丟棄直至到達關(guān)鍵幀(因為它們不能被無序解壓縮)。壓縮使用壓縮.庫(compress.lib)。為了改善壓縮,信道定義可包括預(yù)加載數(shù)據(jù),該預(yù)加載數(shù)據(jù)可貫穿壓縮器但并不被傳送。目的是用共用短語填裝壓縮狀態(tài)表。壓縮狀態(tài)表在每次收到關(guān)鍵幀時被重設(shè)和重建。(iii)SODA記錄SODA記錄是具有初始GUIDID及一個或更多個SODA定義的嵌套結(jié)構(gòu)。SODA定義具有定義類型、定義長度以及一個或更多個字段。定義類型是公知的GUID(例如,guid資產(chǎn))。長度指示字段的總尺寸。字段是因類型而異的固定字段和嵌套的SODA定義的組合。即,SODA記錄:guidIDSODA定義…SODA定義:Guid定義類型長的長度[字段]-取決于定義類型字段:固定字段或者SODA定義例如,SODA記錄被封裝在STRAW記錄中:(iv)信道可靠性和鏈路級協(xié)議STRAW記錄被編號且包含信道ID。在接收分組和短時間延遲后,傳輸發(fā)送包含針對每一信道的下一期望分組號的ACK記錄,以便發(fā)送方可確認(rèn)所傳送的記錄被接收到并可釋放本地資源。除周期性傳輸外,沒有針對該ACK的可靠性特征。該方案使用最少的網(wǎng)絡(luò)資源實現(xiàn)可靠性,假定幾乎所有記錄都被成功接收。MAC字段針對每個被傳送的STRAW記錄被計算。它在接收時被檢查。對于可靠信道:如果信道中的記錄被無序接收,則為丟失的記錄傳送NACK。MAC失敗也導(dǎo)致為期望的記錄傳送NACK。單個記錄最高允許四個NACK,且隨后該傳輸將失敗消息排隊至任何訂閱內(nèi)核管理器并擦除信道定義。對于不可靠信道:如果信道中的記錄被無序接收,則丟失的分組號被發(fā)信號至訂閱該信道的任何管理器且不發(fā)送NACK。MAC失敗也作為丟失分組指示給訂閱該信道的任何內(nèi)核管理器且不發(fā)送NACK。不存在針對丟失分組的閾值,且該信道從不被該傳輸關(guān)閉。不需要“關(guān)閉”信道。如果所有內(nèi)核管理器沒有訂閱,則信道上的數(shù)據(jù)傳輸停止。既然信道是邏輯實體,那么未使用操作系統(tǒng)資源。(v)公布/訂閱STRAW服務(wù)268維護本地公布和訂閱項的列表。每個項包含:創(chuàng)建該項的本地管理器服務(wù)器標(biāo)識符信道標(biāo)識符公布或訂閱傳輸參數(shù)(用于訂閱)用以下初始化列表{STRAW服務(wù),GUID_空,會話,訂閱,可靠,未壓縮}這樣,STRAW服務(wù)268訂閱在任何會話信道上到達的所有到達SODA記錄。這些記錄包括公布和訂閱定義。GUID_空信道從不被公布并由每一服務(wù)器假定在每一流上用公知信道ID來訂閱。STRAW服務(wù)268還維護所有到達公布定義的表,用于后來在本地列表中登記訂閱的情況所用。{ID客戶端,ID服務(wù)器,ID信道}在ID客戶端為信道旨在的特定客戶端的(可能為空的)GUID的情況下,ID服務(wù)器是信道記錄的遠程源而ID信道是信道的公知GUID。當(dāng)STRAW服務(wù)268接收針對至另一站的合需連接的會話定義時,STRAW服務(wù)268建立流,發(fā)送會話定義,并在會話信道上發(fā)送SODA記錄中的所有本地表公布項。當(dāng)公布定義到達STRAW服務(wù)268時,STRAW服務(wù)268將該定義輸入公布定義表,并隨后發(fā)送針對本地列表中在公布記錄中具有匹配信道ID的每個訂閱項的會話信道的訂閱定義。當(dāng)訂閱定義到達時,STRAW服務(wù)268開始在給定信道上發(fā)送定義更新(從公布應(yīng)用管道傳送)作為包含對該定義的SODA記錄的STRAW記錄。這些記錄可在多于一個信道上被發(fā)送。當(dāng)內(nèi)核管理器想要參與與服務(wù)器的信道時,該內(nèi)核管理器定義訂閱請求,無論是否存在去往任何服務(wù)器的任何STRAW流。如果虛擬區(qū)域應(yīng)用后來公布(即,在建立流之后),則本地表中的變化觸發(fā)表格中公布項的重新發(fā)送,這自動觸發(fā)任何在鏈路的另一端的潛在訂閱。如果內(nèi)核管理器后來訂閱且公布表中存在項,則STRAW服務(wù)268自動發(fā)送訂閱請求。該過程確保僅在接收機需要信道數(shù)據(jù)時才在鏈路上發(fā)送。(vi)信道記錄分派STRAW記錄在其到達時被解密。如果是有效的,則其嵌入記錄被解壓縮并隨后被分派給所有訂閱內(nèi)核管理器。檢查本地訂閱項的列表,且匹配信道ID(在訂閱傳輸信息中)的所有項在其消息隊列中接收該記錄的副本。訂閱內(nèi)核管理器負(fù)責(zé)在消息被處理時釋放消息。消息的大塊數(shù)據(jù)部分不被復(fù)制,但指向包含STRAW記錄的原網(wǎng)絡(luò)緩沖器。每個內(nèi)核管理器釋放消息,以便當(dāng)消息都被釋放時,網(wǎng)絡(luò)緩沖器可被重復(fù)利用。(vii)建立STRAW流客戶端網(wǎng)絡(luò)節(jié)點在流上連接與服務(wù)器和對等網(wǎng)絡(luò)節(jié)點的會話。在此過程中,每一方向其他方認(rèn)證自己。STRAW流是可信和安全的。這意味著:·客戶端網(wǎng)絡(luò)節(jié)點對伙伴的身份是確定的;·消息是私有的;·收到消息可證明曾被發(fā)送的消息(未在中間某處被修改);以及·消息將由雙方以相同方式解釋。會話定義的一部分是流傳輸插件GUID的列表。如果響應(yīng)于該定義的客戶端網(wǎng)絡(luò)節(jié)點支持這些GUID中的至少一個,則其加載插件并使用該插件來建立會話。創(chuàng)建該定義的服務(wù)器可檢查每個所涉及的客戶端網(wǎng)絡(luò)節(jié)點的支持列表并決定將哪個傳輸插件GUID包括在該定義中。會話定義的一部分是流加密插件GUID的列表。如果響應(yīng)于該定義的客戶端網(wǎng)絡(luò)節(jié)點支持這些GUID中的至少一個,則其加載插件并使用該插件來加密會話。創(chuàng)建該定義的服務(wù)器可檢查每個所涉及的客戶端網(wǎng)絡(luò)節(jié)點的支持列表并決定將哪個流加密插件GUID包括在該定義中。(viii)服務(wù)器流在一些實施例中,從客戶端網(wǎng)絡(luò)節(jié)點344到服務(wù)器346的流使用從服務(wù)器(諸如,目錄服務(wù)器、映射服務(wù)器、或區(qū)域服務(wù)器)獲得的地址來建立。該流的示例性目的包括獲得存在性信息,使用來自映射服務(wù)器的呈現(xiàn)定義呈現(xiàn)公共空間,以及使用來自區(qū)域服務(wù)器的呈現(xiàn)定義呈現(xiàn)虛擬區(qū)域。圖21示出在客戶端網(wǎng)絡(luò)節(jié)點344和服務(wù)器346之間建立服務(wù)器流的方法的實施例。根據(jù)該方法,客戶端網(wǎng)絡(luò)節(jié)點344向服務(wù)器346發(fā)送客戶端憑證和流ID(圖21,框348)。服務(wù)器346用服務(wù)器憑證和預(yù)主秘密來回復(fù)(圖21,框350)。一旦創(chuàng)建流,連接的客戶端網(wǎng)絡(luò)節(jié)點344商定密碼集,并隨后通過呈現(xiàn)其標(biāo)識令牌來認(rèn)證(圖21,框352)。服務(wù)器346呈現(xiàn)適合于該客戶端網(wǎng)絡(luò)節(jié)點344的服務(wù)器令牌(由流ID選擇并由帳戶服務(wù)器傳遞至服務(wù)器346)(圖21,框354)。(ix)客戶端流參考圖22,每個會話被由發(fā)起服務(wù)器生成的新GUID所標(biāo)識。將會話定義通知流中涉及的網(wǎng)絡(luò)節(jié)點,且每個網(wǎng)絡(luò)節(jié)點使用會話GUID和客戶端ID的散列作為流加密密鑰與另一節(jié)點通信。在圖22示出的示例性實施例中,區(qū)域服務(wù)器356定義兩個客戶端網(wǎng)絡(luò)節(jié)點358、360之間的會話??蛻舳司W(wǎng)絡(luò)節(jié)點358、360的每一個向區(qū)域服務(wù)器認(rèn)證,并使用加密信道來傳遞定義(包括會話定義)??蛻舳司W(wǎng)絡(luò)節(jié)點358、360不需要彼此共享任何進一步的認(rèn)證信息??蛻舳司W(wǎng)絡(luò)節(jié)點358、360的每一個被服務(wù)器346用相應(yīng)GUID來標(biāo)識。每個會話定義用其GUID標(biāo)識客戶端網(wǎng)絡(luò)節(jié)點358、360兩者??蛻舳司W(wǎng)絡(luò)節(jié)點358、360可使用該信息決定在會話上公布哪一信道。如果針對客戶端網(wǎng)絡(luò)節(jié)點358、360之一的流或會話失敗,該客戶端網(wǎng)絡(luò)節(jié)點使用會話失敗SODA定義來通知區(qū)域服務(wù)器356該失敗。失敗的原因包括,例如,沒有兼容的傳輸、沒有可用信道、以及可靠信道故障等。在一些實施例中,區(qū)域服務(wù)器356通過嘗試重新路由該流(例如,通過經(jīng)代理或服務(wù)器反射音頻流)來響應(yīng)會話失敗SODA定義。在一些實施例中,客戶端網(wǎng)絡(luò)節(jié)點358、360根據(jù)UDP對網(wǎng)絡(luò)地址翻譯器(NAT)的簡單穿越(簡稱為STUN)網(wǎng)絡(luò)協(xié)議來傳遞P2P。在這些實施例中,客戶端358、360通過響應(yīng)NAT來操作。服務(wù)器(例如區(qū)域服務(wù)器356)充當(dāng)STUN服務(wù)器,該STUN服務(wù)器在NAT的公共側(cè)在網(wǎng)絡(luò)中的兩個IP地址偵聽并報告NAT外部的被映射IP地址和端口。從該信息中,客戶端網(wǎng)絡(luò)節(jié)點358、360能發(fā)現(xiàn)NAT的存在和特定類型,并獲得NAT已經(jīng)為該客戶端至遠程主機的UDP連接分配的被映射(外部)IP地址(NAT地址)和端口號??蛻舳司W(wǎng)絡(luò)節(jié)點358、360隨后根據(jù)UDP協(xié)議使用該外部IP地址與另一P2P通信。有關(guān)STUN協(xié)議的其他細節(jié)可從JonathanRosenberg等人的“STUN-SimpleTraversalofUserDatagramProtocol(UDP)ThroughNetworkAddressTranslators(NATs)”(STUN-用戶數(shù)據(jù)報協(xié)議(UDP)對網(wǎng)絡(luò)地址翻譯器(NAT)的簡單穿越,因特網(wǎng)提議標(biāo)準(zhǔn)RFC3489(2003年3月))來獲得。(x)保持有效在一些實施例中,一旦建立流,客戶端網(wǎng)絡(luò)節(jié)點上的傳輸發(fā)出周期性空閑流保持有效定義?;锇榫W(wǎng)絡(luò)節(jié)點返回具有設(shè)為估計為它能忍受的最大間隔的超時的流保持有效定義。該消息的目的是保持任何NAT防火墻孔為活動的。伙伴網(wǎng)絡(luò)節(jié)點記錄合需的超時并每次延長該間隔。如果下一消息來自不同的IP和端口,則NAT超時并由保持有效創(chuàng)建新的孔。然后應(yīng)縮短該間隔。如果客戶端網(wǎng)絡(luò)節(jié)點或伙伴網(wǎng)絡(luò)節(jié)點注意到流保持有效因空閑定時器過期且沒有收到消息、或沒有收到對保持有效消息的應(yīng)答而丟失,則它發(fā)出具有極小超時的立即流保持有效。這是為了在丟失站和丟失UDP分組之間進行區(qū)分??蓢L試若干重試。如果在重試之后未收到應(yīng)答,則用失敗會話ID生成本地流故障事件,并刪除流定義。在一些實施例中,STRAW服務(wù)268通過在沒有應(yīng)用(或客戶端)干預(yù)的情況下基于本地公布和訂閱表項自動重新建立鏈路并重新鏈接所有訂閱和數(shù)據(jù)流來響應(yīng)打斷的鏈路。f.媒體信道服務(wù)在一些實施例中,媒體信道服務(wù)271是服務(wù)DLL。媒體信道服務(wù)271被用于健壯地傳遞P2P音頻和文本聊天。媒體信道服務(wù)271將壓縮流,如果配置為如此做的話。壓縮器庫按要求完成壓縮。媒體信道服務(wù)使用由變量配置的音頻編解碼器插件。變量GUID從流定義中取出。g.SODA信道服務(wù)在一些實施例中,SODA信道服務(wù)270是服務(wù)DLL。SODA信道服務(wù)270被用于健壯地傳遞SODA定義。SODA信道服務(wù)270將壓縮流,如果配置為如此做的話。壓縮器庫按要求完成壓縮。這是數(shù)據(jù)結(jié)構(gòu)被轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)序的場所。在一些實施例中,使用小端(英特爾)網(wǎng)絡(luò)字節(jié)序。h.連接和服務(wù)器混合管理器在一些實施例中,連接和服務(wù)器混合管理器262是服務(wù)DLL。在一些實施例中,連接和服務(wù)器混合管理器262輸出本地會議調(diào)度工具可用的程序API以發(fā)起與區(qū)域服務(wù)器的會話。此API是用于創(chuàng)建會話的初始項。連接和服務(wù)器混合管理器262公布活動會話定義。區(qū)域服務(wù)器在SODA信道上接收會話定義。連接和服務(wù)器混合管理器262還從音頻圖處理元構(gòu)造音頻圖。該音頻圖處理元由區(qū)域服務(wù)器26或直接通過SODA記錄或間接通過VSDL腳本來配置。在任何情況下,SODA定義是結(jié)果。在一些實施例中,連接和服務(wù)器混合管理器262處理由區(qū)域服務(wù)26發(fā)送的以下SODA定義:·音頻設(shè)備·音頻流·音頻混合·音頻效果·音頻計算·音頻記錄·音頻回放這些SODA定義在以下段落中描述。音頻設(shè)備是要向音頻傳輸總線(其為傳輸總線276的組件)登記為音頻源的本地音頻設(shè)備的定義。提供標(biāo)準(zhǔn)本地音頻源(話筒、耳機)或登記的本地音頻記錄(文件、流送CD音頻)的公知ID、連同實例ID(如果有多個耳機可用的話,則其指明為哪個耳機)。該設(shè)備被給定新的ID以在音頻傳輸總線上使用。連接和服務(wù)器混合管理器262使用公知音頻源ID創(chuàng)建音頻設(shè)備插件的適當(dāng)變量的實例并將其移交給音頻傳輸總線。音頻流是將向音頻傳輸總線登記為音頻源的傳入音頻流的定義。傳入音頻流被傳送該音頻流的信道ID定義。出于動態(tài)混合的目的(由區(qū)域/地帶管理器264進行),必須將流與化身ID相關(guān)聯(lián)。該設(shè)備使用信道ID作為其音頻傳輸總線ID。連接和服務(wù)器混合管理器262基于信道類型ID創(chuàng)建音頻流插件的適當(dāng)變量的實例并將其移交給音頻傳輸總線。音頻混合是組合音頻源和音頻阱插件的定義。該定義全面指定了插件APIID、變量ID、一個或兩個音頻傳輸總線源ID、以及相關(guān)聯(lián)的化身ID(針對區(qū)域/地帶管理器264)。連接和服務(wù)器混合管理器262基于提供的ID創(chuàng)建音頻混合插件的所指示變量并將其移交給音頻傳輸總線。音頻效果是組合音頻源和音頻阱插件的定義。該定義全面指定了插件APIID、變量ID、一個音頻傳輸總線源ID、以及相關(guān)聯(lián)的化身ID(針對區(qū)域/地帶管理器264)。連接和服務(wù)器混合管理器262基于提供的ID創(chuàng)建音頻效果插件的所指示變量并將其移交給音頻傳輸總線。音頻計算是音頻計算插件的定義。該定義全面指定了插件APIID、變量ID、相關(guān)聯(lián)的音頻傳輸總線源對象ID、該組件自己的音頻傳輸總線ID、以及兩個因情形而異的參數(shù)。音頻計算對象不直接在音頻鏈中處理音頻數(shù)據(jù)。相反,音頻計算對象基于“域?qū)ο竽P汀?、諸如手動設(shè)定(HUD中的靜音、音量控制)等外部信息、化身位置和運動、混響空間以及設(shè)置(例如,控制面板中的揚聲器選擇)來計算其他音頻圖組件的設(shè)定?;诓煌某尸F(xiàn)定時器事件(通常比普通音頻呈現(xiàn)更少)執(zhí)行音頻計算對象。這是因為它們用作計算輸入的數(shù)據(jù)變化很慢。連接和服務(wù)器混合管理器262基于提供的ID創(chuàng)建音頻計算插件的所指示變量并將其移交給音頻傳輸總線。音頻記錄是音頻阱插件的定義。該定義將音頻圖中的點鏈接至存儲組件。在呈現(xiàn)時間,音頻記錄組件不自己觸發(fā)呈現(xiàn)。但是若呈現(xiàn)由另一音頻阱組件觸發(fā),則將呈現(xiàn)的音頻數(shù)據(jù)提供給音頻記錄對象用于傳遞給所指示的存儲組件。連接和服務(wù)器混合管理器262創(chuàng)建該音頻阱插件并將其移交給音頻傳輸總線。音頻回放是音頻源插件的定義。該定義將音頻圖中的點鏈接至存儲組件。如果音頻鏈參考該組件,則在幀準(zhǔn)備時間從存儲組件中取出一個時間片的音頻數(shù)據(jù)并將其提供為該組件的輸出。連接和服務(wù)器混合管理器262創(chuàng)建該音頻源插件并將其移交給音頻傳輸總線。連接和服務(wù)器混合管理器262根據(jù)從區(qū)域服務(wù)器接收的定義配置傳輸總線276和音頻流服務(wù)272。每個定義導(dǎo)致創(chuàng)建音頻處理圖元,該音頻處理圖元是音頻流插件、音頻計算插件、或音頻源插件。本地音頻設(shè)備(例如,話筒、揚聲器、和Skype音頻)可根據(jù)通過HID配置工具選擇的設(shè)置來配置。HID配置工具允許用戶選擇鍵盤和鼠標(biāo)選項用于在3D協(xié)作空間中導(dǎo)航。例如,可定義快捷鍵,且鼠標(biāo)姿勢限制于化身行為。在一些實施例中,音頻輸出選擇遵循控制面板中針對音頻和語音的“聲音和音頻設(shè)備”設(shè)置。這確保用于虛擬區(qū)域通信的音頻設(shè)置與用于常規(guī)VOIP會話的音頻設(shè)置相同。如果區(qū)域服務(wù)器會話傳輸失敗,則連接和服務(wù)器混合管理器262嘗試恢復(fù)。它卸下該會話并在不同區(qū)域服務(wù)器上重新啟動該會話。如果媒體流失敗,則連接和服務(wù)器混合管理器262嘗試恢復(fù)。在此過程中,連接和服務(wù)器混合管理器262嘗試重新連接至客戶端網(wǎng)絡(luò)節(jié)點。如果重新連接嘗試失敗,則連接和服務(wù)器混合管理器262將通信者狀態(tài)定義為對區(qū)域服務(wù)器不可聽的。i.區(qū)域/地帶管理器在一些實施例中,區(qū)域/地帶管理器264是服務(wù)DLL。區(qū)域/地帶管理器264根據(jù)地帶定義和化身位置定義調(diào)整音頻流服務(wù)272混合參數(shù)。區(qū)域服務(wù)26向區(qū)域/地帶管理器264公布將每個化身與響應(yīng)于該化身的運動的音頻處理圖元聯(lián)系在一起的SODA定義?;砦恢脭?shù)據(jù)被用于根據(jù)本地地帶定義以允許每個通信者在適當(dāng)音頻位置以適當(dāng)音量聽到其他通信者的方式混合來自參與虛擬區(qū)域的每個客戶端網(wǎng)絡(luò)節(jié)點的音頻流。應(yīng)用到音頻處理圖元的參數(shù)值通常取決于包括相對位置、通信者的取向、地帶定義、虛擬區(qū)域的音頻屬性、以及由通信者配置的手動設(shè)置(例如,靜音、音量)的計算。在一些實施例中,區(qū)域/地帶管理器264處理以下SODA定義,這些SODA定義屬于其中呈現(xiàn)當(dāng)前音頻圖的模擬音頻空間的總特征。·音頻混響·音頻孔徑·音頻障礙這些SODA定義在以下段落中描述。音頻混響是導(dǎo)致某些混響或回聲效果的“中空空間”的混響空間的定義。該定義用位置標(biāo)識簡單的幾何形狀。在調(diào)用音頻計算對象時,該定義在域?qū)ο竽P?DOM)中被提供給所有音頻計算對象。音頻孔徑是兩個混響空間之間的連接的定義。它通過ID標(biāo)識兩個混響空間,并指定兩個空間之間的音頻連接。該連接在某一位置和方向上為圓形。在調(diào)用音頻計算對象時,該定義在域?qū)ο竽P?DOM)中被提供給所有音頻計算對象。音頻障礙是對聲音傳播的物理障礙物的定義。它被建模為一位置處的球體。在調(diào)用音頻計算對象時,該定義在域?qū)ο竽P?DOM)中被提供給所有音頻計算對象。以上描述的SODA定義是對音頻計算對象的輸入,音頻計算對象是采用以下參數(shù)作為自變量的腳本計算插件:聲音源和聲音阱兩者的物理性質(zhì);針對源和阱的地帶定義;手動設(shè)置(單獨靜音、音量/AGC);環(huán)境設(shè)置(全局靜音、音量);以及房間音頻特性。初始音頻計算插件包括:手動靜音;手動音量;位置;多普勒偏移;取向(朝向/背離);地帶;以及房間混響。一些計算對于單獨音頻源是適當(dāng)?shù)?;而一些計算對于整個房間的最終混合是適當(dāng)?shù)?。虛擬區(qū)域應(yīng)用可通過在音頻定義中參考新插件而隨意引入新插件。區(qū)域/地帶管理器264將訂閱其不具有的插件,并從區(qū)域服務(wù)器接收其定義。圖23示出四通信者音頻處理圖380的示例,該音頻處理圖可由區(qū)域服務(wù)器應(yīng)用指定。出于簡化,通常在完整音頻處理圖中存在的某些音頻處理圖元(例如,編解碼器、網(wǎng)絡(luò)、濾波、特殊效果、以及差錯消除圖元)已被從此示例中省去。箭頭382、384、386、388、390表示音頻源,它們都是單聲道干音頻源。化身1、2和3是來自遠程客戶端網(wǎng)絡(luò)節(jié)點的網(wǎng)絡(luò)流。密談是來自指定源的可選本地音頻饋送。音頻聲像控制(panner)左邊的所有東西都是具有一系列附加效果的單聲道。這些效果包括根據(jù)地帶和揚聲器取向調(diào)整音量并施加多普勒偏移以考慮講話者和傾聽者的相對速度。音頻聲像控制將每個經(jīng)調(diào)整的單聲道信號安置在虛擬區(qū)域的當(dāng)前占據(jù)地帶的三百六十度音頻空間內(nèi)。使用講話者相對于傾聽者的位置。音頻聲像控制右邊的所有東西是5.1音頻。房間音頻處理圖元計算對音頻信號的房間聲學(xué)效果。它考慮講話者和傾聽者的位置、房間特性、以及障礙。最終混合音頻處理圖元將所有經(jīng)處理的音頻信號加在一起以產(chǎn)生被管道傳送至指定音頻輸出設(shè)備(即,SPKR,其在所解說的示例中表示本地?fù)P聲器)的所得流。一些音頻處理圖元(插入物)具有固定參數(shù)且,因此,與任何運行時計算插件腳本不相關(guān)聯(lián)。這些元件包括回聲和噪聲消除、自動增益控制(AGC)、寂靜檢測、固定源聲像控制、以及最終混合。j.資產(chǎn)緩存服務(wù)在一些實施例中,資產(chǎn)緩存服務(wù)275是服務(wù)DLL。資產(chǎn)被記錄在由GUID索引的本地數(shù)據(jù)庫或表服務(wù)中。資產(chǎn)數(shù)據(jù)被保留在非晶存儲池中。關(guān)于特定資產(chǎn)的ID從不會改變,由此避免了任何緩存一致性問題。資產(chǎn)由SODA記錄緩存。這意味著大資產(chǎn)可存儲為許多片,因為SODA記錄被限制在UDPMTU的大小(大約1000字節(jié))。資產(chǎn)緩存必須通過GUID和數(shù)據(jù)偏移來索引記錄,數(shù)據(jù)偏移是SODA記錄中的字段。(i)資產(chǎn)索引資產(chǎn)在類表、以及可選的屬性表中表示。資產(chǎn)類表將資產(chǎn)GUID映射至類GUID和數(shù)據(jù)存儲參考。資產(chǎn)ID資產(chǎn)類數(shù)據(jù)存儲guid表面guid類紋理<圖像1>guid會議表表面guid類紋理<圖像2>guidSococo會議表表面guid類紋理<圖像3>guidDog顯示網(wǎng)格guid類網(wǎng)格<圖像4>guid名稱Sococo會議名稱guid類文本“會議”guid作者DVWguid類文本“DavidVanWie”資產(chǎn)屬性表向資產(chǎn)附加被標(biāo)記的屬性標(biāo)量值。(ii)數(shù)據(jù)存儲基于虛擬區(qū)域的呈現(xiàn)平臺的資產(chǎn)存儲接口允許堆積數(shù)據(jù)、事務(wù)性地存儲分離索引、以及提取未用資產(chǎn)存儲以重新使用。數(shù)據(jù)庫和文件的組合將用于資產(chǎn)存儲。數(shù)據(jù)庫包含兩個表:存儲分配表,以及GUID/偏移索引。文件是根據(jù)配置的緩存大小以固定大小創(chuàng)建的。使用堆-存儲段(heap-bucket)算法將資產(chǎn)存儲在文件中。資產(chǎn)緩存數(shù)據(jù)存儲將通過GUID和偏移來索引。堆由以2的冪的數(shù)據(jù)大小被劃分成存儲段。最小的存儲段為32字節(jié);最大的存儲段為2k字節(jié),其共構(gòu)成7個存儲段。每個存儲段被預(yù)算編制相同量的存儲,這意味著每個連繼存儲段中存在一半的數(shù)據(jù)項。每個存儲段是大到足以散列足夠數(shù)據(jù)項來完成存儲預(yù)算的堆表,該存儲預(yù)算使散列沖突的機會相當(dāng)小。(iii)SODA資產(chǎn)定義記錄資產(chǎn)被封裝在SODA記錄中供傳輸。定義包括資產(chǎn)GUID、其內(nèi)容(未結(jié)構(gòu)化數(shù)據(jù))及其偏移(如果大于一個記錄的話)、以及屬性表。封裝資產(chǎn)的SODA記錄從不包含對存儲系統(tǒng)的任何參考。偏移和數(shù)據(jù)字段可重復(fù)只要它們適合一個記錄。對資產(chǎn)的查詢是定義。使用定義忽略資產(chǎn)(iv)屬性等級資產(chǎn)具有屬性,最重要的屬性是類型和默認(rèn)。類型指定資產(chǎn)的用途。默認(rèn)指定可被用于代替給定資產(chǎn)的基礎(chǔ)資產(chǎn)。示例性的屬性等級在下表中示出:名稱類型默認(rèn)值空白紋理空<圖像5>木材粒度7紋理空白<圖像6>表頂部1紋理木材粒度7<圖像7>會議表木材紋理表頂部1<圖像8>Sococo表紋理會議表木材<圖像9>在此示例中,包括Sococo表紋理的虛擬區(qū)域場景將使用第一可用紋理來呈現(xiàn),從Sococo表到會議表木材、然后是表頂部1等之中搜索。樣式基礎(chǔ)將具有基于默認(rèn)資產(chǎn)的巨大資產(chǎn)等級樹,所有資產(chǎn)最終基于較小數(shù)目的基礎(chǔ)資產(chǎn)。這些基礎(chǔ)資產(chǎn)被安裝作為客戶端軟件包的一部分。該特征旨在允許設(shè)計具有指定樣式資產(chǎn)被調(diào)出的等級,以及允許在實際設(shè)計所有樣式資產(chǎn)之前呈現(xiàn)該資產(chǎn)??赡苓€期望在加載所有樣式資產(chǎn)之前啟動虛擬區(qū)域的呈現(xiàn)??蛇x屬性包括默認(rèn)、作者、應(yīng)用和作為對從中導(dǎo)出資產(chǎn)的Collada源的參考的ColladaID。作者站上運行的瀏覽工具將通過任何和所有屬性來索引資產(chǎn)。k.音頻傳輸總線音頻傳輸總線是處置音頻流的傳輸總線276的組件。在一些實施例中,音頻傳輸總線由作為組件對象集合管理音頻圖的庫實現(xiàn)。所有音頻圖對象通過唯一ID向音頻傳輸總線登記。音頻傳輸總線負(fù)責(zé)在呈現(xiàn)音頻時管理音頻圖對象。音頻傳輸總線通過ID跟蹤音頻圖組件。在此過程中,音頻傳輸總線依次調(diào)用每個音頻圖組件,提供來自由ID命名的輸入組件的音頻數(shù)據(jù)。音頻傳輸總線緩沖客戶端網(wǎng)絡(luò)節(jié)點上可用的每個音頻流的一個時間間隔。音頻傳輸總線饋送這些流至由音頻流服務(wù)272配置的零或更多個訂戶。流送數(shù)據(jù)使用拖拉模型,其中最終輸出級調(diào)用之前的級以獲得需要的數(shù)據(jù)。每級調(diào)用一個之前的級直至到達原音頻流源。如果源需要控制速率(流控制),通常進行其自身的緩沖并具有其自身的特定信令方案。例如,本地文件源可雙緩沖并在處理之前一個時間間隔的同時向前讀取一個時間間隔。網(wǎng)絡(luò)文件源可通過網(wǎng)絡(luò)向服務(wù)器信號通知流速率和緩沖器限制。另一方面,本地話筒源根本沒有控制流速率的能力。音頻傳輸總線在兩個階段操作:一旦出現(xiàn)呈現(xiàn)定時器事件,其向音頻阱組件提供現(xiàn)有的呈現(xiàn)數(shù)據(jù);音頻傳輸總線隨后遍歷音頻圖,致使下一時間片的音頻數(shù)據(jù)被呈現(xiàn)并被緩存。該技術(shù)給予音頻圖一個提供連續(xù)回放的很好機會,甚至在存在可變等待時間音頻源數(shù)據(jù)時也是如此。在一些實施例中,音頻傳輸總線測量每個音頻音頻圖組件的呈現(xiàn)等待時間,并通過合計所有相關(guān)(源)音頻組件等待時間來聚集每個呈現(xiàn)鏈等待時間。音頻傳輸總線收集并登記呈現(xiàn)等待時間統(tǒng)計?;谶@些統(tǒng)計,實時調(diào)度器278確定應(yīng)當(dāng)何時以及如何修改音頻圖才能達成音頻圖處理目標(biāo)。在一些實施例中,實時調(diào)度器278在確定應(yīng)當(dāng)何時以及如何修改音頻圖才能達成音頻圖處理目標(biāo)的過程中執(zhí)行以上結(jié)合圖13和14描述的一種或更多種方法。音頻傳輸總線的另一個功能是周期性調(diào)用音頻計算對象。音頻計算對象被用于改變相關(guān)聯(lián)的一些音頻圖處理元件的設(shè)置。音頻計算執(zhí)行的周期通常比音頻圖呈現(xiàn)周期要長的多(頻繁度更低)。音頻傳輸總線通常具有記錄流和重放被記錄的流的能力。原音頻流通常被記錄以便在回放期間,可根據(jù)觀看者的角度來重新呈現(xiàn)混合。一些實施例包括接收所有原音頻流的中樞。在這些實施例中,該中樞通常處置會話記錄。當(dāng)不期望重新呈現(xiàn)會話時,音頻傳輸總線通常僅在客戶端網(wǎng)絡(luò)節(jié)點上記錄音頻流。音頻源對象是所有音頻源的基礎(chǔ)。該對象在被輪詢時傳遞數(shù)據(jù),并定義其期望等待時間和信道(例如,單聲道、立體聲、5.1)。導(dǎo)出對象包括話筒、媒體流、剪輯、波形文件、DirectX音頻、以及混合插件的輸出側(cè)。音頻阱對象是音頻輸出設(shè)備的基礎(chǔ)對象。該對象在被輪詢時請求來自音頻源的數(shù)據(jù)。導(dǎo)出對象包括揚聲器、媒體流以及混合插件的輸入側(cè)。(i)音頻插件API在一些實施例中,音頻插件結(jié)合可從Steinberg媒體技術(shù)GmbH獲得的VST音頻效果C++對象。特別是,音頻插件結(jié)合包裝為插件的VST對象。提供填充庫(shimlibrary)用于包裝VST對象作為音頻插件。該包裝提供音頻插件API。VST對象的API將被用作音頻插件類專用API。該API包括:設(shè)定總線排列(輸入、n輸入、輸出、n輸出)獲得總線排列(方向、索引、揚聲器&)能處理樣本大小(大小)獲得等待時間樣本()建立處理(處理)設(shè)定處理(狀態(tài))處理(數(shù)據(jù)&)獲得尾部樣本()在這些實施例中,VST插件被包裝為音頻源和音頻阱。例如,音頻源::幀(數(shù)據(jù)&,大小)調(diào)用將作為對之前音頻源::幀(數(shù)據(jù)&,大小&)、繼之以建立處理(處理)和處理(數(shù)據(jù)&)的調(diào)用來實現(xiàn)。配置(等待時間&,信道布局&)調(diào)用根據(jù)針對每個支持信道的獲得等待時間樣本()和獲得總線排列(輸出,i,信道布局&)來實現(xiàn)。包裝的存在意味著需要VST源代碼來將現(xiàn)有的VST插件填充入音頻總線。(ii)OpenAL(打開音頻庫)使用可從www.openal.org獲得的OpenAL跨平臺音頻API來執(zhí)行大部分音頻處理圖混合和效果元件。該OpenAL庫能夠使用可用聲卡的最佳特征來計算以上在區(qū)域/地帶管理器部分列出的所有參數(shù)以實現(xiàn)這些特征。特別是,為音頻圖中從靜音到最終混合的每個操作創(chuàng)建OpenAL源、傾聽者、以及程序緩沖器。在每次更新之前,根據(jù)計算插件修改緩沖器參數(shù)。在一些實施例中,使用可從GlobalIPSolutions,Inc.(全局IP方案公司)獲得的GIPS組件化音頻庫來實現(xiàn)流處理組件(插入物)。GIPS音頻庫直接支持以下音頻插件:編解碼器、差錯消除、抖動控制、回聲和噪聲消除、AGC、以及寂靜檢查。I.本地流源本地流源是話筒、諸如記錄的波形文件和音樂之類的本地聲源、以及聲音樣式資源。操作系統(tǒng)API被用于附連這些源的每一者并將其呈現(xiàn)給音頻傳輸總線用于分發(fā)。每個源被“包裝”為音頻源導(dǎo)出類。當(dāng)接收定義時(參見第VI部分的音頻設(shè)備SODA定義),創(chuàng)建源對象包裝。針對話筒、剪輯、Skype、以及CD聲音在基于的計算系統(tǒng)上使用直接聲音API。RTP流送僅僅是實時協(xié)議(RTP)服務(wù)周圍的音頻源包裝,該實時協(xié)議服務(wù)用于通過UDP套接字傳遞流送數(shù)據(jù)(例如,音頻)。通過因特網(wǎng)的流送音頻支持基于web的下載及播放以及還有微軟媒體服務(wù)器流。在一些實施例中,實時內(nèi)核260支持基于虛擬區(qū)域的通信與基于非虛擬區(qū)域的通信(例如,Skype和VOIP音頻)的會話的發(fā)源和混合。在這些實施例中,實時內(nèi)核截取基于非虛擬區(qū)域的通信并將其呈現(xiàn)為本地音頻源。基于非虛擬區(qū)域的通信會話由通信者之一在負(fù)責(zé)與其他網(wǎng)絡(luò)節(jié)點共享該基于非虛擬區(qū)域的通信會話的原始音頻的客戶端網(wǎng)絡(luò)節(jié)點上發(fā)起。主存客戶端網(wǎng)絡(luò)節(jié)點還混合與虛擬區(qū)域通信環(huán)境相關(guān)聯(lián)的音頻,該通信環(huán)境針對經(jīng)由該基于非虛擬區(qū)域的通信應(yīng)用通信的通信者。圖24示出使人們能經(jīng)由不同通信應(yīng)用(例如,Skype和VOIP)與虛擬區(qū)域通信者通信的計算機系統(tǒng)389(標(biāo)記為“系統(tǒng)2”)的實施例。在圖24中,在共享虛擬區(qū)域的四個網(wǎng)絡(luò)節(jié)點(即,系統(tǒng)1、系統(tǒng)2、系統(tǒng)3和系統(tǒng)4)之間建立音頻通信信道。系統(tǒng)1表示不運行基于虛擬區(qū)域的通信應(yīng)用的客戶端網(wǎng)絡(luò)節(jié)點;相反,系統(tǒng)1被配置為操作一替換通信應(yīng)用(例如,Skype)。系統(tǒng)2表示正運行實時內(nèi)核260的實施例的通信者網(wǎng)絡(luò)節(jié)點,該實時內(nèi)核包括發(fā)出并混合與系統(tǒng)1的基于虛擬區(qū)域的會話的流處理機391。在此過程中,流處理機391使用虛擬化系統(tǒng)1的回放和音頻捕獲流的集成組件393。系統(tǒng)3和4表示正運行基于虛擬區(qū)域的通信應(yīng)用的兩個其他客戶端終端。圖24中示出的系統(tǒng)的諸組件包括:·流處理機391:由以下音頻圖處理元件構(gòu)成的:○集成組件393虛擬化替換回放和捕獲流。在此過程中,集成組件393發(fā)送話筒(Mic)1至接收自虛擬化替換回放的C拆分1,從P混合接收話筒2、3和4混合,以及發(fā)送虛擬化替換捕獲用于傳輸至系統(tǒng)1?!餋拆分1從集成組件393接收話筒1并將話筒1發(fā)送至P路由和I/O多路復(fù)用器/多路分解器兩者?!餋拆分2從系統(tǒng)2捕獲接收話筒1并將話筒2發(fā)送至P混合和I/O多路復(fù)用器/多路分解器兩者?!餚路由從C拆分1接收話筒1以及從I/O多路復(fù)用器/多路分解器接收話筒2和3。P路由還向系統(tǒng)2回放發(fā)送話筒1、3和4以及向P混合發(fā)送話筒3和4?!餚混合從C拆分2接收話筒2以及從P路由接收話筒3和4,向流處理機391發(fā)送話筒2、3、4的混合用于虛擬化之外的傳輸?!:由基于虛擬區(qū)域的通信應(yīng)用進行的音頻捕獲·P:由基于虛擬區(qū)域的通信應(yīng)用進行的音頻回放·CA:由系統(tǒng)1的替換音頻應(yīng)用進行的音頻捕獲·PA:由系統(tǒng)2的替換音頻應(yīng)用進行的音頻回放·虛擬話筒:與系統(tǒng)2的替換音頻相關(guān)聯(lián)的虛擬話筒·虛擬揚聲器:與系統(tǒng)2的替換音頻相關(guān)聯(lián)的虛擬揚聲器在計算機系統(tǒng)389的操作中,I/O多路復(fù)用器/多路分解器將接收自系統(tǒng)1和2的音頻信號1和2發(fā)送至系統(tǒng)3和4兩者。I/O多路復(fù)用器/多路分解器還將接收自系統(tǒng)3和4的音頻信號3和4發(fā)送至流處理機391的P路由組件。P路由組件向系統(tǒng)2的回放組件發(fā)送音頻信號1、3和4并將音頻信號3和4傳遞給系統(tǒng)2的P混合組件。流處理機391的P混合組件混合音頻信號2、3、4并將經(jīng)混合的信號傳遞給系統(tǒng)2的集成組件。集成組件393將經(jīng)混合的信號傳遞給正在系統(tǒng)2上運行并對應(yīng)于系統(tǒng)1使用的通信應(yīng)用395(例如,Skype)的替換通信應(yīng)用(例如,Skype)的音頻捕獲組件。替換音頻捕獲系統(tǒng)(CA)將捕獲的經(jīng)混合信號2+3+4傳遞給在系統(tǒng)1上運行的替換通信應(yīng)用395的回放組件。在通信基礎(chǔ)結(jié)構(gòu)389的一些實施例中,P混合直接訂閱I/O多路復(fù)用器/多路分解器以使該系統(tǒng)更對稱。在這些實施例中,P路由變?yōu)镻混合1,并從I/O接收3、4,以及從C拆分1接收1。因為這些信號作為獨立信道發(fā)送,則C拆分1的輸出可能直接被發(fā)送至回放組件,但這是不夠靈活的(因為P混合可能執(zhí)行實際的混合而非獨立信道的傳遞,參見以下3)。在此情況下,P混合變?yōu)镻混合2,并從I/O接收3、4,以及從C拆分2接收2。該混合器的輸出是真實混合,因為替換音頻系統(tǒng)是單聲道通信系統(tǒng)(即使該聲道是立體聲的,另一端不存在組合來自多個源的信號的多軌混合器)。圖24并未示出系統(tǒng)3和系統(tǒng)4彼此之間的交互,僅僅示出與系統(tǒng)2以及通過延伸而與系統(tǒng)1的交互。系統(tǒng)3和4之間的交互可以如上所述,是對等的或是服務(wù)器仲裁的。在圖24中,在任何時間,兩個流用逗號分隔(意指它是多信道路由),該系統(tǒng)也可發(fā)送經(jīng)混合的流以節(jié)約內(nèi)部通信資源(例如,在I/O多路復(fù)用器/多路分解器之外)。將被混合的流用加號來指示(即,由集成組件393向替換捕獲組件CA發(fā)送的虛擬化話筒信號)。m.實時調(diào)度器在一些實施例中,實時調(diào)度器服務(wù)278是服務(wù)DLL。在一些實施例中,音頻和3D場景的呈現(xiàn)在逐幀基礎(chǔ)上進行。最初,流被啟動,隨后在一延遲后,實時調(diào)度器服務(wù)278開始處理第一幀。該延遲是由每個音頻和視頻處理鏈的組合期望等待時間校準(zhǔn)的。實時調(diào)度器服務(wù)278發(fā)起對之前準(zhǔn)備幀的消耗并隨后在具有50毫秒周期的時間計時上處理下一幀。將每一鏈中的最終呈現(xiàn)對象向?qū)崟r調(diào)度器服務(wù)278登記。從SoFrameRenderer類導(dǎo)出這些對象,SoFrameRenderer類是一種方法幀呈現(xiàn)(時間幀Ms)該方法從呈現(xiàn)鏈特有的數(shù)據(jù)源(音頻或視頻)準(zhǔn)備具有所指示時間的一幀。SoFrameRenderer類包括另一種方法幀傳遞()該方法將之前準(zhǔn)備的幀傳遞至最終目的地,該最終目的地是該呈現(xiàn)鏈特有的。SoFrameRenderer對象并不要求能夠緩沖多于一個完整幀。實時調(diào)度器服務(wù)278將按調(diào)度來幀傳遞該之前準(zhǔn)備的幀,并隨后調(diào)用幀呈現(xiàn)以準(zhǔn)備下一間隔的幀。操作系統(tǒng)沒有“硬調(diào)度”能力。在一些實施例中,實時調(diào)度器服務(wù)278被配置為調(diào)用一個或更多個SoFrameRenderer類,其包括音頻處理器、圖形處理器、物理建模和腳本。SoFrameRenderer類使實時調(diào)度器服務(wù)278能響應(yīng)于確定客戶端網(wǎng)絡(luò)節(jié)點不能跟上目標(biāo)處理級別而重新調(diào)整幀處理。在一些實施例中,實時調(diào)度器278實現(xiàn)以上結(jié)合圖13和14描述的一種或更多種方法。在一些實施例中,實時調(diào)度器服務(wù)278測量所有幀的呈現(xiàn)時間,并作出通過SODA接口可用的統(tǒng)計。如果統(tǒng)計落在范圍之外(例如,采用了太長時間來準(zhǔn)備幀),則生成日志事件。啟發(fā)將被觸發(fā)以嘗試“追上”,或許通過跳過一幀、丟棄范圍之外的呈現(xiàn)鏈(這通常是因硬件或網(wǎng)絡(luò)差錯導(dǎo)致的范圍之外)、或者通過丟棄低優(yōu)先級呈現(xiàn)鏈。出于實現(xiàn)基于優(yōu)先級的調(diào)度的目的,SoFrameRenderer類定義該方法:幀優(yōu)先級()該方法返回一數(shù)字,越小的數(shù)字越重要。啟發(fā)可從鏈的等待時間和優(yōu)先級確定應(yīng)該丟棄哪個(些)鏈以產(chǎn)生對總優(yōu)先級具有最小影響的最大收益。在一些實施例中,實時調(diào)度器服務(wù)278另外能丟棄鏈中的級。為此,實時調(diào)度器服務(wù)278能調(diào)用方法:等待時間=幀刪除(優(yōu)先級)其中處理鏈負(fù)責(zé)“丟棄”低于所指示的優(yōu)先級的“鏈路”。實時調(diào)度器服務(wù)278可啟動在最大優(yōu)先級處的調(diào)用并倒數(shù)直至所有幀在期望總等待時間內(nèi)呈現(xiàn)。迭代丟棄低優(yōu)先級鏈并刪除這些鏈本身的組合啟發(fā)通常在某一優(yōu)先級級別終止。如果優(yōu)先級級別在閾值之下,則可作出日志項以及,在某些情況下,關(guān)閉該會話。實時調(diào)度器服務(wù)278還負(fù)責(zé)管理至SIS時間服務(wù)(網(wǎng)絡(luò)資源)的接口,以使客戶端網(wǎng)絡(luò)節(jié)點時鐘與網(wǎng)絡(luò)中的其他客戶端網(wǎng)絡(luò)節(jié)點的時鐘同步。在一些實施例中,時間服務(wù)由插件實現(xiàn),如下所述。7.故障恢復(fù)實時內(nèi)核260進行盡力嘗試以在出現(xiàn)網(wǎng)絡(luò)和服務(wù)器故障的情況下繼續(xù)操作。在此過程中,實時內(nèi)核260實現(xiàn)兩層故障恢復(fù)算法。首先,在故障時,SODA信道服務(wù)270和媒體服務(wù)271獨立嘗試重新建立連接。媒體恢復(fù)將允許會議在出現(xiàn)單個音頻信道故障時繼續(xù),或者在NAT超時的情況下恢復(fù)。其次,如果SODA信道服務(wù)270和媒體服務(wù)271未能重新建立連接,則它們將向其客戶端信號通知該故障。在一些實施例中,多個通信者同時嘗試恢復(fù)的動作可通過向可同步恢復(fù)嘗試的區(qū)域vault服務(wù)器登記該客戶端節(jié)點會話來協(xié)調(diào)。在一些實施例中,區(qū)域/地帶管理器264還嘗試在服務(wù)器故障的情況下進行恢復(fù)。區(qū)域/地帶管理器264接手該流故障并隨后卸下該會話并在不同區(qū)域服務(wù)器上重新啟動該會話。8.插件在一些實施例中,實時內(nèi)核260具有組件化的、開放的、以及平臺無關(guān)的架構(gòu),該架構(gòu)允許開發(fā)者獨立開發(fā)并遠程增加和更新實時內(nèi)核260的組件。a.插件設(shè)計插件是因平臺而異的二進制圖像,該圖像是從插件服務(wù)器下載的。在基于的計算機系統(tǒng)上,插件實現(xiàn)為DLL(例如,.NET或COM樣式插件)。然而,插件與普通動態(tài)鏈接庫的加載方式不同。特別是,在加載期間,不需要鏈接至插件庫;也不需要對軟件代碼進行任何編譯。相反,插件管理器266簡單加載包含在插件目錄中的插件。這樣,插件可被增加到客戶端網(wǎng)絡(luò)節(jié)點或從其移除,而不需要對站進行任何進一步的配置(例如,注冊表項),這簡單地通過下載或刪除可執(zhí)行件來實現(xiàn)。這些插件以定義好的方式連接到每個插件主機。如圖25所示,從相應(yīng)插件變量類394導(dǎo)出插件392的活動實例,該插件變量類又是從相應(yīng)插件基類396導(dǎo)出的。在一些實施例中,通過創(chuàng)建基礎(chǔ)插件對象以及通過繼承將該基礎(chǔ)插件對象投向被標(biāo)識的變量來實例化插件實例392。每個基類396和變量類394通過宣稱實現(xiàn)一接口來表示它提供服務(wù)。圖26示出插件基類398、400的示例性集,每個插件基類與相應(yīng)的一個或更多個導(dǎo)出變量類402、404以及406、408的集合相關(guān)聯(lián)。每個插件基類398、400定義特定的功能性類別,而每個插件變量類定義相應(yīng)基類的功能性的特定用途或類別的行為(例如,API=人類接口設(shè)備,變量=鼠標(biāo))。插件通常使用頭部文件來定義接口、接口功能的功能原型、以及用于調(diào)用該接口功能的宏。插件由GUID以及人類可讀的名稱來標(biāo)識。單個插件可具有支持的多個API以及同一API上的多個變量。在一些實施例中,插件API是包含至實現(xiàn)由接口定義的服務(wù)的插件功能的函數(shù)指針的C語言數(shù)據(jù)結(jié)構(gòu)。下表示出被標(biāo)識為guid物理設(shè)定1的假想物理插件的示例。文件名內(nèi)部名稱標(biāo)識符API變量物理.DLL無摩擦物理設(shè)定1.0guid物理設(shè)定1guid接合Guid接合球物理.DLL無摩擦物理設(shè)定1.0guid物理設(shè)定1guid接合guid接合鉸鏈物理.DLL無摩擦物理設(shè)定1.0guid物理設(shè)定1guid接合guid接合游標(biāo)物理.DLL無摩擦物理設(shè)定1.0guid物理設(shè)定1guid接合guid接合彈簧物理.DLL無摩擦物理設(shè)定1.0guid物理設(shè)定1guid沖突guid沖突八樹物理.DLL無摩擦物理設(shè)定1.0guid物理設(shè)定1guid沖突guid沖突動態(tài)在此示例中,存在“接合”API的四個變量和“沖突檢測”API的兩個變量。文件名是插件以其被存儲在文件系統(tǒng)中的名稱。內(nèi)部名稱意圖整體描述插件。標(biāo)識符標(biāo)識整個插件二進制圖像,且僅由插件管理器266使用。API是指定由插件支持的程序API的公知GUID。變量是客戶端應(yīng)用可使用以選擇針對特定用途的插件的公知GUID。例如,SODA信道服務(wù)270可商定壓縮插件變量以供會話上使用。圖27示出與COM(組件對象模型)架構(gòu)兼容的插件410的示例性架構(gòu)。插件410包括一組入口點函數(shù)412,包括第一和第二變量416、418的第一API類414,以及第二API類420。插件410實現(xiàn)在所有支持的API類414、420中和在每個API類中的所有變量中的所有函數(shù)。每個API類和API類中的每個變量與相應(yīng)入口點函數(shù)(也稱為“工廠”)相關(guān)聯(lián)。當(dāng)插件410被加載時,針對每個支持的API類向插件主機登記相應(yīng)的入口點函數(shù)。插件主機使用與API類相關(guān)聯(lián)的入口點函數(shù)以實例化該API類并獲得至其Iunknown接口的指針。插件主機使用Iunknown接口來搜索由該API類所支持的變量的入口點函數(shù)。插件主機使用與變量相關(guān)聯(lián)的入口點函數(shù)以實例化該變量并獲得至其Iunknown接口的指針。插件主機使用Iunknown接口向該變量查詢該接口的接口函數(shù)表。該函數(shù)表給予主機對變量的API實現(xiàn)的訪問。每個插件可執(zhí)行件支持允許插件管理器266管理該插件的核心插件API。核心插件API使得該插件可執(zhí)行件是自描述的。特別是,每個插件輸出可由插件管理器266調(diào)用以允許該插件自己登記的函數(shù)。在一些實施例中,每個插件可執(zhí)行件輸出以下核心插件API:(i)插件變量插件變量的活動實例從類“插件變量”導(dǎo)出。總是使用插件對象來創(chuàng)建插件變量。所有有用插件將該類擴展至包括因API而異的方法。唯一共用的方法是普通配置方法。插件變量:配置()啟動對話插件變量:配置設(shè)定(參數(shù))設(shè)定配置參數(shù)插件變量:配置獲得(參數(shù)&)獲得配置參數(shù)(ii)插件管理器圖28示出包括插件管理器266、包含一組插件容器424的插件目錄422、插件數(shù)據(jù)庫426、以及調(diào)用程序428的插件架構(gòu)的實施例。插件管理器266查詢插件目錄422中的插件容器424、在插件數(shù)據(jù)庫426中登記插件、以及對來自調(diào)用程序428的對發(fā)送有關(guān)可用插件的信息以及實例化指定插件變量的請求作出響應(yīng)。調(diào)用程序428通常是內(nèi)核組件(例如,安裝加載程序組件、諸如連接和服務(wù)器混合管理器262和區(qū)域/地帶管理器264等內(nèi)核管理器、以及內(nèi)核服務(wù));盡管在一些實施例中,調(diào)用程序428可對應(yīng)于在客戶端節(jié)點或遠程網(wǎng)絡(luò)節(jié)點(例如服務(wù)器)上運行的軟件應(yīng)用或服務(wù)。圖29示出了由插件管理器266在登記客戶端網(wǎng)絡(luò)節(jié)點上的可用插件的過程中實現(xiàn)的方法的實施例。根據(jù)圖29的方法,插件管理器266發(fā)現(xiàn)客戶端網(wǎng)絡(luò)節(jié)點上可用的插件(圖29,框430)。在一些實施例中,所有插件被存儲在在客戶端網(wǎng)絡(luò)節(jié)點的文件系統(tǒng)中創(chuàng)建的共享插件目錄中。在這些實施例中,插件管理器266通過檢查該共享插件目錄發(fā)現(xiàn)可用插件。在其他實施例中,插件管理器266可被配置為檢查其他文件位置以發(fā)現(xiàn)可用插件。插件管理器266查詢所發(fā)現(xiàn)的插件以發(fā)現(xiàn)它們支持的所有API(圖29,框432)。在此過程中,插件管理器266進行對核心API的調(diào)用以枚舉與可用插件相關(guān)聯(lián)的參數(shù)值。例如,插件管理器266用返回插件GUID、所支持API的GUID、以及針對給定API的所支持變量的GUID的核心API調(diào)用來查詢插件?;诓樵兘Y(jié)果,插件管理器266將諸插件與這些插件分別支持的API之間的關(guān)聯(lián)存儲在插件數(shù)據(jù)庫426中(圖29,框434)。在此過程中,插件管理器266通過插件所支持的API對目錄422中的所有插件進行分類。插件管理器266自動將插件輸入到插件數(shù)據(jù)庫426中所有支持的API下面。這樣,插件數(shù)據(jù)庫426允許對具有相同API的插件進行變量查詢。此外,插件數(shù)據(jù)庫426中的插件可由API和變量以及在由虛擬區(qū)域應(yīng)用參考時創(chuàng)建的實例來枚舉。圖30示出創(chuàng)建數(shù)據(jù)庫436的示例性實施例。插件管理器輸出以下API:圖31示出由插件管理器266響應(yīng)于收到來自調(diào)用程序428的API調(diào)用實現(xiàn)的方法的實施例。根據(jù)該方法,響應(yīng)于收到對枚舉支持指定的一個API的所有插件的調(diào)用(圖31,框440),插件管理器266返回包括插件數(shù)據(jù)庫中與該指定的API相關(guān)聯(lián)的所有插件的標(biāo)識符的列表(圖31,框442)。響應(yīng)于收到對枚舉由所標(biāo)識的一個插件支持的所標(biāo)識的一個API的變量的調(diào)用(圖31,框444),插件管理器266返回包括由所標(biāo)識的插件支持的該給定API的所有變量的標(biāo)識符的列表(圖31,框446)。響應(yīng)于收到對實例化由所標(biāo)識的一個插件支持的所標(biāo)識的一個API的所標(biāo)識的一個變量的調(diào)用(圖31,框448),插件管理器266加載所標(biāo)識的插件并返回至所標(biāo)識的變量的實例的指針(圖31,框450)。在此過程中,定位指定的變量,該指定的變量被加載至調(diào)用程序的地址空間中,并用實現(xiàn)由該API定義的服務(wù)的變量函數(shù)的函數(shù)表地址來填充內(nèi)部指針表。(iii)插件服務(wù)器插件以適合每個所支持平臺的可下載形式存在于服務(wù)器上。服務(wù)器始終支持加密、壓縮以及認(rèn)證插件的最小集,因此客戶端網(wǎng)絡(luò)節(jié)點在嘗試服務(wù)器連接時始終成功。當(dāng)首次由第三方開發(fā)者在服務(wù)器上登記時,由自動化工具檢查插件以確保它符合API描述,并檢查不可接受的客戶端站點API參考。例如,不允許動態(tài)綁定至不是已經(jīng)在插件環(huán)境中的任何本地接口。隨后掃描插件是否有病毒。服務(wù)器上的所有圖像隨后在病毒方面是安全的。插件通過認(rèn)證用戶進行訪問控制。這樣,已經(jīng)支付該訪問的用戶可在任何位置使用該插件。在一些實施例中,經(jīng)由電子商務(wù)引擎為插件下載認(rèn)證用戶。b.插件類所有插件符合插件API。一些插件專用于某些工具(例如,OpenGL)并具有其自身標(biāo)準(zhǔn)。每個插件類具有因類而異的API。在一些實施例中,插件取決于所有客戶端站點訪問的本地應(yīng)用運行時。在使用插件的每個組件中,協(xié)議允許商定使用GUID命名空間的特征。例如,在一些實例中,當(dāng)連接網(wǎng)絡(luò)流時,提供方客戶端網(wǎng)絡(luò)節(jié)點以偏好順序提供其加密插件GUID列表,而接收方網(wǎng)絡(luò)節(jié)點在這些提供中選擇并用選擇或拒絕來響應(yīng)。在一些示例性實施例中,以下插件類被定義并由開發(fā)者用于開發(fā)在創(chuàng)建虛擬區(qū)域通信者環(huán)境中使用的插件?!ぜ用芩惴ā嚎s算法·認(rèn)證算法·憑證·圖形效果·物理延伸·腳本延伸·輸入設(shè)備主存·音頻混合·音頻源·音頻插入·流傳輸·時間服務(wù)這些插件類在以下段落中定義。加密算法加密是流傳輸特征,并在流創(chuàng)建時間被商定。會話定義將包括加密變量ID。示例性加密變量包括AES和RC4塊加密。壓縮算法壓縮是可選的信道內(nèi)容特征。信道在傳輸商定信道定義時選擇壓縮。訂閱站提供可用壓縮選項,而公布站在提供公布時指示其選擇。音頻編解碼器選擇跳過壓縮,因為它們的內(nèi)容已經(jīng)被壓縮。示例性的音頻壓縮插件變量對因信道而異的預(yù)備(priming)流實現(xiàn)ITU-TV.44壓縮處理。認(rèn)證算法網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)服務(wù)器要求某些認(rèn)證協(xié)議以便連接。第三方服務(wù)器可具有特定認(rèn)證要求。認(rèn)證協(xié)議可被隨時修改。除核心插件API外,認(rèn)證插件具有用于執(zhí)行認(rèn)證協(xié)議并得到對本地憑證的訪問的API。示例性的認(rèn)證插件變量包括支持對初始服務(wù)器的SSL類型的認(rèn)證以及支持使用經(jīng)簽名ID作為令牌的后續(xù)服務(wù)器登錄的的插件變量。憑證憑證可被創(chuàng)建并且必須被封裝在插件中以由認(rèn)證算法存儲和使用。示例性的憑證是包含公鑰的憑證。圖形效果OpenGL和Collada支持腳本式著色器、取樣器、簡檔和注釋。一些實施例支持為著色器的Colladacg_表面_類型和glsl_表面_類型,以及為取樣器的gl_取樣器X和cg_取樣器X。物理延伸在一些實施例中,開放動態(tài)引擎(ODE)被修改為在動態(tài)行為環(huán)中包括特定鉤子(hook)。虛擬區(qū)域應(yīng)用通常通過對場景圖中的實體施加物理屬性來指定物理性質(zhì)。物理延伸插件具有用于查詢由該插件處理的相關(guān)聯(lián)的屬性GUID的API。這樣,僅為有關(guān)對象和虛擬區(qū)域調(diào)用物理插件。一些實施例支持為模型內(nèi)的接合的Collada剛性_約束,以及為針對化身和假象的全局運動算法的OpenGL沖突檢查。腳本延伸腳本延伸插件具有允許包裝腳本運行時(例如,Java或JavaScript)并向其提供本地應(yīng)用運行時的附加API。腳本通過包括腳本延伸插件的GUID的SODA記錄來定義。輸入設(shè)備主存輸入設(shè)備插件生成針對由應(yīng)用邏輯處理的標(biāo)準(zhǔn)輸入事件(例如由計算機鍵盤、計算機鼠標(biāo)、控制器、以及控制器生成的事件)的SODA記錄。音頻混合、音頻源、以及音頻插入音頻處理在起點(例如,話筒)處是合需的并在終點(例如,揚聲器)處生效并混合。音頻插件通常不能改變音頻網(wǎng)絡(luò)路由,因為這會影響其他用戶的體驗。平臺上的音頻插件是符合音頻插件API的DLL。它們向?qū)崟r內(nèi)核260登記并可供SODA參考。虛擬區(qū)域開發(fā)者可請求音頻插件作為虛擬區(qū)域應(yīng)用的一部分(例如,使用延伸的Collada字段或VSDL語義)?;砟_本同樣可請求音頻插件?;旌献兞堪ɑ芈?、回聲消除、混響以及合成。源變量包括話筒、剪輯、媒體、Skype以及流送文件。插入變量包括聲像控制、音量、iLBC、RCU、iPCM-wb、均衡器、LPF、HPF、AGC、噪聲消除、差錯消除、抖動控制、靜音、延遲、寂靜檢查、舒適噪聲。流傳輸STRAW使用流傳輸插件來主存網(wǎng)絡(luò)上的會話。流傳輸分組并提供可靠性、認(rèn)證和加密。時間服務(wù)實時調(diào)度器260對同步客戶端網(wǎng)絡(luò)節(jié)點之間的時間感興趣。為此,每個客戶端網(wǎng)絡(luò)節(jié)點將與因特網(wǎng)時間標(biāo)準(zhǔn)(諸如SIS、NTP(網(wǎng)絡(luò)時間協(xié)議)、或ITS(因特網(wǎng)時間服務(wù)))同步。c.插件類API所有插件類對象基于插件變量。加密算法該插件是基于插件變量的。它執(zhí)行包括鍵控的塊加密算法。該插件除密鑰以外是無狀態(tài)的,即每個加密是獨立于其他加密的。加密::Ctor(算法,密鑰)加密::加密(數(shù)據(jù),大小,目標(biāo))加密::解密(數(shù)據(jù),大小,目標(biāo))加密::Dtor()壓縮算法該插件是基于插件變量的。它執(zhí)行一個或更多個無損壓縮/解壓縮算法。它壓縮連續(xù)流,并可保持內(nèi)部狀態(tài)表。該算法在每個關(guān)鍵幀重新開始,可包括處理沒有發(fā)出但有助于壓縮狀態(tài)的“預(yù)備”塊。壓縮::Ctor(算法)壓縮::關(guān)鍵幀(預(yù)加載)壓縮::壓縮(數(shù)據(jù),大小,目標(biāo))壓縮::解壓(數(shù)據(jù),大小,目標(biāo))壓縮::Dtor()認(rèn)證算法:該插件是基于插件變量的。它訪問本地憑證,并實現(xiàn)一個或更多個狀態(tài)的客戶端認(rèn)證狀態(tài)機。該認(rèn)證狀態(tài)機不控制至認(rèn)證服務(wù)器的通信鏈路。它僅處理消息并產(chǎn)生后續(xù)消息。認(rèn)證::Ctor(算法,憑證)認(rèn)證::初始狀態(tài)()認(rèn)證::狀態(tài)(狀態(tài))認(rèn)證::提前(消息數(shù)據(jù),消息消費者&)認(rèn)證::會話密鑰(密鑰&)認(rèn)證::Dtor()憑證該插件是基于插件變量的。它訪問因平臺而異的憑證存儲。憑證::Ctor()憑證::選擇(索引)憑證::接受(數(shù)據(jù),大小,索引&)憑證::私鑰(密鑰&)憑證::公鑰(密鑰&)憑證::密碼短語(密碼短語&)憑證::Dtor()圖形效果-著色器該插件是基于插件變量的。它影響3D呈現(xiàn)。著色器API支持著色器(腳本程序表面生成器)。著色器::Ctor(gl&)著色器::初始化(格式,大小,mip,類型,代碼,技術(shù))著色器::設(shè)定紋理參數(shù)(紋理)著色器::設(shè)定紋理流(id流)著色器::呈現(xiàn)(傳遞)著色器::Dtor()圖形效果-取樣器該取樣器API是基于插件變量的。它支持將紋理映射至表面。取樣器::Ctor(gl&)取樣::初始化(類型,包裝,小濾波器,大濾波器,mip濾波器,顏色,mip映射_最大級別,mip映射_偏置)取樣器::Dtor()物理延伸-接合該插件是基于插件變量的。它擴展運動的動態(tài)特性。接合API支持對化身和假象子組件的接合約束和動態(tài)特性。接合::Ctor(ode&,尺寸,n無界的)接合::初始化(身體1,錨1,取向1,身體2,錨2,取向2,軸,erp,cfm)接合::扭矩(扭矩)接合::獲得狀態(tài)(fps&,erp&,jLin1&,jAng1&,jLin2&,jAng2&,c&,cfm&,低&,高&)物理延伸-沖突該沖突API是基于插件變量的。它支持快速計算沖突檢測。在一些實施例中,沖突插件變量可在開放動態(tài)引擎(ODE)中實現(xiàn)四叉樹類dx空間算法。沖突::Ctor(ode&,空間)沖突::步驟()腳本延伸該插件是基于插件變量的。它支持由虛擬區(qū)域應(yīng)用提供的代碼的執(zhí)行。該代碼是二進制形式,且由語言和該特定代碼定義支持的API來標(biāo)記。該插件隨語言而變。它加載特定的代碼定義并調(diào)用該代碼定義,提供適合該API的本地應(yīng)用運行時對象。腳本延伸::Ctor(sonar&)腳本延伸::執(zhí)行(代碼,api)腳本延伸::Dtor()輸入設(shè)備主存該插件是基于插件變量的。它支持用戶事件捕獲(除音頻之外)。這包括從鼠標(biāo)到具有面部識別的視頻照相機的所有東西。該插件向隊列生成用戶事件。輸入設(shè)備::Ctor(arg,隊列)輸入設(shè)備::配置(arg)音頻混合該插件是基于音頻組件的。它組合兩個音頻流。音頻混合::Ctor(音頻場景1,音頻場景2,參數(shù))音頻混合::配置(參數(shù))音頻混合::Dtor()音頻源該插件是基于音頻組件的。它提供可輪詢的音頻流。音頻源::Ctor()音頻源::配置(arg)音頻源::獲得等待時間(等待時間&)音頻源::輪詢(數(shù)據(jù))音頻插入該插件是基于音頻組件的。它翻譯音頻流。它可壓縮、解壓縮或簡單地修改流。音頻插入::Ctor(音頻源&)音頻插入::獲得等待時間(等待時間&)音頻插入::過程()音頻發(fā)送該插件是基于音頻組件的。它將音頻流分為兩個相等的流(復(fù)制該流)。任何音頻源可被路由至任何其他音頻元件。音頻發(fā)送::Ctor(音頻源&)音頻發(fā)送::Dtor()音頻發(fā)送::復(fù)制(數(shù)據(jù)&)流傳輸該插件是基于插件變量的。示例性的流傳輸插件變量支持具有可配置的認(rèn)證和加密的IPUDP傳輸。傳輸::Ctor(端口,站,會話,加密)傳輸::MTU()傳輸::Hello()傳輸::質(zhì)詢(憑證)傳輸::回應(yīng)(質(zhì)詢,加密)傳輸::響應(yīng)(響應(yīng),加密)傳輸::標(biāo)識令牌()傳輸::標(biāo)識令牌(令牌)傳輸::發(fā)送(數(shù)據(jù),大小,id信道)傳輸::接收(記錄)傳輸::Dtor()時間服務(wù)該插件是基于插件變量的。它將客戶端網(wǎng)絡(luò)節(jié)點時間與因特網(wǎng)標(biāo)準(zhǔn)同步。時間服務(wù)::Ctor()時間服務(wù)::同步()時間服務(wù)::Dtor()VI.SODA定義會話ID站1GUIDID站2GUIDID會話GUID會話故障ID會話GUID原因長參數(shù)長站IDGUIDSTRAW_地址IP,端口STRAW_傳輸[GUID]公布訂閱流保持有效ID會話GUID超時長流故障ID會話GUID信道故障ID信道索引GUID通信者狀態(tài)ID本身GUIDID通信者GUID狀態(tài)短HIDID設(shè)備類GUIDID設(shè)備GUIDIDGUID音頻參數(shù)IDGUIDID參數(shù)GUID值短音頻設(shè)備ID設(shè)備類GUIDID設(shè)備GUIDIDGUID區(qū)域會話ID區(qū)域GUIDIDGUID物理檢查點地帶音頻孔徑音頻障礙IDGUID半徑雙起點雙X3音頻混響IDGUID形狀網(wǎng)格起點雙X3音頻混合音頻效果音頻流ID音頻GUID化身GUID音頻計算插件升級相關(guān)性列表基礎(chǔ)安裝GUID描述文本升級ID[GUID]升級IDGUID偏移長數(shù)據(jù)[]音頻記錄IDGUIDID音頻GUIDID存儲GUID音頻回放IDGUIDID音頻GUIDID存儲GUID網(wǎng)絡(luò)DNS地址串網(wǎng)絡(luò)代理地址串調(diào)試信息IDGUID統(tǒng)計GUID復(fù)位布爾調(diào)試陷阱IDGUID陷阱GUID重新裝備布爾HIDIDKvmGUIDHID事件VII.結(jié)論本文描述的實施例提供支持在相應(yīng)網(wǎng)絡(luò)節(jié)點上操作的通信者之間的實時通信的實時內(nèi)核。該實時內(nèi)核處置連接到通信者、虛擬區(qū)域、以及其它網(wǎng)絡(luò)資源、響應(yīng)于用戶輸入開關(guān)這些連接、以及混合實時數(shù)據(jù)流的復(fù)雜任務(wù)。該實時內(nèi)核使開發(fā)者能夠?qū)W⒂陂_發(fā)高級通信功能而非低級銜接代碼。實時內(nèi)核施加相對低的計算資源要求,以便實時通信性能能使用寬范圍的當(dāng)前可用的計算設(shè)備和網(wǎng)絡(luò)連接來達成。其他實施例也落在權(quán)利要求的范圍之內(nèi)。當(dāng)前第1頁1 2 3