其中藉由一用戶端玩家控制一伺服器端遊戲之遠端遊戲應用程式已嘗試使用現有或客製化編碼器即時編碼來自三維(3D)圖形引擎之視訊輸出。然而,視訊遊戲之互動式本質,尤其視訊輸出與玩家輸入之間的玩家回饋迴圈,使遊戲視訊串流比傳統視訊串流對延時更敏感。現有視訊寫碼方法可權衡運算能力(其他很少)以縮減編碼時間。用於將編碼程序整合至視訊演現程序中之新方法可顯著縮減編碼時間同時亦減少運算能力、改良經編碼視訊之品質、及保留原始位元串流資料格式以保持現有硬體裝置之互操作性。
不同於常規視訊播放,視訊遊戲具有專屬於視訊回饋迴圈之一玩家輸入。玩家對輸入與視訊輸出之間的延時非常敏感。此玩家輸入回饋迴圈中之高延時一直是其中藉由一遠端玩家控制一伺服器託管之視訊遊戲例項之視訊遊戲串流應用之一重要絆腳石。可縮減介於輸入與回饋之間的時間之任何程序將直接改良使用者體驗。
一遊戲串流環境中之用戶端硬體可具有不同位準之運算效能,但專用H.264硬體解碼器變得更加普遍存在(甚至在行動裝置及其他低功率裝置中)。一硬體解碼器擅長執行根據H.264寫碼標準有規則地執行之一小運算選擇(諸如運動補償)。可利用專用解碼硬體之強度來提供一遊戲串流環境中之一較佳玩家體驗,無關於用戶端之整體運算能力。
在本端、非串流演現應用中,遊戲引擎可在玩家輸入與視訊回饋之間增加若干圖框之延時。在遊戲串流應用中,對玩家輸入回饋循環引入額外延時,此係因為玩家輸入必須透過網路行進至遠端伺服器且視訊輸出必須在玩家接收回饋之前予以編碼、傳輸及解碼。對於一些玩家輸入,用戶端可藉由立即執行運動補償而估計視訊回饋之結果,以阻止網路延時。
最基本地,玩家輸入運動補償係使像素群組移位以便在其中一視訊遊戲執行於一伺服器上同時藉由一網路連線之用戶端遠端控制之情形中為縮減輸入回饋延時而犧牲一定程度的影像準確度的一技術。此技術擅長針對導致一致運動向量(諸如第一人稱遊戲中之玩家視角旋轉)之輸入縮減玩家回饋延時。
在一視訊遊戲中,玩家背景內容定義為作為先前玩家動作、輸入及決策之結果之當前遊戲狀態。一遊戲串流系統中之用戶端對玩家背景來說是一無所知的,即,用戶端僅接收視訊輸出且不接收將判定特定玩家輸入之結果之遊戲狀態資訊。存在基於遊戲狀態資訊導致獨特但可預測運動結果之廣泛範圍之輸入。此等輸入將受益於玩家回饋延時之縮減但不能在用戶端上預快取以用於傳統玩家輸入運動補償,此係因為用戶端將不具有玩家背景內容資訊。此外,玩家背景內容置換空間可能太窮盡以致於不能預產生用於方法之運動向量(諸如經快取重複運動向量)。此等系統及方法係描述於美國臨時申請案第62/488,526號、第62/634,464號及第62/640,945號中;該全部三個申請案之全文併入本文。隨著玩家背景內容改變遊戲伺服器可藉由產生經預測運動向量及更新用戶端之輸入運動補償快取而補償。此容許用戶端使用玩家輸入運動補償技術用於一有限背景內容相依輸入集,從而導致輸入回饋延時縮減。
美國專利第9,661,351號(「‘351專利」)揭示用於在自一伺服器至一用戶端裝置之傳輸期間略過一圖框之系統及方法,其中回應於偵測該經略過圖框,該用戶端裝置產生替換經壓縮視訊串流中之經略過圖框之一經預測圖框,該經預測圖框係基於自藉由該用戶端裝置解碼之一或多個先前圖框來擴展差量(delta)資訊而產生。對於此技術,在一經略過圖框之後,基於一或多個先前圖框之資料(例如,運動向量、殘差等)使用一或多個經重建或經預測圖框之用戶端圖框預測。該技術亦排定位元分配及/或子特徵編碼之優先順序。經編碼網路抽象層單元(NALU)可分成(1)運動向量及(2)殘差。設備可僅按優先順序發送最小編碼資料,而非實際上略過一圖框。例如,若排定運動之優先順序,則可僅發送運動向量。本發明優於‘351專利之技術,至少係因為‘351專利未揭示使用自一伺服器傳輸之查詢表以使使用者輸入與運動向量匹配並加標籤及加總該等運動向量之一用戶端裝置。‘351專利亦未揭示將該等經加總運動向量應用於經解碼圖框以估計該等圖框中之運動。本發明亦係優越的,此係因為本發明縮減輸入回饋延時,此係藉由使用玩家輸入運動補償來代替等待伺服器傳回輸出視訊而顯著縮減輸入回饋延時。
美國專利第8,678,929號(「‘929專利」)係關於一經網路連線、互動式遊戲系統之操作。所揭示之方法適用於藉由透過雙向融合(two-way blending)判定用於一共用全域物件之路線校正位置值而縮減網路遲延(network lag)。該專利中所論述之「融合」包含發送本端主控台上之本端玩家之一姿勢之計算之網路模擬的步驟。該主控台融合本端模擬與網路模擬。方法亦藉由使用本端玩家之融合姿勢來判定本端主控台上之共用全域物件之一位置值而融合共用全域物件。本發明又優於‘929專利之技術,至少係因為‘929專利未揭示使用自一伺服器傳輸之查詢表以使使用者輸入與運動向量匹配並加標籤及加總該等運動向量之一用戶端裝置。‘929專利亦未揭示將該等經加總運動向量應用於經解碼圖框以估計該等圖框中之運動。本發明亦係優越的,此係因為本發明不需要存在具有極高處理能力之一用戶端,縮減輸入回饋延時,此係藉由使用玩家輸入運動補償來代替等待伺服器傳回輸出視訊而顯著縮減輸入回饋延時。
美國專利第8,069,258號(「‘258專利」)係關於使用本端圖框處理以縮減多玩家模擬之明顯網路遲延。所描述之方法包含攔截來自一本端使用者之輸入、自一先前遊戲圖框判定一網路模擬中之一遠端物件之狀態資料、及判定來自作為經網路連線模擬之部分之多個遊戲系統之非確定性物件之互動。該互動資料連同該狀態資料及該本端輸入係用於產生視訊圖框之一本端模擬。以此方式,可針對一單個圖框非同步執行本端模擬及網路模擬,其中各圖框對應於遊戲內之一單個時段。此容許本端模擬在經網路連線遊戲玩法期間即時更新,同時保持(基本上)與網路同步。本發明再一次優於‘258專利之技術,至少係因為‘258專利未揭示使用自一伺服器傳輸之查詢表以使使用者輸入與運動向量匹配並加標籤及加總該等運動向量之一用戶端裝置。‘258專利亦未揭示將該等經加總運動向量應用於經解碼圖框以估計該等圖框中之運動。本發明亦係優越的,此係因為本發明不需要存在具有極高處理能力之一用戶端,縮減輸入回饋延時,此係藉由使用玩家輸入運動補償來代替等待伺服器傳回輸出視訊而顯著縮減輸入回饋延時。
美國專利第9,665,334 B2號(「‘334專利」)揭示用於應用多個程序及一合成器以在一顯示器上演現經組合圖形之演現協定之系統及方法。該技術如下操作:當伺服器同時將一遊戲螢幕提供至數個用戶端裝置時,伺服器上之演現處理之計算負荷在(例如)需要快速回應之一遊戲內容方面變得沉重。即,取決於其演現效能及所需回應,伺服器可對其提供一螢幕之用戶端裝置之數目係有限的。相比而言,當各用戶端裝置經控制以執行可藉由一般演現效能執行以在伺服器與用戶端裝置之間共用演現程序之處理時,一螢幕可被提供至更多用戶端裝置。又,一般而言,在無需應用紋理映射的情況下演現之一遊戲螢幕具有高壓縮效率,且可透過一網路(諸如網際網路)以一較小頻寬發送。本發明優於‘334專利中所論述之技術,至少係因為‘334專利未揭示基於預定準則在一伺服器處產生運動向量且將該等經產生之運動向量及一或多個失效者傳輸至一用戶端,該用戶端快取該等運動向量及失效者。‘334專利進一步未揭示使該伺服器指示該用戶端自一使用者接收輸入,且使用該輸入以與快取之運動向量或失效者匹配,其中該等向量或失效者係用於運動補償中。本發明亦係優越的,此係因為本發明縮減輸入回饋延時,此係藉由使用玩家輸入運動補償來代替等待伺服器傳回輸出視訊而顯著縮減輸入回饋延時。
美國專利第9,736,454號(「‘454專利」)揭示用於編碼之系統及方法,該編碼包括:檢查與一紋理區塊共同定位之一深度區塊之可用性;在一共同定位之深度區塊之可用性的基礎上判定用於一紋理區塊之一預測方法;及在該共同定位之深度區塊之可用性的基礎上導出用於該紋理區塊之一第一預測區塊。又,本發明優於‘454專利中所論述之技術,至少係因為‘454專利未揭示基於預定準則在一伺服器處產生運動向量且將該等經產生之運動向量及一或多個失效者傳輸至一用戶端,該用戶端快取該等運動向量及失效者。‘454專利進一步未揭示使該伺服器指示該用戶端自一使用者接收輸入,且使用該輸入以與快取之運動向量或失效者匹配,其中該等向量或失效者係用於運動補償中。本發明亦係優越的,此係因為本發明縮減輸入回饋延時,此係藉由使用玩家輸入運動補償來代替等待伺服器傳回輸出視訊而顯著縮減輸入回饋延時。
美國專利第9,705,526號(「‘526專利」)揭示用於媒體及影像應用中之熵編碼之系統及方法。該技術揭示其中壓縮以按照指示接收一影像源及/或視訊資料源開始之一系統。接著應用一無損耗壓縮方案。一預測器/差量運算單元接著獲取輸入且試圖使用相鄰輸入元素之間的一差量運算減少輸入資料中之冗餘。接著使用一熵編碼器中之一預定義統計模型化編碼此等值以產生經壓縮影像及/或視訊資料。類似於上文,本發明優於‘526專利中所論述之技術,至少係因為‘526專利未揭示基於預定準則在一伺服器處產生運動向量且將該等經產生之運動向量及一或多個失效者傳輸至一用戶端,該用戶端快取該等運動向量及失效者。‘526專利進一步未揭示使該伺服器指示該用戶端自一使用者接收輸入,且使用該輸入以與快取之運動向量或失效者匹配,其中該等向量或失效者係用於運動補償中。本發明亦係優越的,此係因為本發明縮減輸入回饋延時,此係藉由使用玩家輸入運動補償來代替等待伺服器傳回輸出視訊而顯著縮減輸入回饋延時。
美國專利第8,873,636 B2號(「‘636專利」)係關於提供經寫碼影像資料至使用者之PC以執行遊戲之本端例項之一移動影像分佈伺服器(諸如執行於一線上遊戲之移動影像分佈伺服器)。為執行此程序,在相關細節中,使用者之PC之CPU指定為了解碼與先前圖框螢幕中之選定區塊相關聯之運動向量所參考之區域。藉由參考與選定區塊相關聯之運動向量(包含於其提供之預處理資訊中之一向量)而如此做且提取該區域之影像作為一參考影像。如同其他參考文獻,本發明優於‘636專利中所論述之技術,至少係因為‘636專利未揭示基於預定準則在一伺服器處產生運動向量且將該等經產生之運動向量及一或多個失效者傳輸至一用戶端,該用戶端快取該等運動向量及失效者。‘636專利進一步未揭示使該伺服器指示該用戶端自一使用者接收輸入,且使用該輸入以與快取之運動向量或失效者匹配,其中該等向量或失效者係用於運動補償中。本發明亦係優越的,此係因為本發明縮減輸入回饋延時,此係藉由使用玩家輸入運動補償來代替等待伺服器傳回輸出視訊而顯著縮減輸入回饋延時。
國際專利公開案第WO2009138878 A2號(「‘878公開案」)係關於在一集中串流應用伺服器中處理及串流傳輸多個互動式應用,同時控制各種演現物件之細節層次及後濾波。在系統中,一集中互動式應用伺服器在其視訊預處理器處在編碼至用戶端裝置之視聽內容之一經壓縮串流之前對圖框序列執行空間及時間濾波,該等用戶端裝置解碼該經壓縮串流並顯示該內容。集中互動式應用伺服器之GPU命令處理器包含亦在視訊編碼器中對於目標編碼圖框中之各巨集區塊運算一運動補償估計之一模組。然而,本發明仍優於‘878公開案中所論述之技術,至少係因為‘878公開案未揭示基於預定準則在一伺服器處產生運動向量且將該等經產生之運動向量及一或多個失效者傳輸至一用戶端,該用戶端快取該等運動向量及失效者。‘878公開案進一步未揭示使該伺服器指示該用戶端自一使用者接收輸入,且使用該輸入以與快取之運動向量或失效者匹配,其中該等向量或失效者係用於運動補償中。本發明亦係優越的,此係因為本發明縮減輸入回饋延時,此係藉由使用玩家輸入運動補償來代替等待伺服器傳回輸出視訊而顯著縮減輸入回饋延時。
美國專利第9,358,466 B2號(「‘466專利」)係關於透過重新使用經快取資料而改良視訊遊戲效能。所揭示之系統至少部分藉由識別所使用之數位資產及判定該等經識別數位資產是否在一快取區中而對不同所產生視訊遊戲任務之快取效能評分。可基於對應於用於一任務之已在一快取區中之數位資產之一比例之一快取重新使用率而計算快取評分。用於產生快取評分之其他技術可考量若干因數,諸如一任務之已在一快取區中之經組合數位資產之整體大小及/或用於一任務之尚未在一快取區中之經組合數位資產之整體大小。藉由以此方式快取資料,該資料及其他非快取資料請求變得更有效。本發明仍優於‘466專利中所論述之技術,至少係因為‘466專利未揭示快取重複運動向量、自輸入資料計算一運動估計或基於該輸入資料更新經儲存之運動向量庫,使得一用戶端可在自一伺服器接收實際運動向量資料之前使用該經儲存之運動向量庫起始運動。
美國專利第6,903,662 B2號(「‘662專利」)係關於一可組態電腦輸入裝置,明確言之快取輸入資料以維持較快回應時間之一可組態電腦輸入裝置。該系統藉由針對一內部記憶體(或快取區)檢查按鍵以判定是否先前已識別特定密鑰而進行操作。若系統在此時間點之前未與密鑰通信,則系統可接著自其密鑰記憶體擷取對應於輸入之資料。系統將接著藉由密鑰身份及其對應資料更新其內部記憶體(快取區)。系統可接著將來自密鑰之輸入資料發送至主機電腦。然而,系統下一次在按壓狀態下遇到相同密鑰時,其可查詢其自身記憶體(快取區)而非再次自密鑰記憶體擷取相同掃描碼。本發明優於‘662專利中所論述之技術,至少係因為‘662專利未揭示快取重複運動向量、自輸入資料計算一運動估計或基於該輸入資料更新經儲存之運動向量庫,使得一用戶端可在自一伺服器接收實際運動向量資料之前使用該經儲存之運動向量庫起始運動。
日本專利第JP6129865B2號(「‘865專利」)揭示用於將用於路徑片段子集之經演現遊戲內容資料傳輸至一遊戲用戶端以在本端快取區上快取使得在即時遊戲玩法期間該遊戲內容資料可在需要時可用的系統及方法。又,本發明優於‘865專利中所論述之技術,至少係因為‘865專利未揭示快取重複運動向量、自輸入資料計算一運動估計或基於該輸入資料更新經儲存之運動向量庫,使得一用戶端可在自一伺服器接收實際運動向量資料之前使用該經儲存之運動向量庫起始運動。
美國專利第9,762,919號(「‘919專利」)揭示用於在一區塊處理管線中快取參考資料之系統及方法。‘919專利技術揭示可實施(例如)於(在該管線本端之)一本端記憶體(諸如SRAM (靜態隨機記憶體))中之一快取記憶體(例如,一完全關聯式快取區),對應於在管線之較早階段針對巨集區塊判定之運動向量之色度參考資料(例如,64位元組記憶體區塊)之部分可自記憶體預取至該快取記憶體。色度快取邏輯可維持快取,且可在管線之多個階段內擴展。可藉由色度快取邏輯在色度運動補償階段之前一或多個階段起始對於通過管線之一給定巨集區塊之運動向量之提取以提供在色度運動補償需要其之前將來自記憶體之各自記憶體區塊讀取至快取區中的時間(即,多個管線循環)。然而,‘919專利相較於本發明仍存在缺陷。本發明優於‘919專利中所論述之技術,至少係因為‘919專利未揭示快取重複運動向量、自輸入資料計算一運動估計或基於該輸入資料更新經儲存之運動向量庫,使得一用戶端可在自一伺服器接收實際運動向量資料之前使用該經儲存之運動向量庫起始運動。
如自本技術中之最新技術之以上論述明白,此項技術需要改良與即時遊戲環境之編碼有關之目前電腦技術。
相關申請案之交叉參考本申請案主張以下美國臨時申請案之權利:於2017年4月21日申請之美國臨時申請案第62/488,526號、於2018年2月23日申請之美國臨時申請案第62/634,464號、於2018年3月9日申請之美國臨時申請案第62/640,945號,及於2018年3月16日申請之美國臨時申請案第62/644,164號。
在描述圖式中所繪示之本發明之較佳實施例時,為清楚起見將採用特定術語學。然而,本發明不意欲限於如此選擇之特定術語,且應理解,各特定術語包含以一類似方式操作以達成一類似目的之所有技術等效物。本發明之若干較佳實施例係出於圖解說明目的而描述,應理解,本發明可依其他形式而非圖式中明確展示之形式體現。
特定類型之玩家輸入是玩家輸入運動補償之較佳候選者。兩個因素促成一給定輸入的適用性:玩家對輸入回饋延時的敏感度;及在不引入顯著假影之情況下實施玩家輸入運動補償的難度。將需要針對適用性來評估各輸入。例如,在一第一人稱射擊遊戲中,玩家將對基於滑鼠之視角旋轉非常敏感,在玩家輸入與視訊輸出之間之一秒的分率(少至16 ms)延遲將為明顯的。然而,在相同情形中,基於遊戲台(gamepad)控制器的視角旋轉通常較慢,且玩家可能對輸入回饋延時較不敏感。可藉由使場景在旋轉之相對方向上移位來大致估計視角旋轉,但在旋轉方向上可能存在沿著影像之邊緣之非所要假影。對於小視角旋轉(諸如調整對螢幕上敵人之目標),玩家甚至可能不會注意到邊緣假影。在另一實例中,歸因於缺乏玩家敏感度及/或延時慣性,在一駕駛遊戲中加速汽車對於玩家輸入運動補償可能為低優先順序,但轉向及剎車輸入可能為高優先順序,此係因為玩家將注意到輸入回饋延時。
接收一玩家輸入與顯示一運動輸出之間的時間係玩家回饋延時。藉由使用運動補償,一經估計運動可在等待伺服器處理該玩家輸入時幾乎立即提供回饋。以此方式,在遊戲串流應用中顯著縮減玩家回饋延時。藉由在一遊戲串流應用中實施玩家輸入運動補償,可在下一可用圖框之前提供一運動估計。相比而言,使輸入行進至伺服器、產生一輸出圖框並傳回需要若干圖框。在其中遊戲引擎及演現器可具有幾個圖框之一玩家回饋延時的傳統非串流遊戲應用中,玩家輸入運動補償亦可提供一些益處。
用戶端將不具有適當背景內容以追蹤一物件在螢幕周圍之移動。玩家輸入運動補償將不適於其中用戶端無法知道特定巨集區塊或視訊物件之位置的情況。例如,在一2D平台遊戲上,角色可在螢幕周圍自左向右移動。當玩家按壓跳躍輸入時,用戶端將不知道角色位於何處;因此在此情況中不能單獨使用玩家輸入運動補償來縮減輸入回饋延時。
一般而言,應提前產生用於玩家輸入運動補償之運動向量。對於諸如玩家攝影機旋轉之運動,可基於遊戲如何加權輸入來計算運動向量。在某些實施例中,運動向量可為輸入值乘以敏感度權數。對於不能直接計算之運動(諸如動畫移動),可在開發期間觸發動畫使得可直接量測並儲存運動向量。量測運動向量可透過在H.264編碼期間執行之相同運動估計技術來完成。
圖1繪示其中藉由一遠端用戶端控制一視訊遊戲之一實例性系統。在此系統中,一伺服器100裝載視訊遊戲軟體102及演現視訊輸出之一圖形引擎104。在一編碼解碼器(亦被稱為一寫碼引擎或編碼器) 106中編碼視訊且將經編碼視訊資料108傳輸至一遠端用戶端。伺服器架構100可為可支援圖形引擎104及編碼解碼器106兩者之功能之硬體或軟體之任何組合。在給定實例中,圖形引擎104可實施為(例如)藉由載入至某電腦可讀記憶體112中之視訊遊戲軟體102加以控制之一GPU 110,而編碼解碼器106可實施為執行視訊編碼軟體之一CPU 114。
遠端用戶端由一電腦系統116組成,該電腦系統116能夠執行用以解碼傳輸之經編碼視訊資料108之一用戶端編碼解碼器118及用以應用玩家輸入運動補償之一用戶端應用程式120。用戶端電腦系統116亦含有驅動顯示器硬體124之一顯示控制器122。來自用戶端輸入週邊設備126之輸入將藉由用戶端應用程式120轉換成傳輸回至執行於伺服器100上之遊戲軟體102之控制資料128。來自週邊設備126之輸入亦將用於判定應用什麼(若有)玩家輸入運動補償,如藉由圖2更詳細繪示。
圖2係描述針對一單個輸入執行玩家輸入運動補償所需之步驟的一流程圖。在步驟200處,當用戶端初始化時,伺服器發送含有輸入及其等相關聯運動向量之一查詢表,該查詢表接著在步驟202處藉由用戶端快取。在此實施方案中,用戶端經一般化以伺服多個串流遊戲之需求。在某些實施例中,一遊戲特定用戶端可略過步驟200及202,此係因為已含有用於遊戲之查詢表。在一替代實施方案中,一遊戲特定用戶端可永久儲存運動向量查詢表而不需要自伺服器快取。
在步驟204處,當用戶端自一輸入裝置(諸如一滑鼠或遊戲台控制器)接收玩家輸入時,在步驟206處,用戶端應用程式將針對匹配之輸入檢查經快取運動向量查詢表。若無匹配之玩家輸入,則用戶端將採取額外動作且在無額外修改的情況下將輸入發送至伺服器。若快取中存在一匹配之玩家輸入,則用戶端將應用玩家輸入運動補償。視需要,快取可能夠基於玩家輸入而改變查詢表中之項目。例如,當玩家點擊暫停按鈕時,所有玩家移動輸入應停用直至玩家退出暫停螢幕。在一實施方案中,用戶端控制之查詢表可具有在玩家選擇暫停輸入之任何時候較佳藉由用戶端切換之兩個輸入集,一個輸入集用於暫停選單中且一個輸入集用於暫停選單外。在一替代實施方案中,伺服器可切換用戶端上之經快取查詢表之內容。
當用戶端應用程式接收用於運動補償之玩家輸入時,在步驟208處,用戶端將新增一標籤至玩家輸入及其相關聯運動向量。在步驟210處將經加標籤輸入發送至伺服器。該標籤係可使玩家輸入與一未來圖框相關之任何識別符。例如,標籤可為每當用戶端接收將用於執行玩家輸入運動補償之輸入時遞增之一整數。標籤可作為後設資料新增於與玩家輸入相同之網路封包中或以保持標籤資訊與輸入資訊同步之一類似訊息傳遞型樣發送。在步驟213處,用戶端確認是否接收到一標籤。在玩家輸入經加標籤並發送時,在步驟212處,用戶端應用經快取查詢表中所包含之運動向量。此等運動向量將應用於各傳入圖框直至自伺服器傳回相關標籤。應用此等運動向量之一例示性方法之一詳細描述係繪示於圖3中。
當伺服器接收經加標籤玩家輸入時,該經加標籤玩家輸入傳遞至在步驟214處產生一輸出圖框之遊戲。接著在步驟216處編碼視訊影像。在將經編碼圖框發送回至用戶端之前,在步驟218處將玩家輸入標籤附加至經編碼圖框。此係與先前與玩家輸入一起發送相同之標籤且表明輸出圖框含有來自玩家輸入之實際視訊回饋。將一標籤附加至經編碼圖框可藉由將該標籤作為後設資料新增至與經編碼圖框相同之網路封包而完成。在步驟220處將經加標籤之編碼圖框發送回至用戶端。當用戶端接收具有一標籤之一經編碼圖框時,用戶端可使該標籤與一先前玩家輸入運動補償相關。接著在步驟222處,用戶端停止應用該先前運動補償。
圖3係在利用玩家輸入運動補償之一視訊遊戲串流環境之執行時間期間之一實例性時刻的一圖解說明。在步驟300處,當用戶端接收任何玩家輸入時,在步驟302處將比較該玩家輸入與運動向量查詢表。若存在一匹配之玩家輸入,則相關聯運動向量將用於玩家輸入運動補償。在步驟306處使用步驟304處之一獨特輸入標籤加標籤於運動向量。在此實例中,所選取之標籤係整數「1003」。在步驟308處將該等經加標籤運動向量新增至含有當前用於玩家輸入運動補償之任何其他經加標籤運動向量之一佇列。
在步驟320處來自伺服器之位元串流中的下一圖框到達。在步驟318處用一獨特識別符(在此情況中,整數「1001」)加標籤於此圖框,該獨特識別符「1001」指示該圖框含有多達且包含對應於標籤「1001」之輸入之所有先前玩家輸入之所得運動。標籤「1001」向用戶端指示其可在步驟322處針對此經加標籤輸入停止應用運動補償。接著在步驟308處自經加標籤運動向量佇列移除具有標籤「1001」之運動向量連同在先前封包已丟失的情況下仍可保留於佇列中之具有較早標籤之任何運動向量。
在步驟324處解碼經寫碼視訊316。同時,在步驟310處加總步驟308處之運動向量佇列中之剩餘運動向量。運動向量通常係具有用於影像中之各巨集區塊之一向量之向量場。為加總運動向量,逐元素加總向量使得結果係具有用於各巨集區塊之一向量之一向量場。兩個向量場之總和係用於場中之各點之向量之向量總和,因此兩個運動向量集之總和係用於影像中之各巨集區塊之向量總和。兩個向量之總和定義為其等分量之逐分量總和,此可表示為{u1, u2} + {v1, v2} = {u1+ v1, u2+ v2}。在此實例中,具有標籤「1002」及「1003」之兩個運動向量集包含在佇列中;加總此兩個運動向量集。標籤本質上按時間順序排列,此容許用戶端知道先前加標籤之玩家輸入之排序。此使用戶端摒棄經加標籤運動向量直至且包含一傳入圖框中之傳回標籤。此外,上文所論述之加標籤在運算上比更複雜方法便宜。選用平滑函數可在此時間點應用以防止箝制假影或緩解類似引入之假影。
箝制假影係在巨集區塊在螢幕外移動時引入且表現為垂直於螢幕邊緣之像素色彩模糊。一實例性平滑函數將在向外指向運動向量靠近影像之邊緣時減小該等向外指向運動向量之強度。僅需要減弱向外指向性分量,用於向外指向向量之y分量朝向影像之頂部邊緣及底部邊緣且用於向外指向向量之x向量朝向影像之左邊緣及右邊緣。對於指向邊界之向量,向量分量可乘以距邊緣之距離之平方使得在距邊界之距離接近零時,向量分量將接近零。在此實例中,朝向影像之右邊緣之一向外指向向量將自{x,y}變換為{x*d*d,y},其中d係距邊緣之距離。以圍繞影像之邊界之輕微影像失真為交換,此將緩解箝制假影。對於玩家而言,失真比箝制假影更不明顯。
在步驟324處完成對經編碼視訊圖框之解碼程序之後,在步驟312處將經加總運動向量用於運動補償中。在步驟314處輸出所得視訊。此輸出含有玩家輸入運動補償資料且將顯示於用戶端上。此經輸出圖框係含有用於具有相關標籤「1003」之輸入之一運動估計之第一圖框。此經輸出圖框亦含有用於具有相關標籤「1002」之先前輸入之一運動估計,針對該運動估計,用戶端仍等待伺服器傳回實際運動向量。此經輸出圖框亦係含有用於具有相關標籤「1001」之一先前輸入之實際運動向量之第一圖框,用戶端先前已針對該第一圖框估計運動。因此,此時在方法中存在三種運動估計狀態:用於新輸入之一個新估計狀態;等待實際結果之一個持續估計狀態;及因為實際結果已到達用戶端而停止之另一估計狀態。
圖4係繪示在圖3之玩家輸入運動補償步驟期間之一實例性巨集區塊的一圖式。玩家輸入運動補償步驟在程序上類似於在H.264解碼期間執行之程序,其中經解碼運動向量係用於判定當前圖框中之巨集區塊已自先前圖框移動至何處。對於玩家輸入運動補償,所應用之運動向量將藉由在向玩家顯示輸出視訊之前移動當前圖框中之巨集區塊而估計針對一玩家輸入之未來回饋。圖4A展示來自圖3中之步驟308處所展示之實例性經加標籤運動向量之在步驟400處之佇列中之兩個經加標籤運動向量集。在圖4B中之步驟402處,藉由獲取用於影像中之各巨集區塊之向量總和而加總此兩個集以產生一個運動向量集。此集中之運動向量之各者表示用於當前圖框中之各巨集區塊之經估計移動。對於步驟402處之經加總運動向量中之各向量,將使圖4C之實例性影像中之一對應巨集區塊移位。一個實例性巨集區塊在圖4C中展示為在步驟404處藉由其對應玩家輸入運動向量而移位。實例性影像中之各巨集區塊將以此方式移位。圖4C中之實例性影像僅含有50個巨集區塊,但一高清晰度影像將含有成千上萬個巨集區塊。圖4中所展示之實例性運動向量展示均勻剛性運動,但所描述之玩家輸入運動補償技術可與具有任意複雜度之運動向量一起用於描述此項技術中已知之螢幕空間中之旋轉、振動或其他複雜運動。
圖5係在用戶端上之玩家輸入運動補償期間應用運動向量之一替代方法的一圖解說明。在此方法之某些實施例中,沒必要在編碼及解碼視訊期間處置殘差。在查詢表中找到一匹配之玩家輸入之後,在步驟500處,相關聯運動向量經加標籤且用於如圖2中之步驟208及212中所展示之玩家輸入運動補償。在對下一圖框之解碼程序期間,在步驟502處,玩家輸入運動向量相加至經解碼運動向量且注入至運動補償步驟中(在H.264寫碼標準中予以定義)。在步驟504處,應用如藉由H.264寫碼標準定義之解塊濾波器,但應僅應用於尚未藉由玩家輸入運動補償修改之區塊。步驟506處所展示之所得輸出含有玩家輸入運動補償且將顯示於用戶端上。該輸出隨後在步驟506及步驟518處緩衝,成為用於對下一圖框之運動補償中之先前影像。不同於圖3中之實施方案,在此實施方案中,經加標籤玩家輸入運動向量僅被應用一次。此意謂經加標籤玩家輸入運動向量不需要與佇列中之所有經加標籤運動向量加總,此係因為步驟518處所展示之先前影像將含有先前經加標籤運動向量之總和。接收輸入與顯示視訊輸出之間的時間係輸入回饋延時,將藉由使用玩家輸入運動補償來代替等待伺服器傳回輸出視訊而顯著縮減輸入回饋延時。
在與步驟500相同之時間,用戶端將發送對應經加標籤玩家輸入至伺服器,如圖2中之步驟208及210中所展示。用戶端將最終接收如步驟508處所展示之具有與步驟512處之來自伺服器之位元串流中相同之標籤510之經寫碼視訊,如圖2中之步驟220中所展示。與視訊相關聯之標籤510表明在經編碼視訊中表示先前藉由玩家輸入運動補償估計之實際運動,如步驟508處所展示。該經編碼視訊通過步驟514處之熵編碼及步驟516處之逆量化及逆變換,如藉由H.264寫碼標準所定義。
已在先前章節中所描述之步驟508、510、512、514及516之前執行之先前玩家輸入運動補償步驟已使來自經編碼圖框之實際運動向量試圖移位之巨集區塊移位。因此,直接應用實際運動向量將使不正確巨集區塊移位。位元串流將含有兩個相關資料片:經編碼視訊圖框及一相關標籤。將該經編碼圖框發送至步驟514處之熵編碼,而提前將該標籤發送至步驟520處之融合程序。為進行補償,步驟520處之融合程序藉由計算傳入實際運動向量與具有一匹配之相關標籤之先前使用之玩家輸入運動向量500之間的差而供應校正運動向量。該差可藉由將用於相關標籤之逆運動向量相加至實際運動向量而予以計算且結合圖6更詳細描述。校正向量係用於代替用於步驟502處之運動補償之經解碼運動向量。解碼管線之其餘者照常繼續步驟504處之解塊濾波器、步驟506處之下一輸出視訊圖框及步驟518處之緩衝輸出。此等步驟可繼續針對各圖框無限重複。一般而言,步驟520之融合程序發生在逆量化(步驟514)及逆變換(步驟516)之後,此係因為實際運動向量將不可用直至此時間點為止。一旦實際運動向量可用,融合程序便可使用其等計算實際運動向量與經估計運動向量之間的差。
圖6繪示經歷玩家輸入運動補償及融合之一實例性巨集區塊。在時間0 ms,玩家按壓輸入以使攝影機視角向左旋轉。來自查詢表之展示為「PIMC」600之相關聯玩家輸入運動補償運動向量被應用於下一圖框中之所有巨集區塊。圖6A展示向右移位之一實例性巨集區塊。玩家輸入運動補償之結果出現在下一經解碼圖框中,從而對於以每秒60個圖框執行之視訊導致16 ms之一最大輸入回饋延時(一個圖框之長度)。在其他實施例中,對於以每秒30個圖框執行之視訊,該最大輸入回饋延時可係33 ms。因此預期本發明按各種圖框率操作,以將最大輸入回饋延時限於一個圖框之長度。當自伺服器傳回經加標籤視訊時,其含有藉由伺服器編碼之實際運動向量602,如圖6B中所展示。對於此實例,在時間100 ms傳回經寫碼視訊,但此將很大程度上取決於網路延時。實際向量602係指已在玩家輸入運動補償600期間移位之巨集區塊,因此實際向量602不能直接應用於現有圖框。反而,校正向量604需要藉由求得實際向量602與玩家輸入執行向量600之間的差而予以計算。該差可藉由將逆玩家輸入運動向量相加至實際運動向量而予以計算。求得此等向量差被稱為圖5中之步驟520處之融合。校正向量604愈小,玩家輸入運動補償方法在估計實際運動向量方面愈成功。圖6C中所展示之針對實例性巨集區塊之所得運動606與實際運動向量602相同。此實例繪示玩家輸入運動補償可如何針對一玩家輸入而估計視訊回饋且展示16 ms與100 ms之間的時間內之結果,而一未經修改系統將不顯示任何玩家回饋直至在接收玩家輸入之後116 ms為止。
在開發期間,遊戲開發者將需要決定在執行時間期間哪些運動及動畫將發送經預測運動向量。獨特但可預測運動向量係用於經預測運動向量之最佳候選者。一分類實例將包含藉由引擎自適應性改變之動畫,諸如使用運動學方程式計算接合角度之動畫、時間扭曲(time-warped)之動畫或以其他方式拉伸或壓縮之動畫。例如,當一玩家進入一所定義之凸緣及跳躍範圍內時一凸緣抓取動畫播放。該凸緣抓取動畫經拉伸使得該玩家之手在該凸緣上但仍附接至玩家之身體。動畫經由所定義數目個圖框播出,以將玩家放置於凸緣之頂部上。此實例中之起始點係可變的,具有可接受位置及定向之一範圍。此凸緣抓取動畫係適用於產生經預測運動向量之一候選者,此係因為精確動畫並非提前知道而是藉由遊戲引擎視需要以程式化方式產生。用戶端尤其無法知道用於此動畫之運動向量,此係因為用戶端不具有關於一遊戲串流環境中之玩家位置之任何背景內容資訊。
經預測運動向量將僅在一有限背景內容或時間範疇(諸如一特定攝影機位置、一小時間窗或某其他特定玩家背景內容)內有用。對於各經預測運動向量集,需要產生一對應失效者。該失效者可在用戶端上用於防止經預測運動向量在其等有效之後應用。在某些實施例中,一失效者可為將改變遊戲背景內容使得播放經預測運動向量不再可行之一任意玩家輸入集。在其他實施例中,一失效者可為經預測運動向量針對其可有效之一時間窗。在又其他實施例中,一失效者可為失效輸入及一時間窗之一組合。例如,針對一凸緣抓取動畫產生之經預測運動向量僅在一有限玩家位置及定向內有效,且因而,一失效者將必定包含任何平移或旋轉移動輸入。失效者將需要在經預測運動向量特徵之開發期間經設計及實施。經預測運動向量亦可經停用或藉由如下文結合圖10至圖13所描述之自伺服器發送之事件或訊息更新,圖10至圖13論述將經快取重複運動向量用於運動補償。
經預測運動向量可提前產生或其等可在執行時間期間視需要產生。對於具有有限數目個置換之動畫,例如,經預測運動向量可藉由觸發各置換及記錄運動向量而離線產生。在某些實施例中,對於一般化用戶端,運動向量將儲存於伺服器端且接著視需要發送至用戶端以供快取。當運動向量發送至用戶端時,運動向量快取於查詢表中。預產生之經預測運動向量可儲存於伺服器處且將可作為一遊戲可讀檔案格式取用,容許伺服器在遊戲之執行時間期間發送預產生之運動向量以快取於用戶端上之查詢表中。在執行時間期間產生之動畫(諸如透過逆運動學計算之動畫)不能預產生,此係因為可能不存在離散數目個可能動畫置換。逆運動學係在即時演現中通常用於在一組邊界條件內擬合一動畫之一方法。例如,一視訊遊戲中之一玩家角色想要抓取一附近凸緣,該等邊界條件將藉由該玩家之手碰撞該凸緣所處之位置而予以定義且凸緣抓取動畫將相應地透過逆運動學改變。對於諸如此等之自適應性改變之動畫,遊戲可在執行時間期間可將可能動畫推測性地演現成一螢幕外運動向量影像且視需要記錄經預測運動向量。例如,若玩家在一可抓取凸緣附近,則遊戲可預測玩家將很快抓取凸緣,且遊戲可推測性地演現凸緣抓取動畫以產生經預測運動向量。將需要在執行時間期間產生經預測運動向量之自適應性改變之動畫將需要由一開發者提前識別。
描述玩家背景內容之現有遊戲系統(諸如玩家位置追蹤、指令碼系統、觸發體積(trigger volume)或路徑搜尋(pathfinding)系統)可用於產生將在需要推測性地演現一動畫時發信號之一事件。例如,一遊戲可追蹤玩家與一可抓取凸緣之接近度且發信號通知該遊戲推測性地演現凸緣抓取動畫並記錄經預測運動向量。特定動畫(如拾取武器、牽拉一桿或按下一按鈕)可基於玩家與互動之接近度及玩家定向而拉伸或調整。此等動畫具有太多置換以致於使預產生不可行,但亦可在執行時間期間產生,如圖7中例示性地展示。每次以相同方式播出之運動可離線產生及記錄,此等通常係每次在其等經觸發時在相同螢幕空間中以相同速率發生之運動。用於此等動畫之運動向量可藉由觸發動畫之所有可能置換並記錄遊戲產生之運動向量或透過更多傳統運動估計技術(諸如H.264編碼解碼器中所使用之技術)產生運動向量而離線記錄。在一較佳實施例中,如上文結合圖1至圖6所描述,遊戲產生之運動向量係用於確保高品質運動估計。此程序可發生在開發期間之任何時間點,但較佳的是新增此程序作為建置程序或某其他現有資產調節程序期間之一階段,諸如預產生mip-map及細節層次(「LOD」)。資產調節可包含將遊戲資產自人類可讀源格式編譯成機器可讀格式之任何程序。例如,mip-map可藉由將藝術家建立之紋理檔案轉換成含有多個解析度之遊戲就緒格式而提前產生。類似地,LOD可藉由將藝術家建立之模型檔案轉換成含有多個細節層次之遊戲就緒格式而提前產生。運動向量產生可新增至將藝術家產生之動畫格式轉換成遊戲就緒格式之一現有資產調節程序。
圖7繪示用於在離線或執行時間案例中產生運動向量之一實例性方法。動畫可演現為一螢幕外表面/影像(步驟700),且運動向量可經記錄以供立即使用。將僅需要演現螢幕之移動的部分,可忽視場景中的其他物件。經展示於步驟702處的虛線物件及展示於步驟704處的實線物件分別表示在一先前圖框及一當前圖框中之一動畫物件的位置。在步驟706處,將以經展示於步驟708處之運動向量的形式擷取自該先前圖框至該當前圖框的移動。該等運動向量可係自遊戲產生之運動向量擷取或透過更多傳統運動估計技術(諸如H.264編碼解碼器中中所使用之技術)擷取。在一較佳實施例中,如上文結合圖1至圖6所描述,遊戲產生之運動向量係用於確保高品質運動向量。可藉由重複步驟700至708所繪示之程序直至已針對全部所需圖框產生運動向量來針對一給定動畫快速計算若干圖框之經預測運動向量的價值。並非需要產生動畫中之所有圖框,僅需要在視訊串流趕上時產生足夠圖框以在用戶端上播放。最小數目個經產生圖框將取決於發送玩家輸入與在用戶端上接收所得視訊串流之間的延遲;且一動畫之所產生部分的長度應至少與該延遲一樣長。經預測運動向量圖框可如下文結合圖10至圖13所描述在播放期間按速率按比例調整,圖10至圖13論述在運動估計中使用經快取重複運動向量。若經預測運動向量圖框之播放係按速率按比例調整,則產生用於一動畫之等於延遲之一部分之經預測運動向量將導致一播放速率按比例調整50%。產生用於該動畫之一較長部分之運動向量將導致程度較小地按速率按比例調整之播放。
在記錄運動向量時,應考量用於視訊編碼之巨集區塊大小,且應存在用於各巨集區塊之一運動向量。在較佳實施例中,遊戲產生之運動向量係作為每像素運動向量而產生,且藉由求得用於每像素運動向量之各巨集區塊群組的算術平均數來變換為每巨集區塊運動向量。
圖8繪示出於玩家輸入運動補償之目的之預測運動向量的傳輸與用戶端儲存。在視訊遊戲軟體之開發期間,事件需要經組態以發信號通知即將到來之輸入驅動的背景內容相關性動畫。例如,一遊戲開發者將有可能發送經預測運動向量,使得其等將在玩家執行一凸緣抓取動畫時可用。該開發者實施將在玩家面對一可抓取凸緣及在一可抓取凸緣之範圍內兩者之任何時候觸發之一事件。在此實例中,當玩家在玩遊戲靠近一可抓取凸緣時,實例性事件係在「在遊戲執行時間期間,接收一事件」步驟800處接收。事件類型將描述如在自適應性改變之動畫的情況中是否將需要產生經預測運動向量,或如在從未改變但很少播放或取決於玩家背景內容之動畫的情況中是否已離線預產生經預測運動向量。在以上實例中,基於玩家距凸緣之距離而拉伸凸緣抓取動畫,此意謂運動向量將需要在執行時間於「產生經預測運動向量」步驟802處產生。在另一情況中,運動向量可已離線產生,及在「讀取預產生之運動向量」步驟804處,自儲存器讀取。
預產生之運動向量之一實例可在一大型兵工廠中之武器之間切換。可能武器切換置換之數目可變得相當大,使得快取整個所得運動向量集是不切實際的。一般而言,若運動向量佔據有限快取區中之過多空間且使用不夠頻繁,則其等並非用於預快取之主要候選者。在「發送經預測運動向量及失效者」步驟806處將經預測運動向量發送至用戶端。在「快取經預測運動向量及失效者」步驟808處將經預測運動向量新增至運動向量查詢表。在一項實施例中,失效系統以類似於觸發查詢表中之運動向量之應用但代替性地停用運動向量之系統之方式起作用。當在「快取經預測運動向量及失效者」步驟808處接收一運動向量集及失效者時,失效者將需要藉由失效系統註冊。
如上文結合圖1至圖6所描述,玩家輸入運動補償方法比較所有玩家輸入與運動向量查詢表中之項目。在以上實例中,當玩家輸入所需輸入以起始凸緣抓取動畫時,在「匹配經接收之玩家輸入」步驟810處該輸入將匹配查詢表中之先前快取之輸入。若尚未使快取之經預測運動向量失效,則在「應用玩家輸入運動補償」步驟812處將應用經預測運動向量。若一匹配之玩家輸入將使經預測運動向量失效,或若經預測運動向量在一預定時間之後到期,或若經預測運動向量在被應用一次之後到期,則經預測運動向量係在「失效」步驟814處自查詢表移除且不被應用。
圖9描述可使一經預測運動向量集失效之信號之一例示性方法。失效係一種對查詢表更新之類型,其中自較佳快取於用戶端處之查詢表移除一經預測運動向量集。除了對應於自伺服器接收之更新事件之外,更新機制亦可監測玩家輸入且含有失效倒數計時器。當在查詢表中快取一經預測運動向量集時,其失效者將有可能藉由更新功能/機制註冊。一失效者係觸發對查詢表之一失效更新之任何資料信號。步驟900處所展示之例示性查詢表「查詢表」含有三個經預測運動向量集:一經預測門動畫,展示於「經預測門動畫」步驟902處;一經預測凸緣抓取動畫,展示於「經預測凸緣抓取」步驟904處;及一經預測射殺動畫,展示於「經預測射殺動畫」步驟906處。經預測運動向量可在被應用一次之後失效。在實例中,當玩家在「開門輸入」步驟908處按下輸入時,應用展示於「經預測門動畫」步驟902處之經預測門動畫運動向量以打開一附近門。同時,在「使用之後失效」步驟910處,撤銷註冊「開門輸入」步驟908處之開門輸入且可自查詢表移除展示於「經預測門動畫」步驟902處之經預測門動畫。類似地,其他輸入可使經預測運動向量在其等被應用之前失效。在實例中,用於展示於「經預測凸緣抓取」步驟904處之一凸緣抓取動畫之一經預測運動向量集係僅在距一凸緣之一有限距離內有效。
若在玩家跳躍以抓取凸緣(藉由使用展示於「跳躍輸入」步驟914處之跳躍輸入)之前玩家藉由使用展示於「移動輸入」步驟912處之移動輸入移動遠離凸緣,則在「使輸入失效」步驟916處將使展示於「經預測凸緣抓取」步驟904處之經預測凸緣抓取運動向量失效。使輸入失效之其他實例可為其中玩家具有使經預測運動向量失效之一抓鉤或某其他基於移動之武器之情況,及其中玩家按下啟動一特殊能力之一按鈕之情況。因為使輸入失效係背景內容特定的,所以其他可基於特定實施方案而明白。經預測運動向量亦可隨時間流逝而到期。在實例中,一射殺機會係僅在三秒時間窗內向玩家呈現。若玩家未在三秒時間窗內按壓展示於「格鬥輸入」步驟918處之格鬥輸入,則在「在到期計時器上失效」步驟920處將使用於展示於「經預測射殺動畫」步驟906處之一經預測射殺動畫之運動向量失效。經預測運動向量可具有多個失效者且反之亦然。例如,若接收一移動輸入或在使用凸緣抓取運動向量之後(以先發生者為準),可使一經預測凸緣抓取失效。
圖10展示出於快取目的產生運動向量庫及一實例性重複運動向量庫之一例示性方法。因為選定之運動在本質上係高度重複的,所以其等將以與每一次觸發其等相同之方式播放。此使得有可能提前產生運動向量並將其等組織至運動向量庫中。運動向量庫產生可發生在開發期間之任何時間點,但新增此程序作為建置程序或某其他資產調節階段期間之一階段可為合理的。在此實例中,一運動向量庫將針對第一人稱射擊遊戲中之各可用武器而產生。當在「庫產生」步驟1000處針對第一武器之庫產生開始時,在「觸發動畫」步驟1002處觸發第一武器動畫且在「記錄運動向量」步驟1004處記錄運動向量。運動向量可經遊戲產生或透過更多傳統運動估計技術(諸如H.264編碼解碼器中所使用之技術)而產生。在一較佳實施例中,如其等之全文併入本文之美國臨時申請案第62/488,256號及第62/634,464號中所描述,遊戲產生之運動向量係用於確保高品質運動估計。若經記錄之運動向量不準確或未經正確量化,則在玩家輸入運動補償期間使用時其等將引起假影。步驟1002及1004重複直至已在運動向量庫中針對各高度重複之動畫記錄運動向量。在步驟1000處運動向量庫產生再次開始直至產生所有運動向量庫為止。
展示於「運動向量庫」步驟1006處之實例係用於一第一人稱射擊遊戲中之一電漿步槍武器之一重複運動向量庫之一極其簡化版本。此實例經簡化以包含兩個簡單動畫:用於在玩家發射電漿步槍時播放之回饋動畫之一個2圖框動畫,展示於步驟1008處;及用於在玩家向前行走時發生之步槍之搖擺運動之一個4圖框動畫,展示於步驟1010處。在一典型、真實世界環境中,一武器將有可能具有更多動畫且該等動畫可遠遠長於四個圖框。
圖11繪示快取、應用及更新用於玩家輸入運動補償之運動向量庫之程序。當遊戲初始化時,在「啟動時,發送重複運動向量庫」步驟1100處,伺服器將發送預產生之運動向量庫至用戶端。在「快取重複運動向量」步驟1102處,用戶端將運動向量庫通常以一查詢表之形式儲存於記憶體中。在此實施方案中,用戶端經一般化以伺服多個串流遊戲之需求。在一替代實施方案中,一遊戲特定用戶端可永久儲存運動向量庫而不需要自伺服器快取重複運動向量。
此時,用戶端可開始監測玩家輸入並比較傳入輸入與玩家輸入運動補償查詢表中之項目。當在「匹配經接收之玩家輸入」步驟1104處一傳入輸入在查詢表中具有一匹配項目,則在「應用玩家輸入運動補償」步驟1106處,與玩家輸入相關聯之運動向量係用於提供如結合圖1至圖10例示性地描述之一運動估計。在「更新經快取之重複運動向量映射」步驟1112處,可能存在其中接收一特定輸入可需要改變查詢表之特定情況。將改變查詢表之一輸入之一實例係暫停按鈕,其可停用玩家輸入,諸如角色移動、武器發射動畫或其他玩法相關運動。在應用運動向量及視需要更新查詢表之後,用戶端將繼續監測玩家輸入。在「更新經快取之重複運動向量映射」步驟1112處更新查詢表之後,將比較傳入玩家輸入與查詢表中之經更新項目。
在遊戲之執行時間期間之任何時間點,玩家之一背景內容變化可需要改變查詢表。例如,玩家可切換武器,需要將經快取運動向量庫自先前保存之武器切換至新武器。一例示性實施方案可看到針對特定遊戲事件之伺服器端遊戲監測。此等事件將藉由此項技術中已知之方法在遊戲開發期間組態且可經由遊戲之現有訊息傳遞或事件系統發送。在「在執行時間期間,接收一事件」步驟1108處,當一執行中遊戲例項接收此等事件之一者時,一訊息將經產生且在「發送背景內容更新」步驟1110處傳輸至用戶端。可針對改變玩家輸入與查詢表中所包含之運動向量之間的關係之任何遊戲事件發送一背景內容更新。背景內容更新可啟用或停用一玩家輸入觸發一運動向量集,改變與一給定輸入相關聯之運動向量,或以其他方式新增或移除玩家輸入與用於玩家輸入運動補償之運動向量之間的關聯。當訊息到達用戶端時,在「更新經快取之重複運動向量映射」步驟1112處根據改變之背景內容而改變查詢表。
圖12係繪示可如何更新運動向量映射之一圖式。儲存於用戶端之快取區1202中之查詢表1200係藉由用戶端用於找出哪些運動向量與一給定玩家輸入相關聯。在遊戲之執行時間期間可能存在其中背景內容變化改變玩家輸入之行為之時間。例如,若一玩家向前移動但碰到一移動阻礙物(諸如一牆),則用於先前移動之經預測運動向量將需要停止應用。當此發生時,伺服器將發送一背景內容更新至用戶端,如圖11中之步驟1110中所展示。接收此移動阻礙事件1204,其發信號通知用戶端停用向前移動輸入1206與對應運動向量1208之間的連接。該等向前移動運動向量將在玩家使用該向前移動輸入時停止應用直至來自伺服器之另一事件重新啟用向前移動輸入與向前移動運動向量之間的連接。對於此實例,當玩家之移動變得暢通無阻且將背景內容更新傳輸至用戶端時,遊戲將產生一事件以重新建立向前輸入與查詢表中之向前移動運動向量之間的連接。
在另一實例中,玩家持有電漿步槍但切換至一獵槍。電漿步槍運動向量庫1210係連同其對應於一特定發射輸入1211之發射運動向量1209一起儲存於快取區中。快取區亦儲存用於包含一獵槍1212及手槍1214之其他武器之運動向量庫。當用戶端自伺服器接收武器切換事件1216時,電漿步槍運動向量庫1210切換出查詢表1200以用於獵槍運動向量庫1212。為防止玩家輸入運動補償在武器切換期間不適當地發生,可先後使用兩個事件以在一武器切換動畫播放時首先停用電漿步槍運動向量庫1210,且接著在武器切換動畫完成之後切換兩個運動向量庫。
對於較長多圖框運動向量,可展開其等應用使得在自伺服器接收實際視訊之最後圖框時應用最後圖框之運動向量。此將容許伺服器在用戶端用完經快取之運動向量時之時刻趕上經估計運動。用於運動向量之比例調整因數定義為如下所展示例示性地計算之播放速度調整比例。
其中延遲定義為初始玩家輸入事件與在用戶端上接收實際視訊之間的時間。此延遲包含經由網路發送輸入至伺服器所花費之時間,伺服器上之處理包含遊戲邏輯、演現邏輯、GPU演現時間及編碼時間以及將視訊傳回至玩家之網路時間。延遲應已在任何遊戲串流環境中連續量測。如美國臨時申請案第62/488,256號及第62/634,464號中所描述,玩家輸入運動補償之較佳實施例使用一相關標籤以使玩家輸入與實際視訊相關。在一傳入玩家輸入發送至伺服器之前,附加一相關標籤作為一獨特識別符。當一視訊圖框與一相關標籤一起自伺服器傳回時,用戶端使該獨特識別符與一先前輸入匹配。此發信號通知用戶端停止估計用於相關輸入之運動或透過融合技術復原一先前運動估計。動畫之經快取部分之長度或經快取動畫時間可藉由使經快取動畫中之圖框之數目乘以各圖框之長度而予以計算。
在圖13中,含有10個圖框之一例示性動畫係用於具有100 ms之一延遲之以每秒60個圖框執行之一遊戲中之玩家輸入運動補償。當玩家輸入觸發玩家輸入運動補償時,播放速度調整比例係如下所展示針對經快取運動向量計算。
在時間0 ms接收玩家輸入。運動向量之播放速率被按比例調整1300達經計算之播放速度調整比例。第一圖框之運動向量被應用於來自伺服器之視訊串流中之下一可用圖框。經按比例調整之運動向量圖框將經內插以保持動畫流暢。因為在多個圖框內按比例調整運動向量圖框,所以內插係可用於計算運動向量應用於任何給定圖框上之程度之一方法。一例示性實施方案可基於經計算之播放速度調整比例使用一線性內插。對於吾人之實例,經計算之播放速度調整比例係0.625,此將在1.6個顯示圖框上展開一個運動向量集。內插係用於計算一運動向量應用於一給定圖框上之程度之一方法。即,當該運動向量集在多個顯示圖框內展開時,內插計算使一巨集區塊向下移動一運動向量所達之程度。第一經按比例調整運動向量之僅一部分(等於0.625之播放速度調整比例)應應用於17 ms之第一顯示圖框上。在33 ms之第二顯示圖框上,應用計算為1 – 0.625 = 0.375之第一經按比例調整運動向量之其餘部分,接著應用計算為播放速度調整比例減去第一經按比例調整運動向量之其餘部分或0.625 – 0.375 = 0.25之第二經按比例調整運動向量之第一部分。在50 ms之第三顯示圖框上,繼續應用第二經按比例調整運動向量集,使巨集區塊向下移動接下來62.5%運動向量。在67 ms之第四顯示圖框上,應用計算為1 – 0.25 – 0.625 = 0.125之第二經按比例調整運動向量之其餘部分,且應用計算為播放速度調整比例減去第二經按比例調整運動向量之其餘部分0.625 – 0.125 = 0.5之第三經按比例調整運動向量之第一部分。在應用經按比例調整運動向量時線性內插繼續進行。
多圖框運動向量可發送用於經快取動畫之各圖框之一相關標籤,以使經估計運動之各圖框與未來實際視訊相關。
延遲將在很大程度上取決於網路路徑及用戶端與伺服器之間的架構。此實例使用一100 ms延遲,但延遲可在幾十毫秒至幾百毫秒之間改變。較短延遲將提供一較佳玩家體驗,但玩家輸入運動補償技術可在特定情況中幫助掩蓋高延遲時間之影響。在一延遲1304後,接收實際視訊1302。對於邊緣定位之伺服器,或實體上靠近消費者之伺服器,延遲時間可低至30 ms。對於更多典型伺服器位置,100 ms更有可能。實際視訊保持原始動畫長度1306,此係因為實際視訊未經按比例調整。實際視訊係根據玩家輸入運動補償技術而應用。
若用戶端不能較佳融合先前運動補償,則H.264寫碼標準提供可校正任何時間上傳播錯誤之一冗餘圖塊特徵。基於H.264設定檔設定,各圖塊將編碼為一內部圖塊(I圖塊)且以一特定頻率按一輪流排程發送。因為內部圖框將不含有運動向量,所以融合運動向量應僅在實際運動向量到達p圖塊時應用。此將防止融合運動向量應用於已在經加標籤圖框自伺服器傳回之前出現於一I圖塊中之巨集區塊上。
前面描述及圖式應被視為僅繪示本發明之原理。本發明不意欲受較佳實施例限制且可依一般技術者將明白之各種方式實施。熟習此項技術者將易於明白本發明之數種應用。因此,不需要將本發明限於所揭示之特定實例或所展示及描述之精確構造及操作。實情係,可採取落在本發明之範疇內之所有合適修改及等效例。