JP2023507817A - ストリーミングビデオコンテンツの送信中にスムーズなフレームレートを維持するための方法及びシステム - Google Patents

ストリーミングビデオコンテンツの送信中にスムーズなフレームレートを維持するための方法及びシステム Download PDF

Info

Publication number
JP2023507817A
JP2023507817A JP2022538289A JP2022538289A JP2023507817A JP 2023507817 A JP2023507817 A JP 2023507817A JP 2022538289 A JP2022538289 A JP 2022538289A JP 2022538289 A JP2022538289 A JP 2022538289A JP 2023507817 A JP2023507817 A JP 2023507817A
Authority
JP
Japan
Prior art keywords
data
frame
frames
game
encoder
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022538289A
Other languages
English (en)
Inventor
クリスチャン リッケビー クレース
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Interactive Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Interactive Entertainment Inc filed Critical Sony Interactive Entertainment Inc
Publication of JP2023507817A publication Critical patent/JP2023507817A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/33Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections
    • A63F13/335Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections using Internet
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/358Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/26Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/38Flow control; Congestion control by adapting coding or compression rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/164Feedback from the receiver or from the transmission channel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/23805Controlling the feeding rate to the network, e.g. by controlling the video pump
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2402Monitoring of the downstream path of the transmission network, e.g. bandwidth available
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/4781Games
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/538Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for performing operations on behalf of the game client, e.g. rendering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0894Packet rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Figure 2023507817000001
方法及びシステムでは、サーバデバイスからオンラインゲーム用に生成されたデータのフレームを受信し、エンコーダを使用してフレームを符号化する。符号化された各々のデータフレームは、レンダリングのためにネットワーク経由でクライアントデバイスに送信される。監視エンジンを使用して、符号化されたフレームに含まれるデータを評価し、符号化されたフレームに含まれるデータの量が、サーバデバイスとクライアントデバイスの間に確立された通信チャネルに指定された最大データ制限を超えているかどうかを判定する。符号化されたフレームに含まれるデータの量が最大データ制限を超えるときに、信号がエンコーダに送信され、レンダリングのためにクライアントデバイスに転送される1つ以上の後続のフレームに含まれるデータの量を動的に削減する。調整は、オンラインゲーム用に定められたフレームレートを維持するために実行される。
【選択図】図2

Description

本開示は、ストリーミングビデオコンテンツ、より具体的には、ストリーミングビデオコンテンツの送信中にスムーズなフレームレートを維持するための方法及びシステムに関する。
モバイルデバイスの人気が高まるにつれ、ユーザが消費するための映画、ビデオ、エンターテインメントコンテンツ、ライブゲームコンテンツなどのストリーミングコンテンツの需要が急激に増加している。ユーザの関心を完全に維持するには、待機時間を最小限に抑えた高い質のビデオコンテンツを提供することが不可欠である。最小限の待機時間でクライアントデバイスに高い質のビデオコンテンツを提供するには、かなりの量の帯域幅を備えた伝送パイプラインが、ストリーミングコンテンツを転送するために利用可能である必要がある。さらに、ストリーミングコンテンツ(ビデオデータなど)は、コンテンツをクライアントデバイスでスムーズかつ継続的にレンダリングできるように、安定したフレームレートで送信する必要がある。通常、インターネットなどのネットワークを介してストリーミングコンテンツを送信するための帯域幅は、インターネットサービスプロバイダによって定められる(つまり設定される)。
ビデオなどのストリーミングコンテンツは、ビデオシーケンスで何千もの個々の画像をキャプチャする。これらの画像は、データのフレームにキャプチャされる。これらのフレームが所定の時間内に与えられる頻度は、フレームレートを表す。フレームレートは、ユーザがビデオコンテンツの動きを認識する方法に影響を与える。1つまたは複数のフレームについてコマ落ちあるいはコマ落ちが発生することでフレームレートに不整合がある場合、ビデオの詳細の一部が失われ、ビデオが途切れる可能性がある。コマ落ちが最小限で、頻度も少ない場合、ユーザが知覚するビデオの質はそれほど影響を受けないであろう。しかし、コマ落ちが頻繁になると、画面に目立ったヒッチが認識される場合がある。
さらに、技術が時間と共に向上するにつれて、生成されるビデオの質とフレームレートも向上する。ペースの速いアクションをより徹底して与えるために、ライブストリーミングコンテンツプロバイダー(放送局など)によってより高いフレームレートが使用される。このようなペースの速いアクションの例には、サッカー、フットボールなどのスポーツの生中継、特に激しいオンラインゲームなどがある。ビデオの解像度とフレームレートの向上により、帯域幅要件に大きな負担がかかる。
コンテンツは、送信前にエンコーダを使用して符号化される。インターネット経由で送信する前にコンテンツを符号化するために使用されるエンコーダは、ハードウェアとソフトウェアの2つの主要なタイプに大きく分類できる。例えば、ハードウェアエンコーダは、インターネットなどのネットワークに直接接続し、ビデオコンテンツを符号化し、符号化されたビデオコンテンツをネットワーク経由で送信するように構成された物理コンピューティング機器/デバイスである。ソフトウェアエンコーダは、コンピュータで実行され、ネットワーク接続を確立し、ビデオコンテンツを符号化し、符号化されたビデオコンテンツをネットワークにプッシュするプログラム/プログラミングロジックである。
使用するエンコーダのタイプに関係なく、エンコーダは、データを符号化するときに、各フレームのデータの最大サイズに従うように指示され、最大サイズは、ビデオデータの送信に使用される通信チャネルで使用可能な帯域幅によって定められる。ただし、エンコーダは、フレームを生成するときに指定された最大サイズに厳密に準拠していない。その結果、エンコーダは時々、指定されたものよりも大きいフレームを生成する場合がある。例えば、エンコーダは、指定された最大サイズの何倍も大きいIフレームを生成する場合がある。このような大きなサイズのフレームを処理する従来の方法は、大きなフレームを処理、符号化、及び転送し、1つ以上の後続のフレームをドロップして大きなフレームを転送できるようにし、そうすることで、通信チャネル接続に指定された最大ビットレートを完全に無視するものである。前述のように、1つのフレームをまれにドロップしても、ユーザエクスペリエンス全体に影響を与え得ることはないが、フレームを頻繁にドロップすると、画面に目立った問題が発生する。この目立った問題は、ユーザの全体的なエクスペリエンスに影響を与える可能性がある。
本開示の実施形態は、このような状況の下になされたものである。
本開示の実施形態は、コンテンツの安定したストリームを生成するオンラインゲームまたはインタラクティブ(対話型)アプリケーションのデータを処理するためのシステム及び方法に関する。例えば、リモートサーバコンピューティングデバイス(または本明細書では単に「サーバ」と呼ばれる)で利用可能なゲームエンジンは、ユーザによって選択されたオンラインゲームを実行し、ストリーミングコンテンツを生成する。ストリーミングコンテンツに応じてなされるユーザの入力は、オンラインゲームのゲームの状態に影響を与えるために使用される。ストリーミングコンテンツはエンコーダを使用して符号化され、レンダリングのためにクライアントデバイスに送信される。ストリーミングコンテンツには、オンラインゲームの現在の状態が含まれる。符号化された各フレームに含まれるデータは、符号化されたフレームに含まれるデータが、リモートサーバとクライアントデバイスの間で確立された通信チャネルに対して定められたコンテンツの最大閾値制限を超えているかどうかを判定するために評価される。符号化されたフレームのデータが事前に定められた最大閾値制限を超えると、「送信負債(sent debt: SD)」のカウンタなどのカウンタがインクリメントあるいは増分される。送信負債カウンタ(sent debt counter: SDC)は、フレームに含まれるデータが通信チャネルに設定された閾値制限を超えるデータの量と、送信された負債を埋め合わせるために縮小する必要のあるフレーム数を識別する。送信負債カウンタは、符号化のためにエンコーダがコンテンツの後続のフレームを受信したときに照会され、データの後続のフレームは、閾値制限を超えたフレームの後に生成される。送信負債カウンタがノン-ゼロ、つまりゼロではない場合、エンコーダは、後続のフレームに含まれるデータの量を、事前に定められた削減された最大データ制限未満に縮小するように指示される。後続のフレーム(複数可)の削減される最大閾値制限は、第1のフレームが閾値制限を超えた量、及び/または通信チャネルの帯域幅、及び/またはオンラインゲームの要求によって引き起こされる可能性がある。送信された負債がゼロでない限り、後続のフレームに含まれるデータの量の縮小が継続される。送信された負債の埋め合わされると(つまり、送信された負債がゼロになると)、エンコーダは、事前に定められた最大閾値制限によって定められた通常のレートで、送信された負債が発生したデータのフレームの後に受信された後続のフレームの符号化を再開するように指示される。
後続のフレームが受信されると、エンコーダは、後続のフレームに含まれるデータの量を評価し、エンコーダで受信された信号に基づいて、オンラインゲームに指定された削減された最大データ制限まで、後続のフレームのデータの量を動的に減らすことができる。削減された最大データ制限は、ゲームプレイ用に選択されたオンラインゲームのタイプに基づいて事前に定められる場合がある。エンコーダで受信した信号に基づいて後続のフレームを評価する場合、エンコーダは、後続のフレームに含まれるデータの量が、削減された最大データ制限よりも少ないと判定する場合がある。このような場合、エンコーダは、後続のフレームのデータの量が、削減された最大データ制限内に十分に収まっているため、後続のフレームに含まれるデータの量を変更せずに、後続のフレームの符号化にまさに進む。
クライアントデバイスに送信される各フレームに適切な量のデータを含めるようにエンコーダに指示を与えることにより、スムーズで一貫したフレームレートを維持できる。フレームレートを維持すると、レンダリングにいずれの支障もきたすことなく、クライアントデバイスでオンラインゲームの関連コンテンツをレンダリングするに至る。エンコーダは、後続のフレームに含まれる画像(複数可)のレンダリングに重要な特定のデータを識別して保持し、重要ではない後続のフレームに含まれる他の特定のデータを破棄することにより、後続のフレーム(複数可)のデータの量を削減できる。あるいは、エンコーダは、圧縮技術を使用してデータを削減する場合がある
場合によっては、フレームデータプロセッサを使用して、オンラインゲームによって生成された各フレームのデータ(すなわち、フレームデータソース)を処理してから、処理されたデータのフレームを符号化のためにエンコーダに転送することができる。データの処理は、フレームに含まれるデータの複雑さを判断することであり得、エンコーダは、処理されたデータのどの部分(複数可)を保持し、どれを破棄するかについて、情報に基づいた決定を下すことができる。
一実施態様では、方法が開示される。この方法は、オンラインゲーム用に生成されたデータのフレームをサーバデバイスから受信することを含む。データのフレームは、オンラインゲームの現在の状態を表す。データのフレームは、エンコーダを使用して符号化される。符号化されたデータのフレームは、レンダリングのためにネットワーク経由でクライアントデバイスに送信される。符号化されたフレームに含まれるデータは、クライアントデバイスに送信される符号化されたフレームに含まれるデータの量を判定するために評価される。符号化されたフレームのデータの量が、サーバデバイスとクライアントデバイスの間で確立された通信チャネルに指定された最大データ制限を超えるとき、信号をエンコーダに送信して、レンダリングのためにクライアントデバイスに転送される1つ以上の後続のフレームに含まれるデータの量を動的に削減する。調整は、オンラインゲーム用に定められたフレームレートを維持するために実行される。
別の実施態様では、オンラインゲームのデータを処理するために使用されるシステムが開示される。このシステムには、オンラインゲームのインスタンスを実行し、クライアントデバイスに送信するためのデータのフレームを生成するように構成されたサーバが含まれている。このシステムはまた、オンラインゲームのデータのフレームを受信し、サーバとクライアントデバイスとの間に確立される通信チャネルに指定された最大データ制限に従ってデータのフレームを符号化するように構成されたエンコーダを含む。サーバには監視システムが含まれており、1つ以上の後続フレームに先行する特定のフレームに含まれるデータの量が、最大データ制限を超えるとき、フレーム各々に含まれるデータの量を監視し、エンコーダへの信号を生成して、1つ以上の後続のフレームに含まれるデータの量を動的に削減するように構成されている。
別の代替の実施態様において、方法が開示される。この方法は、オンラインゲーム用に生成されたデータのフレームをサーバデバイスから受信することを含む。データのフレームは、オンラインゲームの現在の状態を表す。この方法は、以前に符号化されたデータのフレームが、サーバデバイスとクライアントデバイスとの間に確立された通信チャネルに指定された最大データ制限を超えたかどうかを確認することをさらに含む。以前に符号化されたフレームが最大データ制限を超えたと判定された場合、フレームを符号化して符号化されたフレームを生成する前に、フレームに含まれるデータの量を削減された最大データ制限に動的に削減する。符号化されたデータフレームは、通信チャネルを介してクライアントデバイスに転送される。
本開示の他の態様は、本開示の原理を例として示す、添付図面を併用して以下の詳細な説明から明らかになるであろう。
本開示は、添付図面と併せて解釈される以下の説明を参照することにより、最も良く理解され得る。
本開示の一実施態様による、オンラインストリーミングゲームなどのストリーミングインタラクティブアプリケーションのスムーズなフレームレートを維持するのに使用されるクラウドゲームシステムの簡略化された物質的ビューを示している。 図2Aは、本開示の一実施態様に従って、オンラインゲームのゲームプレイ中に生成されたオンラインゲームコンテンツの安定したフレームレートをクライアントデバイスに与えるために使用されるサーバデバイスの異なるコンポーネントの簡略化されたブロック図を示す。図2Bは、本開示の別の実施態様に従って、オンラインゲームのゲームプレイ中に生成されたオンラインゲームコンテンツの安定したフレームレートをクライアントデバイスに与えるために使用されるサーバデバイスの異なるコンポーネントの簡略化されたブロック図を示す。 図3Aは、本開示の一実施態様に従って、エンコーダがクライアントデバイスに送信されるデータの各フレームに含める必要があるデータの量を識別するために使用される監視エンジンの様々なコンポーネントの簡略化されたブロック図を示す。図3Bは、本開示の一実施態様による、符号化のためにエンコーダに与えられるデータを調整するために使用されるフレームデータプロセッサの異なる構成要素の簡略化されたブロック図を示す。 本開示の一実施態様に従って、フレームソースによって生成された各フレームに含めるデータの量に関してエンコーダに指示する際に使用される簡素なプロセスのフロー図を示している。 最大ビットレートを使用して、フレームソース(オンラインゲームアプリケーションやオンラインインタラクティブアプリケーションなど)によって生成された様々なフレームのコンテンツを調整し、一実施態様でクライアントに連続フレームを提供する簡素な例を示している。 一実施態様による、クライアントデバイスへのオンワードの転送のためにデータのフレームを処理する方法の動作の流れを示している。 本発明の各種の実施態様による、ゲームシステムなどの例示的なインタラクティブアプリケーションシステムの簡略ブロック図を示す。 本発明の一実施態様に従った、ネットワークを介して地理的に分散及び接続されたユーザに情報のコンテンツ及びサービスを供給するための例示的な情報サービスプロバイダアーキテクチャを示す。
以下の詳細な説明は、例示の目的で多くの特定の詳細を含むが、当業者であれば、以下の詳細に対する多くの変形及び変更が本開示の範囲内にあることを理解するであろう。したがって、以下で説明される本開示の態様は、この説明に続く特許請求の範囲への一般性を失うことなく、また限定を課すことなく示される。
一般的に言えば、本開示の様々な実施態様は、オンラインストリーミングアプリケーション(例えば、オンラインゲームアプリケーション)によって生成されたデータの各フレームに含まれるデータの量と、フレームに含まれるデータの量がオンラインゲームに指定された最大データ制限を超え、1つ以上の後続のフレームのデータの量を動的に削減するときを評価するためのシステム及び方法を説明する。最大データ制限は、データのフレームを生成するサーバデバイスと、ストリーミングアプリケーションを選択することでデータを要求するクライアントデバイスとの間に確立された通信接続によって処理できる最大ビットレートに基づく場合がある。後続の各フレームに含まれるデータの量は、圧縮アルゴリズムを使用してデータを圧縮するか、フレームに含まれる画像(複数可)のレンダリングに重要ではないデータの部分を選択的に破棄するか、または一般的に利用可能または特殊なアルゴリズムを介した他の手段によって、動的に削減することができる。
データフレームを処理する従来の方法は、指定された最大のデータの制限を超えた大きなデータフレームを検出し、それに応じて、通信接続の最大ビットレートを追跡できるように、1つ以上の後続のデータフレームをドロップすることを含んでいた。これにより、一貫性がないフレームレートに至り、フレームのドロップが頻繁になりすぎるときにビデオが途切れる結果になる。
一方、本明細書で論じられる様々な実施態様は、大きなフレームを検出するように構成されるシステムを含み、1つまたは複数の後続のフレームをドロップする代わりに、システムは、後続の1つ以上のフレームが、超過データの送信によって生じる送信された負債を埋め合わせることができるように、ビットレートを調整するようにエンコーダに指示するように構成される。システムは、フレームで送信された過剰なビットレートを検出し、過剰なデータを「オーバードロービットレート」アカウントとして扱い得る。システムは、「オーバードロー」されたフレームに続く後続のフレームからのデータを減らすことによって、フレームで送信された余分なデータを埋め合わせることができる。システム内の監視エンジンは、ビットレートのオーバードローを引き起こしたフレームで送信された超過データの量を追跡し、超過データを埋め合わせるための後続のフレームの数を判定し、エンコーダに、判定された後続フレーム数のデータの量を動的に減らす指示を与えるように構成されている。データを動的に削減する必要のある後続のフレームの数は、フレームに含まれる過剰なデータの量、及び/またはオンラインゲームの需要、またはオンラインゲームのタイプなどに基づいて判定することができる。
「送信された負債」のカウンタは、フレームに含まれる超過データの量と、埋め合わせに使用される後続のフレームの数を追跡するために使用される。各フレームがクライアントデバイスに転送された後、送信負債カウンタが更新される。エンコーダで受信された各フレームに、監視エンジンを使用して送信負債カウンタを照会し、送信負債カウンタがゼロかノン-ゼロ(つまりゼロではない)かを判別する。送信負債カウンタがゼロではない場合、監視エンジンはエンコーダに、符号化するためにエンコーダで現在受信されているフレームのデータの量を調整し、調整された符号化されたフレームをクライアントデバイスに送信するように指示する。一方、送信負債カウンタがゼロの場合、監視エンジンは、オンラインゲームに対して定められた通常のビットレート(つまり、最大データ制限)を使用して、現在のフレームの符号化を再開するようにエンコーダに指示する。
オンラインゲームによって生成されるコンテンツはビデオコンテンツである。各フレームに含まれるデータの量はビットレートを定め、それはメガビット/秒(Mbps)で測定される。ビットレートは、ビデオコンテンツの解像度に部分的に依存する。リアルなゲーム体験を提供するために、ゲームロジックは、高解像度のビデオフレームを提供するように構成され得る。高解像度のビデオフレームは、より少ない量のデータを含む低解像度のビデオフレームとは対照的に、より多くの量のデータ(すなわち、より高いビットレート)を含む。通常、高圧縮のビデオデータは、低圧縮または非圧縮のビデオデータよりもデータが少なくなる(つまり、ビットレートが低くなる)。その結果、圧縮されたビデオデータのビデオの質が低くなる(つまり、ビデオ解像度が低くなる)。一般的に言って、良質のビデオコンテンツの場合、40Mbpsのビットレートが推奨され、このビットレートは非圧縮または非常に軽い圧縮のビデオ用である。ビットレートは、ビデオコンテンツの送信に使用される通信チャネルの帯域幅要件に従って定められる。
ビデオデータは通常、オンラインゲーム用に定められたフレームレートで送信される。フレームレートは、ビデオデータが受信デバイスで再生される速度を表し、これは、プレイされるオンラインゲームの種類によって異なる。1秒あたりのフレーム数が増えると、レンダリングされるビデオはよりスムーズに表示される。フレームレートを上げると、フレームでより多くのデータを提供する必要があるため、ビットレートが上がる。したがって、フレームレートは、オンラインゲームに期待される/定められる滑らかさのレベルに基づいて、オンラインゲームに対して定め得る。フレームレートはまたビットレートに影響を与えるため、フレームレートは、ビデオコンテンツをクライアントデバイスに送信する際に使用される通信チャネルで使用可能な帯域幅に従って定め得る。通常、フレームレートは、コンテンツを生成する業界全体で標準化されており、毎秒約30フレーム、60fps、または120fpsと定義される。
監視エンジンは、インタラクティブストリーミングアプリケーションのコンテンツのスムーズで一貫したフレームレートをクライアントデバイスに提供し、各フレームに含まれるデータのビットレートを動的に調整することでコマ落ちを回避する。プレイするように選択されたオンラインゲームに対し、オンラインゲーム用に生成された初期フレームに含まれるビデオコンテンツは、コンテンツがゲームのシーン全体を含む可能性があり、このビットレートがオンラインゲームについて許容される最大ビットレートよりも高くなる可能性があるため、ビットレートが高くなる可能性がある。監視エンジンは、大きな初期フレームによって引き起こされたビットレートの超過を検出し、システムが初期フレームのビットレートの超過によって引き起こされたデータの負債を埋め合わせることができるように、大きな初期フレームに続く1つ以上の後続のフレームでビットレートを下げるようにエンコーダに即座に指示する。監視エンジンは、オンラインゲーム用に生成された各フレームのビットレートを引き続き監視し、送信負債カウンタを照会して、エンコーダで受信された後続のフレームを調整する必要があるかどうかを判定し、エンコーダに信号を送信して、エンコーダに動的に符号化中に後続のフレームのビットレートを調整するか、いずれのビットレートも調整せずに後続のフレームを符号化するだけかを指示する。符号化された後続のフレームは、レンダリングのためにクライアントデバイスに転送される。後続のフレームのビットレートを下方調節すると、後続のフレームの解像の質に悪影響を与える場合がある。これは、従来のエンコーダを使用して観察される断続的なコマ落ちあるいはフレームドロップとは対照的に、フレームレートを維持して得られる対価はわずかなものである。特に、ドロップされるフレームの数に長期間または頻繁にむらがある場合に、フレームを断続的にコマ落ちさせることは、ビデオが非常にむらになるので、ユーザに提供されるビデオコンテンツの全体的な質に影響を与える可能性がある。
ユーザは、クラウドゲームシステムなどのクラウドシステムでユーザアカウントを設定して、そこで利用可能な様々なオンラインゲームにユーザがアクセスできるようにすることができる。クラウドゲームシステムの1つまたは複数のクラウドゲームサーバは、クラウド上でローカルにオンラインゲームのインスタンスを実行し、レンダリングのためにユーザのクライアントデバイスに送信するためのストリーミングコンテンツを生成することができる。ユーザがオンラインゲームをプレイしてゲームでの入力をすると、ゲームでの入力がクラウドゲームサーバ(複数可)に送信され、オンラインゲームの結果に影響を与える。ゲームでの入力に応答して、クラウドゲームサーバ(複数可)は、レンダリングのためにクライアントデバイスに送信するためのデータのフレームを生成する。生成されたデータのフレームは、クラウドシステム内で使用可能なエンコーダを使用して符号化され、符号化されたフレームデータを生成する。符号化されたデータのフレームはネットワークインターフェイスに転送され、フレームデータは、クラウドゲームサーバ(複数可)とインターネットなどのネットワークを介したクライアントデバイスとの間に確立された通信チャネルに対して定められた伝送プロトコルに従ってパケット化され、クライアントデバイスに送信される。
エンコーダは、符号化されたフレームデータをクラウドシステムで利用可能な監視エンジンに供給する。監視エンジンは、エンコーダ内に統合されているか、クラウドゲームサーバ内で利用可能であり、エンコーダと通信可能に接続されて、エンコーダとのインタラクションを可能にすることができる。監視エンジンは、符号化されたフレームに含まれるデータの量を調べる。監視エンジンは、符号化されたフレームに含まれるデータの量が、オンラインゲームの各フレームに定められた事前に定められた最大データ制限を超えているかどうかを確認する。符号化されたフレームが事前に定められた最大データ制限を超える場合、監視エンジンは、符号化されたフレームに含まれるデータの量が最大データ制限を超える程度を判断し、エンコーダに信号を送信して、最大データ制限を超えた大きなフレームの後に受信したデータの後続的な1つ以上のフレームのビットレートを動的に削減する。監視エンジンからの通信に応答して、エンコーダがクラウドゲームエンジンから後続のフレームを受信すると、エンコーダは後続のフレームの符号化中に新しい削減されたビットレートを導入する。削減されるビットレートは、オンラインゲーム用に事前に定められている場合がある。削減されるビットレートを伴う符号化された後続のフレームは、レンダリングのためにクライアントデバイスに転送される。監視エンジンは、エンコーダから受信したすべての符号化されたデータフレームを引き続き検証して、含まれるデータの量を決定し、通信チャネルのビットレート制限に従いながらフレームレートを維持するように、後続のフレーム(複数可)を動的に調整するようにエンコーダに指示する。
監視エンジンは、オンラインゲーム用に維持されている「送信された負債」カウンタを照会し得る。送信負債カウンタは、データの超過の実行中の集計と、データを動的に削減する必要がある後続のフレームの数を維持する。通常、オンラインゲームの初期フレームは、大量のデータを含み得る。これは、初期フレームにオンラインゲームの初期のゲームのシーンの画像が含まれ、後続のフレームが、初期のフレームに含まれる画像に対して更新するものを含み得るためである。ただし、時にはユーザの入力やゲームの種類やゲームの現在の状態によって、後続のフレームに大量のデータが含まれる場合がある。これは、ユーザが別のシーンに移動し、新しいシーンのデータがオンラインゲームによって提供されている場合に当てはまる。送信負債カウンタを照会し、エンコーダで受信された各フレームのビットレートを綿密に監視することにより、監視エンジンは、フレームのどれに過剰な量のデータが含まれているか、データを動的に削減する必要がある後続のフレームの数がいくつであるかを判別し、それに応じてエンコーダに指示することができる。エンコーダは、監視エンジンによって与えられる指示に従ってデータのフレーム(複数可)を調整する。データのフレーム(複数可)を調整した後、送信負債カウンタは監視エンジンによって更新される。更新された送信負債カウンタは、エンコーダに指示するために使用される。
送信負債カウンタがゼロではない場合、監視エンジンはエンコーダに信号を送信して、後続のフレームのデータを調整する。エンコーダは、信号に応答して、エンコーダで受信された後続のフレームに含まれるデータの量を評価する。後続のフレームに含まれるデータの量が、オンラインゲームに定められた削減された最大データ制限より少ない場合、エンコーダは、後続のフレームに含まれるいずれのデータも調整せずに、データを符号化するだけである。例えば、後続のフレームの削減された最大データ制限がフレームあたり約10,000ビットであると定められ、後続のフレームに含まれるのが約8,000ビットしかない場合、すでに削減された最大データ制限を下回っているので、後続のフレームのコンテンツをさらに調整する必要はない。この例では、エンコーダは後続のフレームに含まれるデータを単純に符号化し、それをクライアントデバイスに送信する。符号化された後続のフレームは、以前の大きなフレームから超過したデータの一部を埋め合わせるために使用される。後続のフレームの送信後、監視エンジンは送信負債カウンタを更新する。
後続のフレームに含まれるデータの量が、削減された最大データ制限を超えているが、事前に定められた最大データ制限を超えておらず、「送信された負債」カウンタがゼロではない場合、エンコーダは新しい削減されたビットレートを後続のフレームに動的に導入し(つまり、最大データ制限の削減)、符号化された後続のフレームをクライアントデバイスに転送する。新しい削減されたビットレートの導入には、圧縮技術を使用して後続のフレームのデータを圧縮することが含まれ得る。送信負債カウンタを利用した監視エンジンは、オンラインゲームのフレームレートを一貫してスムーズに管理し、オンラインゲームのコンテンツを待機時間や目立った障害なしに表示できるようにする。
本発明の実施形態の全般的な理解により、これより様々な図面を参照して様々な実施態様の例示的な詳細を説明する。
図1は、1つの実施態様に従って、オンラインゲームのゲームプレイに関連するデータのフレームの安定したストリームをクライアントデバイスに提供するために使用されるクラウドゲームシステム300の概要を提示する。複数のクライアントデバイス100(100-1、100-2、100-3、…100-n)は、クラウドゲームシステム(CGS)300、ソーシャルメディアアプリケーション、及びインターネットなどのネットワーク200を介した他のインタラクティブアプリケーションにアクセスするために様々なプレイヤ(つまり、オンラインゲームをプレイするユーザ)によって使用される。クライアントデバイス100は、異なる地理的位置からCGS300にアクセスしている可能性がある。クライアントデバイス100は、有線、無線、4G、5Gまたはその他の通信機能を使用し、ポータブルまたはポータブルではないネットワーク(例えば、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ワイヤレスLAN、MAN(メトロポリタンエリアネットワーク)、パーソナル/プライベートエリアネットワーク(PAN)、仮想プライベートネットワーク(VPN)などにアクセスすることを伴う、プロセッサ、メモリを備えた任意のタイプのクライアントコンピューティングデバイスにすることができる。例えば、クライアントデバイスは、スマートフォン、モバイルデバイス、タブレットコンピュータ、デスクトップコンピュータ、パーソナルコンピュータ、ウェアラブルデバイス、またはハイブリッド、またはポータブルフォームファクターを備えたモニタやタッチスクリーンを含むその他のデジタルデバイスであり得る。
5G通信機能を備えたクライアントデバイスには、5Gネットワークに接続できるモバイルデバイスまたはその他いずれかのコンピューティングデバイスが含まれる場合がある。一実施形態では、5Gネットワークは、サービスエリアが複数の「セル」(すなわち、小さな地理的エリア)に分割されるデジタルセルラーネットワークである。モバイルデバイスで生成されたアナログデータはデジタル化され、地理的に離れたセルで再利用できる周波数チャネルを使用して、セル内のローカルアンテナに電波として送信される。ローカルアンテナは、高帯域幅光ファイバまたは他の類似した無線接続によって、電話網及びインターネットに接続される。5Gネットワークは、通信に高周波の電波を使用するため、より高いデータレートでデータを送信でき、その結果、ネットワークの待機時間が短くなる(レイテンシーが低くなる)。
クライアントデバイスは、オペレーティングシステムを実行し、ネットワーク200を介してCGS300のクラウドゲームサーバで利用可能な様々なゲームアプリケーションまたはインタラクティブアプリケーション(アプリ)へのアクセスをもたらすネットワークインターフェイスを含み得るか、計算機能を備えるクラウドゲームサーバ302と通信するネットワークインターフェイスを備えたシンクライアントであってもよい。プレイヤは、ユーザアカウントを使用してCGS300にアクセスし、ゲームプレイのためCGS300で利用可能なオンラインゲームを選択でき、ゲームプレイは、クライアントデバイスで提供される制御/入力オプションを使用し、またはクライアントデバイスに通信で接続されたコントローラを使用し、プレイヤによって制御される。プレイヤのユーザアカウントは、ユーザアカウントデータストア308に格納されたユーザデータに対して検証され、プレイヤがゲームタイトルデータストア310に格納されたオンラインゲームのゲームタイトルにアクセスしてプレイする資格があることを確認してから、オンラインゲームへのアクセスをもたらし得る。
いくつかの実施態様では、様々なアプリケーション(例えば、オンラインゲーム)は、クラウドゲームシステム300の1つまたは複数のクラウドゲームサーバ302上でリモート実行され得、実行アプリケーションからのゲームプレイ関連データは、フレームとして生成され、ネットワーク200を介したクライアントデバイス100に対しストリーミングされる。他の実施態様では、オンラインゲームは、クライアントデバイスでローカルに実行され得、実行するオンラインゲームからのメタデータは、ネットワーク200を介して、ゲームの状態に影響を与えるためにクラウドゲームサーバ(複数可)302のバックエンドサーバに送信され得る。ゲームプレイデータのフレームは符号化のためにエンコーダに転送され、符号化されたフレームはレンダリングのためにクライアントデバイスに転送される。
プレイヤ及びユーザは両方とも、ユーザアカウントを有し、クラウドゲームシステム300で利用可能なアプリケーション(オンラインゲームを含む)にアクセスしてインタラクションを行う資格がある人々/個々人を指すことに留意されたい。プレイヤまたはユーザは、以前にオンラインゲームをプレイしたことがあるか、現在プレイするためにオンラインゲームを選択した人である。「ユーザ」はまた、ゲームプレイのためにオンラインゲームを選択する前に、プレイヤ(例えば、観客)のゲームプレイを見るためにオンラインゲームを選択した人であり得る。
クラウドゲームシステム(CGS)300は、異なる地理的位置に分散され、バックエンドサーバで利用可能な1つまたは複数のオンラインゲームアプリケーション及び/または他のインタラクティブアプリケーションのインスタンスを実行するように構成されるバックエンドサーバのネットワークを含み得る。バックエンドサーバ302は、1つまたは複数のオンラインゲーム/インタラクティブアプリケーションのインスタンスを実行するように構成されたクラウドゲームサーバまたはクラウドアプリケーションサーバであり得る。簡単にするために、オンラインゲームアプリケーションのインスタンスを実行するクラウドゲームサーバ(または単に「ゲームサーバ」)を参照するが、ここに開示されている実施態様は、インタラクティブデータのフレームをユーザに提供するために使用され得る、他のいずれかのインタラクティブアプリケーションに、拡張され得る。ゲームサーバは、スタンドアロンサーバ、サーバファームまたはデータセンタの一部であるサーバなどを含むがこれらに限定されない、クラウドゲームシステムで利用可能な任意のタイプのサーバコンピューティングデバイスである可能性がある。さらに、ゲームサーバは、ホスト上でオンラインゲームのインスタンスを実行するゲームプロセッサをサポートする1つまたは複数の仮想マシンを管理することができる。
クラウドゲームサーバ302によって実行されるオンラインゲームは、シングルプレイヤゲームまたはマルチプレイヤゲームであり得る。いくつかの実施態様では、オンラインゲームは、異なる地理的位置にわたる複数のプレイヤ及び観客がオンラインゲームにアクセスし、プレイ/視聴することを可能にする大規模マルチプレイヤオンライン(MMO)ゲームであり得る。クラウドゲームサーバ302は、オンラインゲームのゲームロジックに通信可能に接続されたマルチプレイヤ分散ゲームエンジンを含み得る。一般的に言えば、ゲームエンジンは、MMOゲームなどのゲームの基盤になり、オンラインゲームを開発するために使用されるフレームワークを提供するソフトウェア層である。ゲームエンジンが、あらゆるオンラインゲームに必要になる共通の関連タスク(つまり、ゲームエンジンタスク)の実行の詳細を抽出する一方、オンラインゲーム開発者は、オンラインゲームがどのようにプレイされるのかの詳細を提示するゲームロジックを提示する。ゲームエンジンフレームワークは、オンラインゲームに命を吹き込むオンラインゲームのいくつかの機能する部分(例えば、コアの特徴)を処理するための再利用可能な複数のコンポーネントを含む。ゲームエンジンによって処理される基本的なコアの特徴は、(例えば、衝突検出、衝突反応、軌跡、重力などに基づいたオブジェクトの移動、摩擦)物理特性、グラフィックス、音声、人工知能、スクリプト記述、アニメーション、ネットワーキング、ストリーミング、最適化、メモリ管理、スレッド化、ローカリゼーションサポートなど多くのものを含み得る。再利用可能なコンポーネントは、オンラインゲームのために識別されたコア特徴を処理するために使用されるプロセスエンジンを含む。
オンラインゲームのゲームプレイ時、ゲームエンジンは、異なるクライアントデバイスから受信したプレイヤの入力を収集してゲームロジックに送信し、オンラインゲームのゲームロジックを管理し、ゲームロジックにより生成されるゲームデータを処理するためのゲームエンジンの機能する部分の割り付け及び同期を最適な方法で管理し、レンダリングのためにクライアントデバイスに送り返されるゲームデータのフレームを生成する。様々なゲームエンジンが、異なるコアの機能を提供すべく現在利用でき、適切なゲームエンジンが、オンラインゲームを実行するために指摘される機能に基づいて選択され得る。
ゲームロジックは、ゲームプレイセッション中にそれぞれのクライアントデバイスでプレイヤによってなされた入力を分析し、入力に基づいてオンラインゲームのゲーム状態を更新し、オンラインゲームをプレイする各プレイヤの保存データを管理し、ゲームプレイセッション中にユーザのクライアントデバイスにストリーミングされる前に、分散ゲームエンジンによって処理されるゲームデータを生成する。オンラインゲームのゲームの状態は、オンラインゲームのゲーム状態メトリクス及びプレイヤのユーザメトリクスを識別するために使用され、これらは、ゲームプレイメトリクス314内に別々に格納され得る。例えば、各プレイヤのゲームプレイの複雑さに関連するユーザメトリクスは、ユーザメトリクスデータストア314aに格納され得、オンラインゲームのゲーム状態メトリクスは、ゲーム状態メトリクスデータストア314bに格納され得る。ゲームの状態は、特定の時点でのオンラインゲームの全体的な状態を識別し、1人以上のプレイヤのゲームプレイの複雑さの影響を受ける。各プレイヤのユーザのメトリクスには、オンラインゲーム用にプレイヤが行ういずれかのゲームのカスタマイズが含まれる。分散型ゲームエンジンは、ゲームロジックによって提供されるゲームの状態を使用して、ゲームプレイセッションに参加しているプレイヤのゲーム環境にオブジェクトやキャラクターをオーバーレイ/挿入することができる。いくつかの実施態様では、ゲームの各インスタンスのゲームロジックは、ゲームロジックがどのように構成されているかに基づいて、サーバ上または複数のサーバ上で実行され得る。
オンラインゲームの各プレイヤによってゲームプレイ中に与えられるゲームでの入力、オンラインゲームのゲームの状態、オンラインゲームの各プレイヤの位置、及び各プレイヤによって実行されるアクティビティの詳細は、ゲーム状態メトリクス314b内、または別個にゲームエンジン304によりテレメトリデータストア(図示せず)に、テレメトリデータとしてゲームエンジンによって保存することができる。テレメトリデータに含まれる詳細は、プレイヤが試み、達成した各アクティビティの特性、及びオンラインゲームの各アクティビティを試み、達成したプレイヤのプレイヤの属性を識別する。オンラインゲームを特定の時点から再開する必要がある場合、各プレイヤに関連付けられたテレメトリデータを使用して、オンラインゲームの一部を再作成することができる。さらに、テレメトリデータを使用して、クライアントデバイスに転送するためのデータフレームを生成することができる。
ゲームエンジンによって生成されたデータのフレームは、レンダリングのためにクライアントデバイスに送信される前に、符号化のためにエンコーダ305に転送される。エンコーダ305は、ハードウェアエンコーダまたはソフトウェアエンコーダであり得、定められた符号化アルゴリズムに従ってフレーム内に含まれるデータを符号化するように構成される。データの符号化されたフレームはまた、監視エンジン306に転送される。監視エンジンは、各符号化されたフレームの中に含まれるデータの量を評価し、クラウドゲームサーバ302とクライアントデバイス100との間に確立された通信接続に基づいて、オンラインゲームに指定された事前に定められた最大データ制限に対してデータの量を検証する。最大データ制限は、ネットワークサービスプロバイダによって設定される可能性のある通信接続の帯域幅機能によって決まる。
監視エンジン306が、所定の最大データ制限を超える特定のフレームで送信されたデータの量を検出すると、監視エンジン306は、後続のフレームに含まれるデータの量を減らすためにエンコーダ304に信号を送信する。監視エンジン306は、当座貸越勘定として機能し、埋め合わせをする必要がある特定のフレームで送信された超過データの量、及び過剰な「負債」を埋め合わせる必要のある後続のフレームの数の集計を保持する「送信された負債」カウンタを維持することができる。いくつかの実施態様では、過剰なデータは、1つまたは複数の後続のフレームから埋め合わせされ得る。特定のフレームで送信された過剰なデータの埋め合わせをするための後続のフレームの数は、特定のフレームのデータの量が、通信接続、送信されるデータの種類、データが生成されるオンラインゲームの種類、オンラインゲームの要求、通信接続の帯域幅機能、またはそれらの2つ以上の組み合わせに対して設定された最大データ制限(つまりビットレート)を超えた程度に基づいて、監視エンジンによって決定され得る。例えば、オンラインゲームが特に激しいゲームである場合、複数のユーザが視聴しているオンラインゲームとは対照的に、埋め合わせをより迅速に行う必要がある。通信チャネルのビットレートを維持するために、特に激しいゲームでは埋め合わせをより速く行う必要がある場合がある。
監視エンジンは、送信負債カウンタを照会して、後続のフレームに含まれるデータを動的に調整する必要があるかどうかを判断し、そのイフェクトの適切な信号をエンコーダに送信する。監視エンジン306によって生成された信号は、後続のフレームを動的に調整する必要があるかどうかを示すインジケータ、及びそうであれば、後続のフレームを調整するために指定された削減された最大データ制限を含み得る。埋め合わせの速度と同様に、削減された最大データ制限は、ゲームのタイプまたはゲームの要求に基づいて設定できる。監視エンジンによって与えられた信号に応答して、エンコーダは、最初に、後続のフレームに含まれるデータの量を評価する。後続のフレームに含まれるデータの量が削減された最大データ制限を超える場合、エンコーダは、後続のフレームに含まれるデータを動的に調整して、削減された最大データ制限以下にする。一方、後続のフレームに含まれるデータの量が削減された最大データ制限を超えない場合、エンコーダは単に後続のフレームのデータを符号化し、符号化されたデータをネットワーク経由でクライアントデバイスに送信する。この場合、データの量は後続のフレームに設定された削減される最大制限をすでに下回っているため、後続のフレームに含まれるデータは調整されない。例えば、後続のフレームの削減された最大データ制限が10,000バイトに設定されていて、後続フレームに含まれるデータが9,000バイトの場合、エンコーダは後続フレームのデータを調整しない。代わりに、データを符号化し、符号化されたデータをネットワークインターフェイスに転送して、ネットワーク経由でクライアントデバイスにオンワードで送信するためにパケット化する。後続のフレームのエンコーディングには、システムによって発生した送信された負債を埋め合わせるために、最大データ制限を超えた大きなフレームからのデータの一部が含まれる場合がある。
後続のフレームを符号化して送信した後、エンコーダは監視エンジン306とインタラクションして、クライアントデバイスに送信された後続のフレームの担当をするために、送信負債カウンタを更新する。上記の例に示したように、後続のフレームでデータの量を調整する必要がない場合でも、送信負債カウンタは更新される。オンラインゲーム用にデータのフレームが生成される限り、監視エンジンによる送信負債カウンタのクエリとエンコーダへの信号の送信が続行される。
現実施態様では、システムは、後続のフレームのデータを減らすことにより、特定のフレームで送信された余分なデータの埋め合わせをすることができる。オンラインゲームによって生成される各フレームは、フレームに含まれるデータの最大データ制限に準拠する必要がある。ただし、オンラインゲームによって生成された各フレームに含まれるデータは、常に最大データ制限に準拠しているとは限らない。様々な実施態様で説明されている監視エンジンは、大きなフレームに続くフレームから余分なデータを動的に埋め合わせすることでこれを処理し、フレーム全体が指定された最大ビットレートに従うようにする。検出されたビッグフレームのデータが最大ビットレートを超える程度に応じて、ビットレートを調整するフレーム数は1または10以上になり得る。1つまたは複数の後続フレームのデータを削減する(つまり、後続フレーム(複数可)に含まれるビットレートを削減する)ことで、システムは、大きなフレームによって引き起こされるビットレートの超過の負担から回復できる。データの過負荷は、待機時間またはフレームのドロップにつながる可能性がある。後続のフレームのデータを動的に調整することで、すべてのフレームがクライアントデバイスに配信され、最大データレートを満たすオンラインゲーム用に定められた一貫したフレームレートが維持されるのを確実にする。後続のフレームのデータが削減すると、クライアントデバイスに配信される後続のフレームの質が低下する可能性があるが、システムは送信された負債を迅速に埋め合わせ、送信された負債が埋め合わされた後、オンラインゲームに対して定められた最大データレートでフレームの送信を再開できるため、このような質の低下は一時的なものである。
図2Aは、一実施態様で、オンラインストリーミングゲームのフレームレートを維持するための監視システムを使用する例示的なゲームクラウドシステムを示している。ゲームエンジン304は、ユーザがゲームプレイのためにオンラインゲームを選択することに応答して、クラウドゲームサーバ302などのサーバでオンラインゲームのインスタンスを実行する。ユーザのクライアントデバイス100でなされるユーザの入力は、オンラインゲームのゲームの状態に影響を与えるためにゲームエンジンに伝達される。オンラインゲームは、ゲームの現在のゲーム状態を表すデータのフレーム135を生成する。データのフレーム135は、クラウドゲームサーバ302で利用可能なエンコーダ305に転送される。エンコーダ305は、オンラインゲームのインスタンスを実行しているクラウドゲームサーバ302で、またはクラウドゲームシステム300内の別のサーバで利用可能であり得るか、またはエンコーダロジックを含む別個のコンピューティングデバイスであり得る。図2Aに示される実施態様では、エンコーダ305は、ネットワーク200に直接接続することができるハードウェアエンコーダであることが示されている。実施態様はハードウェアエンコーダの使用に限定されず、ソフトウェアエンコーダの使用にも簡単に拡張できる。
エンコーダ305は、提唱されているフレームサイズを超えないように指定され、提唱されているフレームサイズは、サーバ302とクライアントデバイス100との間に確立された通信チャネルの帯域幅に従うことができる。エンコーダは、常に提唱されているフレームサイズに従うとは限らず、提唱されているフレームサイズを超えるデータが含まれる場合がある。データの過負荷で通信チャネルを圧倒しないために、クラウドゲームシステムは、監視エンジン306を作動させて、各符号化フレームに含まれるデータの量を追跡し、フレームのサイズを超えるフレームに続く後続のフレームのビットレートを制御する。
エンコーダ305は、符号化アルゴリズムに従ってデータを符号化し、符号化されたフレームを、クラウドゲームシステムのサーバの1つ(例えば、クラウドゲームサーバ302または別のサーバ)内に定められたネットワークインターフェイスに転送する。ネットワークインターフェイスは、通信チャネル用に定められた送信プロトコルに従って、符号化されたデータフレームをパケット化し、データのパケットを、ネットワークを介してクライアントデバイス100に転送してレンダリングする。エンコーダ305はまた、クライアントデバイス100に転送されたデータの符号化されたフレームを監視エンジン306に与える。監視エンジン306は、符号化されたフレームのデータの量を評価する。符号化されたフレームがフレームの最大データ制限を超えるデータを含む場合、監視エンジン306は、過剰なデータを検出し、1つまたは複数の後続のフレームに含まれるデータの量を減らすようにエンコーダに指示する。監視エンジンは、送信負債カウンタを維持し、送信負債カウンタを動的に更新して、クライアントデバイス100に送信された符号化されたフレームの超過データを示す。
エンコーダがゲームエンジン(すなわち、フレームソース)から後続のフレームを受信すると、エンコーダは、監視エンジン306が後続のフレームのデータを調整するための信号を送信したかどうかを確認する。エンコーダが監視エンジン306からの信号を検出すると、エンコーダは、事前に定められた削減された最大データ制限を識別し、次に、後続のフレームに含まれるデータの量を検証して、それが事前に定められた削減された最大データ制限内にあるかどうかを判断する。監視エンジン306からの信号は、後続のフレームに含まれるデータの量を削減するための命令、及び後続のフレーム内のデータを削減するためにエンコーダによって使用され得る削減された最大データ制限を含み得る。信号に基づいて、エンコーダは、後続のフレームに、削減された最大データ制限内のデータが含まれているかどうかを確認する。後続のフレーム内のデータの量が、削減された最大データ制限内にある場合、エンコーダ305は、データをいっさい調整せずに、後続のフレームを符号化する。一方、後続のフレームのデータが削減された最大データ制限を超える場合、エンコーダは後続のフレームのデータを動的に調整してから、フレームを符号化する。符号化された後続のフレームは、パケット化のためにネットワークインターフェイスに転送される。この場合、後続のフレームからのデータは、パケット化してクライアントデバイスに送信するために、エンコーダによってネットワークインターフェイスに送信された以前の大きなフレームからのデータの一部と結合され得、以前の大きなフレームの余分なデータを埋め合わせる。次に、エンコーダは、符号化された後続のフレームからのデータ及び以前の大きなフレームからの余剰のデータを含むデータのパケットを、レンダリングのためにクライアントデバイス100に転送する。名前が示すように、削減された最大データ制限は、フレームに指定された通常の最大データ制限よりも小さい。例えば、フレームの最大データ制限を20,000バイトに設定し、一方で削減された最大データ制限を10,000バイトに設定することができる。例えば、削減された最大データ制限は、ゲームのタイプまたはゲームの要求に基づいて設定できる。
図2Bは、オンラインストリーミングゲームのフレームレートを維持するために監視システムに関与するゲームクラウドシステムの代替的な実施態様を示している。この実施態様で識別されるゲームクラウドシステムのコンポーネントは、フレームソースとエンコーダの間にあるフレームデータプロセッサ309を除いて、図2Aを参照して図示及び説明されたものと同様である。その結果、図2A及び2Bで共通のコンポーネントは、同じ参照符号を使用して参照され、同様の機能を実行するように構成されている。この実施態様では、ゲームエンジンは、生成されたフレームをエンコーダに直接転送する代わりに、今やフレームをフレームデータプロセッサ309に転送して処理するようになっている。処理の一部として、フレームデータプロセッサ309は、各フレームに含まれるデータを分析して、フレーム内に含まれるデータの複雑さを判定するように構成される。フレームデータプロセッサ309によって提供される情報は、クライアントデバイスで、ユーザのために、フレームに含まれる画像をレンダリングするために重要であるデータを識別するために使用される。重要な領域は、オンラインゲームへのユーザの入力の結果としてゲームのシーンまたはゲームオブジェクト/アバターに変化が発生している領域、またはオンラインゲームへのユーザの入力に応答してアクション/イベントが発生している領域である可能性がある。一部の実施態様では、変更を含む重要な領域は、データが生成されているユーザに固有であると識別される場合がある。例えば、Iフレームは、クライアントデバイスでレンダリングされるときにゲームのシーン全体を構築するためのデータを含むようにゲームエンジンによって生成され得、ゲームエンジンは、後続のフレームをPフレームとして生成し得る。Pフレームは、Iフレームに含まれるゲームのシーンへの変更を含み、変更は、オブジェクトの移動、またはアクションの実行、またはユーザに固有であり、オンラインゲームへのユーザの入力の処理から識別されるイベントの発生を含み得る。ただし、Pフレームに含まれるすべての変更がユーザにとって重要であるとは限らない。例えば、イベントの発生が変更として記録され、ゲームエンジンによって生成されたPフレームに含まれている場合がある。ただし、イベントはユーザが制御するアバターの背後で発生している可能性がある。その結果、ユーザはイベントが発生しているポイントまたは場所をすでに通過しているため、このイベントがユーザにとって重要ではない可能性がある。フレームデータプロセッサ309は、オンラインゲームによって生成された各フレームに含まれるデータを文脈的に分析して、どのデータがユーザにレンダリングするために重要であるかを判定することができる。第1のユーザにとって重要なデータは、第2のユーザにとって重要である場合とそうでない場合があることに注意されたい。その結果、第1のユーザと第2のユーザが同じシーンの中でインタラクションを行っている場合でも、第1のユーザ用にレンダリングされたコンテンツは第2のユーザ用にレンダリングされたコンテンツと同じではない場合がある。
フレームデータプロセッサ309は、分析の結果をフレームデータと共にエンコーダ305に転送する。エンコーダ305は、フレームデータプロセッサ309によって提供される情報を使用して、フレーム内に含まれるデータの量を動的に減らすようにエンコーダに指示されたときに、各フレームで保持するデータと破棄するデータを決定する。エンコーダ305は、符号化中に、ユーザにとって重要であると識別されたデータを保持し、保持されたデータを符号化することによって、フレーム内のデータの量を動的に削減する。削減する必要のあるデータの量は、監視エンジン306によって指定された削減された最大データ制限に従う。結果の符号化されたフレームは、クライアントデバイスに転送される。データの量が動的に減少するフレームは、大きなフレームに続くフレーム(つまり、後続のフレーム)であることに注意されたい。
別の実施態様では、エンコーダは、動的に縮小されるフレームを符号化するときに、重要でないセクションに含まれるデータの量を減らし、重要なセクションのデータをそのままにしておくことができる。さらに別の代替の実施態様では、エンコーダは、損失のあるまたは損失のない技術のいずれかを使用してフレームに含まれるデータを圧縮し得、その結果、後続のフレームは、オンラインゲームに指定された削減された最大データ制限に従う。
図3Aは、1つの実施態様で、オンラインゲームのフレームの安定したストリームを維持するために使用される監視エンジンの様々なコンポーネントを示している。監視エンジン306は、ゲームロジックを実行するゲームエンジンの一部であり得るか、またはゲームエンジンによって生成されたデータのフレームを受信する別個のエンジンであり得る。監視エンジン306は、ビットレートモニタ311、ビットレートアジャスタ312、及び各フレームのビットレートを追跡及び調整するための送信データデットトラッカ(またはここでは単に「デットトラッカ(debt tracker、あるいは負債トラッカ」と呼ばれる)313を含む。前述のコンポーネントは例として提示されており、網羅的または限定的なものと見なされるべきではない。より少ないまたは追加のコンポーネントが使用される場合がある。
ゲームエンジンなどのフレームソースは、オンラインゲームのゲームプレイ中にデータのフレームを生成する。これらのデータフレームは、レンダリングのためにクライアントデバイスに送信される。クライアントデバイスのコントロールまたはインタラクティブユーザインターフェイスを介して、またはクライアントデバイスに通信可能に結合された外部コントローラからクライアントデバイスでなされるユーザの入力は、サーバデバイスにおいてオンラインゲームのインスタンスを実行するゲームエンジンに送信される。ユーザの入力は、オンラインゲームのゲームの状態に影響を与えるために使用される。更新されたゲームの状態は、レンダリングのために後続のフレームでクライアントデバイスに提供される。オンラインゲームのストリーミングの場合、フレームは継続的に生成される。オンラインゲームのゲームの状態によって、各フレームに含まれるデータの量が異なる場合がある。オンラインゲーム用に生成される初期フレームは、オンラインゲームのシーンに関連するデータを含む可能性があるため、大きくなる可能性がある。オンラインゲーム用に生成される後続のフレームは、最初のシーンで検出された変更のみを含む場合があるため、より小さくなる場合がある。ゲームプレイ中、ゲームエンジンは時々大きなデータフレームを生成することがある。これは、ゲームエンジンが、あるシーンから別のシーンへ、またはあるレベルから次のレベルへ移動するユーザを検出する場合に当てはまる。生成されたデータのフレームは、符号化されたフレームをクライアントデバイスに送信する前に、符号化のためにエンコーダ305に転送される。
エンコーダ305は、データのフレームを受信し、オンラインゲームのために定められた符号化の詳細に従ってコンテンツを符号化するように構成される。例えば、エンコーダは、特定のフレームレート/周波数(例えば、30フレーム/秒(fps)、60fps、120fpsなど)及びデータの送信に使用される通信チャネルの最大ビットレートに従う必要がある場合がある。符号化されたフレームは、エンコーダ305によってビットレートモニタ311に転送される。
ビットレートモニタ311は、オンラインゲームに指定された事前に定められた最大データ制限311aを使用して、符号化されたフレーム内に含まれるデータの量を評価するように構成される。各オンラインゲームは、ストリーミングデータをクライアントデバイスに転送するために使用される通信チャネルに基づいて、それ自体の事前に定められた最大データ制限311aを有し得るか、または共通の事前に定められた最大データ制限311aに従い得る。符号化フレームのデータの量がオンラインゲームに指定された最大データ制限311aを超えると、ビットレートモニタ311は、符号化フレームのデータが最大データ制限311aを超える程度を計算する。次に、ビットレートモニタ311は、後続のフレーム(複数可)のデータを調整するために使用される削減された最大データ制限311bを判定し、フレーム数計算エンジン311cを使用して、コンテンツが符号化されたフレームによって引き起こされたデータの超過を埋め合わせるために動的に調整される必要がある後続のフレームの数を計算する。フレーム数計算エンジン311cは、ケースバイケースで、データ超過を埋め合わせるために負債キューを分散させる後続のフレームの数を計算することができる。例えば、ライブストリーミングゲームの場合、負債キュー(つまり、超過の埋め合わせ)が広がる可能性のあるフレーム数は、負債キューの広がりによって引き起こされる待機時間が、ユーザの全体的な視聴体験に悪影響を与えない場合があるので、約15~約50フレームなどのように、大きくしてもよい。一方、インタラクティブストリーミングゲームの場合、軽度/最小の待機時間を維持するために、負債キューをより早く取り除くことができるよう、負債キューの拡散をより積極的にする必要があり得る。その結果、インタラクティブストリーミングゲームの場合、負債キューは、約1~10フレーム、約1~5フレーム、または約1~3フレームなど、少数のフレームに分散される可能性がある。したがって、フレーム数計算エンジン311cは、生成されるデータのタイプ、ゲームの要求、符号化されたフレームによって引き起こされるビットレートの超過の程度などに基づいて、負債キューの広がりの程度を計算する。
ビットレートの超過及び負債キューを拡散するための後続のフレームの数は、負債トラッカ313によって維持される1つまたは複数のカウンタを更新するための命令と共に、送信されたデータ負債トラッカ313にビットレートモニタによって伝達される。負債トラッカ313は、ビットレートモニタ311からの指示に応答して、ビットレート超過でビットレート負債カウンタ313aを更新し、後続のフレームの数でフレーム負債カウンタ313bを更新することができる。
ビットレートモニタはさらに、ビットレートアジャスタ312に信号を送信して後続のフレームのビットレートを調整するようにエンコーダに指示し、後続のフレームに続く削減された最大データ制限311bを指定する。削減された最大データ制限は事前に定められている場合があり、通信チャネルの帯域幅及びオンラインゲームのタイプ、要求に基づく場合がある。ビットレートモニタ311からの指示に応答して、ビットレートアジャスタ312は、信号発生器312aを使用して、エンコーダ305への信号を生成し、クライアントデバイス100に送信される符号化されたフレームにより引き起こされるデータの超過を埋め合わせるべく、後続のフレームでデータの量を下方に調整する。エンコーダは、信号に含まれる指示に従って、後続のフレームのデータの量を調整する。後続のフレームが調整され、符号化され、インターネットを介して送信されると、ビットレート負債カウンタ313a及びフレーム負債カウンタ313bは、後続のフレームから埋め合わされた負債の額を説明するために更新される。符号化されたフレームの評価、送信されたデータ負債トラッカの照会、ビットレートモニタによるビットレートアジャスタの指示、及び後続のフレームを調整するためのビットレートアジャスタ132による信号の送信は、符号化されたフレームが、エンコーダによって生成され、フレームソース(オンラインゲームなど)から後続のフレームを受信する前に生成され、送信された負債が完全に埋め合わされるまで続行される。ビットレートモニタ311及びビットレートアジャスタ312を使用してエンコーダに指示するために実行される一連の動作の例を、図4を参照して詳細に説明する。
図3Bは、一実施態様において、フレームに含まれるコンテンツの複雑さを識別するために使用されるフレームデータプロセッサ309の異なるコンポーネントを示している。フレームデータプロセッサ309は、フレームソース(例えば、ゲームアプリケーション)で生成されたデータのフレームを受信し、さらなる分析及び符号化のためにフレームをエンコーダに転送する前に、フレームに含まれるデータを分析するように構成される。フレームデータプロセッサ309は、フレームデータアナライザ309aと連動して、フレームに含まれるデータを分析して、データの複雑さを理解する。フレームデータアナライザ309aは、データのコンテキスト分析を実行して、データが各ユーザにどのように関連しているかを判定することができる。コンテキスト分析を使用して、同じゲームをプレイまたは表示し得、オンラインゲーム(マルチプレイヤオンラインゲームなど)の同じシーンの中にいる様々なユーザに提示するのに重要な様々なデータを識別することができる。例えば、オンラインゲームでのユーザ/ユーザのアバターの背後にあるオブジェクトの動きは重要ではないかもしれないが、視覚的にユーザの近傍にあるオブジェクトまたはアクティビティの動きは重要であり得る。あるいは、ユーザがインタラクションしているオブジェクトまたはユーザが実行しているアクティビティは、同じシーンの中で別のユーザがインタラクションしているオブジェクトまたは別のユーザが実行しているアクティビティよりも、ユーザにとって重要であり得る。
フレームデータアジャスタ309bは、フレームデータアナライザ309aからコンテキスト分析の結果を受け取り、分析の結果を使用して、重要であるフレームの部分に関連するデータと、ユーザにとって重要ではないフレームの部分に関連するデータを識別する。フレームデータプロセッサ309は、コンテキスト分析から得られた情報と共にデータのフレームをエンコーダ305に転送する。エンコーダ305は、ビットレートアジャスタ312からの信号に応答して、エンコーダ305がフレーム内のデータを動的に調整する必要があるときに、フレームデータプロセッサ309によって提供される情報を使用する。エンコーダ305は、調整されたデータフレームを符号化し、符号化されたフレームをレンダリングのためにクライアントデバイスに転送する。動的に調整されるフレームは、データの超過を引き起こした大きなフレームに続くことに留意されたい。
データの超過は、大きなフレームに続く多数の後続フレームで埋め合わせされ得る。いくつかの実施態様では、大きなフレームに続く後続のフレームの数の中の特定の後続のフレーム自体が、最大データ制限を超えるデータを含む可能性があるというシナリオがあり得る。このシナリオでは、ビットレート負債カウンタ313a及びフレーム負債カウンタ313bは、特定の後続のフレームに含まれる超過データの担当をするために更新される。さらに、フレーム数計算エンジン311cは、特定の後続のフレームが制限を超えた結果として発生した追加の送信されたデータ負債を埋め合わせるために動的に調整される必要がある追加のフレーム数を識別し得、これは適切な負債カウンタに追加される。ただし、ほとんどの場合、大きなフレームのデータの後には、より小さな一連のデータフレームが続き、より大きな次のフレームを受信する前に余分なデータの埋め合わせを簡単にすることができるので、このようなシナリオはほとんど発生しない。
後続のフレームのビットレートを動的に調整することで、フレームレートを維持し、フレームのレンダリング中の待機時間を最小限に抑えながら、余分なデータの埋め合わせをすることができる。これにより、システムは、ドロップされたフレームやビデオ品質の妥協を含まないビデオコンテンツをユーザに提供できる。
図4は、一実施態様において、フレームレートを維持するためにビットレートを調整するようにエンコーダ305に指示するように監視エンジン306のビットレートモニタ311及びビットレートアジャスタ312のコンポーネントを合わせることによって実行される一連のプロセスフローの動作を示す。初期フレームは、オンラインゲームを実行するゲームエンジンなどのフレームソースによって生成される。特定の実施態様はオンラインゲームを参照して説明されているが、実施態様はストリーミングコンテンツを生成する他のいずれかのアプリケーションに拡張できる。オンラインゲームが初めてプレイされる場合、初期のフレームは、ユーザがゲームプレイのために選択したオンラインゲームの最初のシーンに関連し得る。オンラインゲームが以前に一時停止された時点からオンラインゲームが再開される場合、初期のフレームは、オンラインゲームの一時停止された時点からのシーンに関連している可能性がある。初期フレームには、ユーザがカスタマイズしたアバター、ユーザ属性などのユーザ関連コンテンツも含まれる場合がある。バブル1に示すように、初期フレームは、クライアントデバイスに送信する前に、符号化のためにエンコーダに転送される。
初期フレームがエンコーダに到着すると、エンコーダは、初期フレームに含まれるデータの量を動的に調整するためのビットレートモニタ311からの何らかの指示があるかどうかをチェックし、そのようなチェックは、初期フレームを符号化する前にエンコーダによって行われる。これはオンラインゲームで受信された初期のフレームであるため(新しくプレイされるか、一時停止したポイントから再開される)、ビットレート負債カウンタ313aとフレーム負債カウンタ313bは両方ともゼロである。したがって、初期フレームに含まれるデータの量を調整するためのビットレートモニタからの指示はない。結果として、初期フレームは、エンコーダ305で定められた符号化アルゴリズムに従って符号化され、符号化されたフレームを生成する。符号化されたフレームは、ビットレートモニタ306に転送されて、バブル2によって示されるように、ビットレートモニタ306が符号化されたフレームのサイズを決定できるようにする。
それが初期フレームである場合でも、ビットレートモニタ311は、符号化されたフレームの受信に応答して、送信された負債データトラッカ313に照会して、バブル4に示すように、埋め合わせをする必要のあるいずれかのデータの超過があるかどうかを判断する。データトラッカ313は、ビットレート負債カウンタ313a及びフレーム負債カウンタ313bを照会して、いずれかの残りのデータの超過があるかどうかを判定する。これらのカウンタ313a、313bの一方または両方がゼロではない場合、それは、まだ回復する必要があるいくつかのデータの超過があることを意味する。これらのカウンタが両方ともゼロの場合は、データの超過がシステムによって完全に埋め合わされたことを示している。エンコーダに到達する初期のフレームの場合、オンラインゲームでビットレートの超過がまだ記録されていないため、ビットレートの負債カウンタ313aとフレームの負債カウンタ313bは両方ともゼロである。この場合、ビットレートモニタ311によってビットレートアジャスタ312に送信される以前のビットレートの超過信号はない。
次に、ビットレートモニタ311は、オンラインゲームのために事前に定められた最大データ制限に対して、符号化された初期フレームに含まれるデータの量を評価することによって、符号化されたフレームのサイズを判定する。ビットレートモニタ311が、符号化された初期フレームのサイズが通信チャネルに定められた最大データ制限よりも大きいと判断すると、ビットレートモニタ311は、ビットレートの超過を計算し、ビットレート負債カウンタ313aをビットレートの超過(すなわち、最大データ制限を超えるデータのバイト量)で更新する。さらに、ビットレートの超過、生成されるデータのタイプ、オンラインゲームの要求、及び通信チャネルの最大ビットレート制限に基づいて、ビットレートモニタ311は、初期フレームのデータの超過を埋め合わせるためのフレーム数を判定する。例えば、ストリーミングインタラクティブビデオゲームの場合、ビットレートモニタ311は、データの超過を埋め合わせるために積極的なフレーム数を使用することができ、一方、複数の観客によって見られているストリーミングゲームの場合、ビットレートモニタ311は、データの超過を埋め合わせるためのより寛大なフレーム数を使用できる。バブル4に示すように、データの超過を埋め合わせるフレームの数は、フレーム負債カウンタ313bに更新される。
データの超過の判定に基づいて、信号がビットレートモニタ311からネットワークインターフェイスに送信され、バブル3に示されるように、クライアントに送信されている符号化データのパケットを調整する。パケット調整信号またはパケット調整信号がないことは、インターネットを介してクライアントデバイスにデータを送信するための送信プロトコルに従って符号化されたデータをパケット化するときに、ネットワークインターフェイスによって使用される。パケット化されたデータは、デコードとレンダリングのためにクライアントデバイスに転送される。ビットレートモニタからの信号が符号化された初期フレームに過剰なデータを示した場合、ネットワークインターフェイスは、パケット化の間に、パケットに含まれる符号化されたデータを調整して、パケットで通信されるデータが通信チャネルのデータ帯域幅内に収まるようにする。残りの余分な符号化されたデータはキャッシュメモリに保持され、1つ以上の後続フレームのデータパケットに含まれる。
ビットレート負債カウンタ313a及びフレーム負債カウンタ313bを更新し、データパケットを調整するようにネットワークインターフェイスに信号を送ることに加えて、ビットレートモニタ311は、バブル5に示すように、1つまたは複数の後続フレームから埋め合わせする必要のある送信された負債超過があることを示す信号をエンコーダ305に送信するようにビットレートアジャスタ312に指示する。ビットレートアジャスタ312は、信号をエンコーダに送信して、バブル6で示されているように、エンコーダで受信した後続フレームに含まれるデータの削減された最大データ制限を動的に導入する。削減された最大データ制限は事前に定めることができ、生成されるデータのタイプとゲームの要求に基づき得る。
第2のフレーム(すなわち、初期のフレームに続くフレーム)がエンコーダ305で受信されると、エンコーダ305は、ビットレートアジャスタ312からのいずれかの信号が受信されたかどうかを確認する。ビットレートアジャスタ312からの信号に応答して、エンコーダ305は、第2のフレームに含まれるデータを動的に調整することによって、事前に定められた削減された最大データ制限を動的に導入する。エンコーダは、圧縮ロジックを使用してデータを圧縮することにより、第2のフレームに含まれるデータの量を減らすことができる。一部の実施態様では、調整が必要なデータの量に基づいて、様々なタイプの圧縮ロジックが実装される場合がある。あるいは、画像の構築に重要であると識別された選択的データを第2のフレームに保持でき、残りの重要でないデータを破棄することができる。第2のフレームのデータを削減する様々な方法が使用される場合があり、圧縮または選択的な包含/破棄に限定されない。次に、エンコーダは調整されたデータを符号化し、符号化された第2のデータのフレームをネットワークインターフェイスに転送する。
ネットワークインターフェイスは、ビットレートモニタからの信号と共に、第2のフレームの調整及び符号化されたデータを受信して、初期のフレームからの超過データの一部を含める。ネットワークインターフェイスは、ビットレートモニタからの信号に従って、大きなフレームから残ったデータの一部と第2のフレームのデータを含み、それによって送信された負債の一部の埋め合わせをし、符号化及び調整された第2のフレームパケットを、レンダリングのためクライアントデバイスへ転送する。第2のフレームには、削減された最大データ制限以下のデータが含まれているため、フレーム内には、大きなフレームから残ったデータを含めるのに十分なスペースがある。
データの第2のフレームがネットワークインターフェイスに転送された後、ビットレートモニタ311は、ビットレート負債カウンタ及びフレーム負債カウンタを更新する。第2のフレームに含まれるデータの量は、削減された最大データ制限内にあるため、第2のフレームに含まれるデータによって引き起こされるデータの超過はない。代わりに、送信された負債の一部が埋め合わせされた。ビットレートモニタ311は、ビットレート負債カウンタ313a及びフレーム負債カウンタ313bを調整することによって、第2のフレームで埋め合わされた送信された負債の量をキャプチャする。負債カウンタ(313a、313b)を調整した後、ビットレートモニタ311は、更新された信号をビットレートアジャスタ312に転送し、それぞれの負債カウンタに現在の値を提示する。負債カウンタがゼロではない場合、ビットレートアジャスタは別の信号をエンコーダに転送して、エンコーダで受信した第3のフレームのデータを調整し、送信された負債を埋め合わせる。フレームソースからデータのフレームを受信し、各フレームに含まれるデータの量を評価し、適切な信号をエンコーダに送信して各フレームに含まれるデータの量を動的に調整し、調整されたコンテンツをクライアントデバイスに転送するプロセスは、コンテンツのフレームが生成される限り、オンラインゲームの間継続する。
図5は、一実施態様に従って、エンコーダと監視エンジンを使用して実行されるフレームデータ処理を表す簡単なサンプルテーブルを示している。この例では、時間T1で、フレーム(例えば、フレーム10)がエンコーダで受信される。フレーム10は、オンラインゲームがプレイのために選択されたときに生成される初期フレーム(Iフレーム)であり得るか、または現在のセッションのプレイ中に、または以前に一時停止されたプレイセッションからプレイを再開することから生成されるフレームであり得る。時間T1は、プレイの開始/再開を表す時間であり得るか、またはオンラインゲームのプレイ中のある時間であり得る。フレーム10には、40,000バイトのデータが含まれていることが示されている。オンラインゲームのコンテンツフレーム属性は、データのフレームレートが60フレーム/秒(fps)になるように定められ得る。各フレームの最大ビットレートは、オンラインゲームを実行するサーバとオンラインゲームとのインタラクションに使用されるクライアントデバイスとの間に確立された通信チャネルの帯域幅の可用性に従って定めることができる。例えば、最大ビットレートは10メガビット/秒(Mbps)と定め得る。指定されたビットレートは、各フレームに含めることができるデータの量を定める。上記の例では、各フレームの最大データ制限は10,000,000 /60/8=20,833バイト/フレームになるように定められている。
フレーム10はエンコーダを使用して符号化され、符号化されたデータのフレームは評価のためにビットレートモニタに転送される。ビットレートモニタは、フレーム10に含まれるデータの量を評価し、フレーム10にオンラインゲームのフレーム属性で定められているデータよりも約20,000バイト余分なデータが含まれていると判断する。ビットレートモニタは、送信負債カウンタ(ビットレート負債カウンタとフレーム負債カウンタ)にも照会して、これらの送信負債カウンタのいずれかがゼロではないか否かを確認する。ビットレートモニタは、送信負債カウンタからの情報を使用して、1つ以上の後続のフレームを使用して埋め合わせをする必要のある超過して送信された負債があるかどうかを判断する。フレーム10が現在のプレイセッション用に生成された初期のフレームである場合、送信負債カウンタはゼロになる。一方、フレーム10がオンラインゲームの現在のプレイセッションからのものであり、以前のフレーム9に余分なデータがなく、調整する必要がなかった場合、送信負債カウンタはゼロになる。送信負債カウンタクエリからの決定に基づいて(すなわち、「このフレームを調整するか」は「いいえ」である)、ビットレートモニタは、通信チャネルの帯域幅制限に従って、符号化されたフレーム10のデータをパケット化するためにネットワークインターフェイスに信号を送信する。さらに、ビットレートモニタが符号化されたフレーム10に含まれる超過データを検出すると、ビットレートモニタはまた、ビットレート負債カウンタも20,000(許可されている最大データを超えるデータ)増加させ、フレーム負債カウンタは2増加させる。調整するフレーム数は、符号化されたフレームに含まれる過剰なデータの量と、コンテンツに定められた最大バイト制限の削減によって決まる。フレーム10のデータの一部(つまり、約20,000バイト相当のデータ)はパケット化されてクライアントに送信されるが、残りのデータの部分(つまり、約20,000バイトの余分なデータ)は、後続のフレームに含めるためにキャッシュに保持される。余分な符号化されたデータの一部をローカルキャッシュに保持する以外に、フレーム10のデータに調整は行われない(つまり、フレーム10に含まれるデータの動的な削減はない)。次に、ビットレートモニタは、ビットレートアジャスタに信号を送信してエンコーダに信号を送信し、送信された負債を埋め合わせるために少なくとも次の後続フレームを調整し、この信号は、フレーム10がネットワークインターフェイスに転送されるとすぐに送信される。
時間T2で、エンコーダはフレーム11を受信する。フレーム11を受信すると、エンコーダは、フレーム11のデータを調整するため、信号がビットレートアジャスタから受信されたと判断する(つまり、「このフレームを調整するか」は「はい」である)。エンコーダは、後続のフレームに含めることができる削減された最大バイト(つまり、10,000バイト)を判別し、フレーム11を評価して、フレーム11を調整する必要があるかどうかを判別する。エンコーダに後続のフレームを調整する信号がある場合でも、後続のフレームを調整する必要がない場合があり得る。これは、後続のフレーム(つまり、この例ではフレーム11)に含まれるデータの量が、削減された最大データ制限を下回っている場合に発生する可能性がある。評価に基づいて、エンコーダは、フレーム11に含まれるのは9,000バイトのみであり、これは、削減された最大データ制限である10,000バイトを下回っていると判断する(つまり、フレーム11でビットレートの超過はない)。その結果、エンコーダはフレーム11のデータをまさに符号化し、符号化されたフレーム11のデータをネットワークインターフェイスに転送し、キャッシュに格納されているフレーム10のデータの一部を含めるように指示する。この例では、フレーム11は、予算を超えているフレーム10を処理するために約11,000バイトを使用できるようにしているため、フレームデータ全体が最大データ制限の20,000バイトを超えない。
フレーム10の11,000バイトが後続のフレーム11で送信されると、符号化されたフレーム11のデータを指示と共にネットワークインターフェイスに転送した後、ビットレートモニタはビットレート負債カウンタを11,000バイト、フレーム負債カウンタを1デクリメントする。フレーム11に含まれる調整及び符号化されたデータはパケット化され、レンダリングのためにクライアントデバイスに転送される。ビットレートモニタは、ビットレートアジャスタに、負債カウンタの更新された情報を使用して別の信号をエンコーダに送信するように指示する。
T3で、フレーム12はエンコーダで受信され、これは約10,000バイトであり、削減された最大データ制限であり、最大データ制限を大幅に下回っている。ビットレートアジャスタからの信号に基づいて、エンコーダはフレーム12を評価して、フレーム12のデータを調整する必要があるかどうかを判断する。ただし、フレーム12の評価に基づいて、エンコーダはフレーム12にビットレートの超過がないと判断する。その結果、エンコーダは、フレーム12のデータを符号化する前に調整する必要がないと判断する。一方、フレーム12に削減された最大データ制限を超えるデータが含まれている場合(例えば、フレーム12に12,000または15,000バイトが含まれている場合)、エンコーダはフレーム12のデータを圧縮または重要ではないデータの削除/破棄によって調整し、フレーム12のデータが削減された最大データ制限を下回るようにする。次に、エンコーダはフレーム12のデータを符号化し、フレーム10のいずれかの残りのデータを含めるように指示してネットワークインターフェイスに転送する。結果として、フレーム12は、予算を超えているフレーム10を処理するために約10,000バイトを使用できるようにしているため、フレームデータ全体が最大データ制限の20,000バイトを超えない。したがって、フレーム12がパケット化されると、ネットワークインターフェイスは、フレーム10の残りの9,000バイトをフレーム12からのデータで処理し、符号化されたフレーム12のデータのパケットをフレーム10のデータと共にクライアントに転送してレンダリングする。符号化されたフレーム12のデータをネットワークインターフェイスに転送すると、ビットレートモニタはビットレート負債カウンタを9,000減らし、フレーム負債カウンタを1減らし、両方の負債カウンタがゼロになる。その結果、ビットレートモニタは、ビットレートアジャスタに対して、信号をエンコーダに送信して、最大データ制限で後続のフレームの符号化を再開するように指示する。
フレーム13がエンコーダで受信されると、エンコーダはビットレートアジャスタからの信号に基づいてフレーム13のデータの量を評価し、後続のフレームの最大データ制限を再開し、データが最大データ制限を下回っていると判断する。ビットレートアジャスタからエンコーダへの信号は、両方の負債カウンタがゼロの値を示しているため、フレーム13のデータを調整する必要がないことを示している。この判定に基づいて、エンコーダはフレーム13データを符号化し、符号化されたフレーム13のデータをネットワークインターフェイスに転送し、フレーム13データをまさにパケット化してクライアントデバイスに送信するように指示する。クライアントデバイスはフレーム13のデータを受信し、レンダリングする。エンコーダでデータのフレームを受信し、負債カウンタを評価及び更新し、ビットレートアジャスタに適切な信号をエンコーダに送信し、ネットワークインターフェイスに適切な信号を送信するよう指示するこのプロセスは、オンラインゲーム用にフレームが生成される限り継続される。
図6は、一実施態様に従って、オンラインゲームのために定められたフレームレートを維持するために、オンラインゲームのための1つまたは複数の後続のフレームのビットレートを動的に調整するために使用される方法の動作を示す。この方法は、データのフレームがエンコーダで受信されたときの動作610で開始する。データのフレームは、クライアントデバイスからサーバで実行されているオンラインゲームになされたユーザの入力に応答して、オンラインゲームエンジンによって生成され得、オンラインゲームのゲーム状態を含み得る。オンラインゲームは、各フレームに最大データ制限を指定する場合があるが、ゲームエンジンは、データのフレームを生成するときに、オンラインゲームに指定された最大データ制限に常に準拠しているとは限らない。
データのフレームは、動作620に示されるように、クライアントデバイスに送信する前にエンコーダによって符号化される。フレームに含まれるデータが最大データ制限を超えた場合でも、エンコーダはフレーム内のデータを符号化し、符号化されたフレームをネットワークインターフェイスに転送して、クライアントデバイスにオンワードで転送する。符号化されたデータフレームは、監視エンジン内のビットレートモニタにも転送される。ビットレートモニタは、動作630に示されるように、符号化されたフレームに含まれるデータの量を評価する。ビットレートモニタが最大データ制限を超えるデータを検出すると、ビットレートモニタは、動作640に示すように、監視エンジン内のビットレートアジャスタに信号を送信して、エンコーダに、1つまたは複数の後続フレームに含まれるデータの量を動的に調整するように指示する。ビットレートモニタは、フレームによって引き起こされたデータの超過の量を計算し、1つ以上のカウンタ(例えば、ビットレート負債カウンタ、フレーム負債カウンタ)を更新する場合がある。1つまたは複数のカウンタを更新すると、ビットレートモニタは、負債カウンタに含まれる更新された情報を使用して、ビットレートアジャスタに指示する。ビットレートアジャスタへの指示には、1つまたは複数の後続フレームのデータの量を動的に調整する必要がある場合に使用する、事前に定められた削減された最大データ制限も含まれる場合がある。削減された最大データ制限は、サーバデバイスとクライアントデバイスの間に確立された通信チャネルの帯域幅に基づいて定められ得る。あるいは、エンコーダは、オンラインゲームの事前に定められた削減された最大データ制限を識別することができる。エンコーダは、ビットレートアジャスタからの指示を使用して、後続のフレームに含まれるデータの量を動的に調整し、大きなフレームからのデータの超過を後続のフレームから埋め合わせる。
後続のフレームへの調整は、圧縮ロジックを使用して、またはフレームからの重要でないデータの識別と削除を通じて、またはフレームに含まれる画像の質に影響を与えることなくデータを削減するために使用できる他の手段を通じて、行うことができる。ここで説明する様々な実施態様により、オンラインゲームのコンテンツのフレームのスムーズなレンダリングが保証される。データの超過を埋め合わせるために動的に調整された可能性のあるフレームの一部は、データの減少により解像度が低くなる可能性があるが、通常の解像度を再開させる前の低品質フレームが続く期間は非常に短い。さらに、オンラインゲーム用に定められたフレームレートが維持されるため、オンラインゲームのビデオのレンダリングがいずれの問題もなく発生する。他の利点は、様々な実装を検討する際に当業者によって想定され得る。
本願で説明されている様々な実施態様は、クラウドシステムに実装できる。本開示の一実施態様に従って、インタラクティブアプリケーションデータを更新するためのユーザの入力の収集をサポートし、更新されたアプリケーションデータを使用してクライアントデバイスに送信するためのコンテンツのフレームを生成する例示的なクラウドシステムの概要を説明する。本明細書で説明する例示的なクラウドシステムは、そこに格納されたビデオゲームにアクセスしてプレイすることを可能にするゲームクラウドシステム(GCS)である。GCSは、対応するゲームプレイを介して1つ以上のオンラインゲームアプリケーションをプレイする複数のプレイヤをサポートするためにネットワークを介して動作するクラウドコンピュートシステムであってよい。これらのゲームプレイに関連するデータは、エンコーダによって符号化され、ネットワークを介してデータストリームとしてクライアントデバイスに送信されるフレームで与えられる。具体的には、システムは、1つ以上のソーシャルメディアプロバイダ、及びクライアントデバイスとインタラクションを行うGCSを含み、これらはすべて、ネットワーク(例えば、インターネット)を介して接続されている。複数のユーザと関連する複数のクライアントデバイスは、GCS及びソーシャルメディアプロバイダによって提供されるサービスにアクセスするためにネットワークに接続され得る。ユーザは、プレイヤ、または特定のプレイヤのもしくはオンラインゲームのゲームプレイを辿る観客であってよい。
一実施形態では、GSCは、ゲームサーバ、ビデオレコーダ、タグプロセッサ、及びアカウントマネージャを含み、アカウントマネージャは、ユーザプロファイルマネージャ、ゲーム選択エンジン(つまり、ゲームセレクタ)、ゲームセッションマネージャ、ユーザアクセスロジック、ネットワークインターフェイス、及びソーシャル接続マネージャを含む。GCSは、一般にデータストアに格納され得る、ゲーム状態ストア、ユーザアカウント、ユーザデータストアなどの複数のストレージシステムをさらに含み得る。他のゲームストレージシステムは、ゲームコードストア、記録ゲームストア、タグデータストア、ビデオゲームタイトルストア、及びゲームネットワークユーザストアを含み得る。一実施形態では、GCSは、オンラインゲームアプリケーション、サービス、ゲーミング関連デジタルコンテンツ、ならびにシステム、アプリケーション、ユーザ、及びソーシャルネットワークの中のインタラクティビティ(対話性)を提供できるシステムである。GCSは、ネットワークインターフェイスを介してソーシャル接続マネージャを介してユーザデバイス及びソーシャルメディアプロバイダと通信し得る。ソーシャル接続マネージャは、ソーシャルメディアプロバイダを使用して識別された1人または複数の友人に関連及び/または接続するように構成することができる。一実施形態では、各ソーシャルメディアプロバイダは、ユーザソーシャルネットワーク接続を示す少なくとも1つのソーシャルグラフを含む。
プレイヤ(つまり、ユーザ)は、ゲームセッションマネージャを介してGCSによって提供されたサービスにアクセスできる。例えば、アカウントマネージャは、GCS上で、プレイヤの認証及びゲームタイトルへのアクセスを可能にする。アカウントマネージャは、ユーザ(プレイヤ、観客)についての情報を格納し、各ユーザのユーザプロファイルを管理する。ユーザの情報が、認証の目的でアカウントマネージャによって使用され得る。さらに、ユーザに所有されているゲームタイトルが、アカウントマネージャによって管理されてもよい。例えば、ゲームタイトルストアに格納されるビデオゲームは、それらのビデオゲームを所有する、またはそれらのビデオゲームへのアクセスを与えられるユーザが利用できる。
一実施形態では、ユーザは、ネットワークを介して確立された通信接続によって、クライアントデバイスを経由してGCS及びソーシャルメディアプロバイダによって提供されるサービスにアクセスできる。クライアントデバイスは、有線または無線、携帯可能または携帯可能ではないプロセッサ及びメモリを有する任意のタイプのデバイスを含むことができる。一実施形態では、クライアントデバイスは、スマートフォン、タブレットコンピュータ、または移植可能なフォームファクタでタッチスクリーン機能を提供するハイブリッドの形をとることができる。1つの例示的なクライアントデバイスは、オペレーティングシステムを実行し、ネットワークを介して取得され得、ローカルポータブルデバイス(例えば、スマートフォン、タブレット、ラップトップ、デスクトップなど)で実行される様々なアプリケーション(アプリ)を具備する携帯電話装置を含む場合がある。
クライアントデバイスは、ユーザが入力コマンド及びデータのディスプレイのフレーム及び/またはGCS及びソーシャルメディアプロバイダから受け取った情報を送信するためのインターフェイスとして機能するディスプレイを含み得る。ディスプレイは、タッチスクリーン、または通常はフラットパネルディスプレイ、ブラウン管(CRT)によって提供されるディスプレイ、または表示をレンダリングできる他のデバイスとして構成することができる。代わりに、クライアントデバイス100は、デスクトップコンピュータまたはラップトップコンピュータと同様に、そのディスプレイをデバイスとは別に有することができる。
一実施形態では、クライアントデバイスは、ユーザ(プレイヤ)がビデオゲームをプレイできるようにするためにGCSと通信するように構成される。例えば、プレイヤは、ゲーム選択エンジンを介してゲームタイトルデータストアで利用できるビデオゲームを(例えば、ゲームタイトル別になど)選択し得る。選択したビデオゲームは有効化され、ビデオゲームのインスタンスは、GCSでゲームサーバによる実行のためにロードされる。一実施形態では、ゲームプレイは主にGCSで実行され、ゲームプレイから生成されたデータのフレームは、エンコーダを使用して符号化され、GCSからの符号化されたゲームビデオフレームのストリームとしてクライアントデバイスに送信される。ゲームプレイを駆動するためのユーザ入力コマンドは、GCSに返送される。ストリーミングゲームプレイから受信した符号化されたビデオフレームは、クライアントデバイスでデコードされ、クライアントデバイスのディスプレイにレンダリングされる。
一実施形態では、プレイヤが、プレイするために利用可能なゲームタイトルを選んだ後、選ばれたゲームタイトルのゲームセッションは、ゲームセッションマネージャを介してプレイヤによって開始され得る。ゲームセッションマネージャは、最初に、データストア内のゲーム状態ストアにアクセスして、(選択されたゲームを対象にして)プレイヤが最後にプレイしたセッションの保存されたゲーム状態を検索し、もしあれば、プレイヤが前回のゲームプレイ停止ポイントからゲームプレイを再開できるようにする。再開点または開始ポイントが特定されると、ゲームセッションマネージャは、ゲームサーバのゲーム実行エンジンに、選択されたゲームタイトルのゲームコードをゲームコードストアから実行するように通知し得る。ゲームセッションが開始された後、ゲームセッションマネージャは、ゲームビデオフレーム(すなわち、ストリーミングビデオデータ)を符号化のためにエンコーダに渡すことができ、符号化されたビデオフレームは、ネットワークインターフェイスを介してクライアントデバイスに送信される。
ゲームプレイ中、ゲームセッションマネージャは、ゲームサーバ、ビデオレコーダの記録エンジン、及びタグプロセッサと通信して、ゲームプレイまたはゲームプレイセッションの記録(例えば、ビデオ)を生成し、または保存してもよい。一実施形態では、ゲームプレイのビデオ録画には、ゲームプレイ中に入力され、または提供されたいずれかのタグコンテンツ、及びその他のゲーム関連メタデータを含めることができる。タグコンテンツは、スナップショット経由で保存することもできる。ゲームプレイのビデオ録画は、そのゲームプレイに対応する任意のゲームメトリクスと共に、記録ゲームストアに保存してもよい。任意のタグコンテンツをタグデータストアに保存することができる。
クライアントデバイスでユーザが与えるユーザ入力コマンドは、ゲームセッションマネージャを介してゲームサーバに伝達される。ユーザ入力コマンドは、ビデオゲームの対応するゲームプレイの結果に影響を与えるために使用される。入力コマンド(例えば、コントローラ入力またはユーザ入力)は、ゲームプレイ、及びタグコンテンツ(例えば、テキスト、画像、録画クリップなど)などのユーザインタラクティブ入力を駆動するために使用される入力コマンドを含む。ゲームでの入力コマンドと同様に任意のユーザプレイメトリクス(ユーザがゲームをプレイした時間など)も、ゲームネットワークのユーザストアに保存され得る。ビデオゲームのゲームプレイに関連する選択情報は、ユーザが利用し得る複数の特徴を有効化にするために使用され得る。
図7は、本発明の各種の実施形態に従った、ゲームシステム700のブロック図である。ゲームシステム700は、ネットワーク715を介して1つ以上のクライアント710にビデオストリームを提供するように構成される。ネットワークは、図1、2A、及び2Bに示すネットワーク200と同様である。ゲームシステム700は通常、ビデオサーバシステム720と、任意のゲームサーバ725とを含む。ビデオサーバシステム720は、1つ以上のクライアント710に対し、最低限のサービス品質のビデオストリームを提供するように構成される。例えば、ビデオサーバシステム720は、ビデオゲーム内の状態または視点を変更するゲームコマンドを受信し、クライアント710に、この変更を直ちに反映する更新されたビデオストリームを、最小の遅延時間で提供してもよい。ビデオサーバシステム820は、未だ定められていないフォーマットを含む、多種多様な代替ビデオフォーマットでビデオストリームを提供するように構成されてもよい。さらに、ビデオストリームは、多種多様なフレームレートでユーザに提示されるように構成されたビデオフレームを含み得る。典型的なフレームレートは、毎秒30フレーム、毎秒60フレーム、及び毎秒120フレームである。ただし、本発明の代替的な実施形態には、より高いか、またはより低いフレームレートが含まれる。
本明細書で710A、710Bなどと個々に呼ばれるクライアント710は、ヘッドマウントディスプレイ、端末、パーソナルコンピュータ、ゲームコンソール、タブレットコンピュータ、電話機、セットトップボックス、キオスク、無線デバイス、デジタルパッド、スタンドアロンデバイス、ハンドヘルドゲームプレイデバイス、及び/または同様のものを含んでもよい。通常、クライアント710は、符号化されたビデオストリームを受信し、ビデオストリームを復号化し、結果得られるビデオをユーザ、例えばゲームのプレイヤに提示するように構成される。符号化されたビデオストリームを受信し、及び/またはビデオストリームを復号化するプロセスは通常、クライアントの受信バッファに個々のビデオフレームを格納することを含む。ビデオストリームは、クライアント710に統合されたディスプレイ、またはモニタもしくはテレビなどの別個のデバイス上で、ユーザに提示され得る。クライアント710は任意で、複数のゲームプレイヤに対応するように構成される。例えば、ゲームコンソールは、同時に2人、3人、4人以上のプレイヤに対応するように構成され得る。これらのプレイヤのそれぞれは別個のビデオストリームを受信し得る、または単一のビデオストリームが、各プレイヤのために特別に生成された、例えば各プレイヤの視点に基づいて生成されたフレームの領域を含み得る。クライアント710は、任意で地理的に分散される。ゲームシステム700に含まれるクライアントの数は、1つまたは2つから、数千、数万以上まで、大幅に異なり得る。本明細書で使用するとき、「ゲームプレイヤ」という用語は、ゲームをプレイする人を指すのに使用され、「ゲームプレイデバイス」という用語は、ゲームをプレイするのに用いられるデバイスを指すのに使用される。いくつかの実施形態では、ゲームプレイデバイスは、協働してユーザにゲーム体験を届ける複数のコンピューティングデバイスを指し得る。例えば、ゲームコンソール及びHMDは、ビデオサーバシステム720と協働して、HDMを通して見るゲームを配信し得る。一実施形態では、ゲームコンソールは、ビデオサーバシステム720からビデオストリームを受信し、ゲームコンソールは、レンダリングのためにHMDに対し、ビデオストリームまたはビデオストリームの更新を転送する。
クライアント710は、ネットワーク715を介してビデオストリームを受信するように構成される。ネットワーク715は、電話ネットワーク、インターネット、無線ネットワーク、電力線ネットワーク、ローカルエリアネットワーク、広域ネットワーク、及び/またはプライベートネットワークなどを含む任意の種類の通信ネットワークであり得る。典型的な実施形態では、ビデオストリームは、TCP/IPまたはUDP/IPなどの標準プロトコルを介して通信される。あるいは、ビデオストリームは、プロプライエタリな規格を介して通信される。
クライアント710の典型的な例として、プロセッサと、不揮発性メモリと、ディスプレイと、復号化ロジックと、ネットワーク通信機能と、入力デバイスとを備えるパーソナルコンピュータが挙げられる。復号化ロジックには、ハードウェア、ファームウェア、及び/またはコンピュータ可読媒体に格納されたソフトウェアが含まれ得る。ビデオストリームを復号化(及び符号化)するためのシステムは当技術分野において周知であり、使用される特定の符号化方式に応じて変わる。
クライアント710は、必須ではないが、受信したビデオを修正するように構成されたシステムをさらに含み得る。例えば、クライアントは、1つのビデオ画像をもう1つのビデオ画像上にオーバーレイする、及び/またはビデオ画像を切り取るなど、さらなるレンダリングを実行するように構成され得る。例えば、クライアント710は、Iフレーム、Pフレーム、及びBフレームなどの様々な種類のビデオフレームを受信し、これらのフレームを処理してユーザに表示するための画像にするように構成され得る。いくつかの実施形態では、クライアント710のうちの一員は、ビデオストリームに対し、さらなるレンダリング、シェーディング、または3D変換などの動作を実行するように構成される。クライアント710のうちの一員は任意で、複数のオーディオストリームまたはビデオストリームを受信するように構成される。クライアント710の入力デバイスには、例えば、片手用ゲームコントローラ、両手用ゲームコントローラ、ジェスチャ認識システム、視線認識システム、音声認識システム、キーボード、ジョイスティック、ポインティングデバイス、力フィードバックデバイス、動作及び/または位置感知デバイス、マウス、タッチスクリーン、ニューラルインターフェイス、カメラ、及び/または開発中の入力デバイスなどが、含まれ得る。
クライアント710が受信するビデオストリーム(及び任意でオーディオストリーム)は、ビデオサーバシステム720により生成され、提供される。本明細書の別の箇所でさらに説明されるように、このビデオストリームは、ビデオフレームを含む(及びオーディオストリームはオーディオフレームを含む)。ビデオフレームは、ユーザに表示される画像に有意義に寄与するように構成される(例えばビデオフレームは好適なデータ構造の画素情報を含む)。本明細書で使用される用語「ビデオフレーム」は、ユーザに示される画像に寄与する、例えば作用するように構成された情報を主に含むフレームを指すために使用される。「ビデオフレーム」に関する本明細書の教示のほとんどは、「オーディオフレーム」にも適用することができる。
クライアント710は通常、ユーザからの入力を受信するように構成される。これらの入力は、ビデオゲームの状態を変更する、あるいはゲームプレイに作用するように構成されたゲームコマンドを含み得る。ゲームコマンドは、入力デバイスを使用して受信することができ、及び/またはクライアント710で実行されるコンピューティング命令により自動的に生成され得る。受信されたゲームコマンドは、ネットワーク715を介してクライアント710から、ビデオサーバシステム720及び/またはゲームサーバ725へ通信される。例えば、いくつかの実施形態では、ゲームコマンドは、ビデオサーバシステム720を介してゲームサーバ725へ通信される。いくつかの実施形態では、ゲームコマンドの別個の複製が、クライアント710から、ゲームサーバ725及びビデオサーバシステム720へ通信される。ゲームコマンドの通信は、任意でコマンドの識別に依存する。ゲームコマンドは、任意で、クライアント710Aにオーディオストリームまたはビデオストリームを提供するために使用される経路または通信チャネルとは異なる経路または通信チャネルを介して、クライアント710Aから通信される。
ゲームサーバ725は任意で、ビデオサーバシステム720とは異なるエンティティにより運用される。例えば、ゲームサーバ725は、マルチプレイヤゲームの発行者により運用され得る。この例では、ビデオサーバシステム720は、任意でゲームサーバ725によりクライアントとして見られ、任意でゲームサーバ725の視点から、従来技術のゲームエンジンを実行する従来技術のクライアントに見えるように構成される。ビデオサーバシステム720とゲームサーバ725との通信は、任意でネットワーク715を介して行われる。よって、ゲームサーバ725は、ビデオサーバシステム720を含む複数のクライアントにゲーム状態情報を送信する従来技術のマルチプレイヤゲームサーバであり得る。ビデオサーバシステム720は、ゲームサーバ725の複数のインスタンスと同時に通信するように構成され得る。例えば、ビデオサーバシステム720は、異なるユーザに複数の異なるビデオゲームを提供するように構成され得る。これらの異なるビデオゲームのそれぞれは、異なるゲームサーバ725により対応され得る、及び/または異なるエンティティにより発行され得る。いくつかの実施形態では、ビデオサーバシステム720のいくつかの地理的に分散したインスタンスは、複数の異なるユーザにゲームビデオを提供するように構成される。ビデオサーバシステム720のこれらのインスタンスのそれぞれは、ゲームサーバ725の同じインスタンスと通信し得る。ビデオサーバシステム720と1つ以上のゲームサーバ725との通信は、任意で専用通信チャネルを介して行われる。例えば、ビデオサーバシステム720は、ゲームサーバ725に、これらの2つのシステム間の通信専用の高帯域幅チャネルを介して接続され得る。
ビデオサーバシステム720は少なくとも、ビデオソース730と、I/Oデバイス745と、プロセッサ750と、非一時的ストレージ755とを備える。ビデオサーバシステム720は、1つのコンピューティングデバイスを含み得る、または複数のコンピューティングデバイスに分散され得る。これらのコンピューティングデバイスは任意で、ローカルエリアネットワークなどの通信システムを介して接続される。
ビデオソース730は、例えばストリーミングビデオ、または動画を形成する一連のビデオフレームといった、ビデオストリームを提供するように構成される。いくつかの実施形態では、ビデオソース730は、ビデオゲームエンジン及びレンダリングロジックを含む。ビデオゲームエンジンは、プレイヤからゲームコマンドを受信し、受信したコマンドに基づいてビデオゲームの状態の複製を保持するように構成される。このゲームの状態は、ゲーム環境内のオブジェクトの位置、並びに通常では視点を含む。ゲームの状態はまた、オブジェクトの特性、画像、色、及び/または質感も含み得る。
ゲームの状態は通常、ゲーム規則、並びに移動、方向転換、攻撃、焦点の設定、インタラクション、及び/または使用などのゲームコマンドに基づいて、維持される。ゲームエンジンの一部は任意で、ゲームサーバ725内に配置される。ゲームサーバ725は、地理的に分散したクライアントを使用する複数のプレイヤから受信したゲームコマンドに基づいて、ゲームの状態の複製を保持し得る。これらの事例では、ゲームの状態はゲームサーバ725によりビデオソース730に提供され、ゲームの状態の複製が格納され、レンダリングが行われる。ゲームサーバ725は、ネットワーク715を介して直接クライアント710からゲームコマンドを受信してもよく、及び/またはビデオサーバシステム720を介してゲームコマンドを受信してもよい。
ビデオソース730は通常、レンダリングロジック、例えばハードウェア、ファームウェア、及び/またはストレージ755などのコンピュータ可読媒体に格納されたソフトウェアを含む。このレンダリングロジックは、ゲームの状態に基づいて、ビデオストリームのビデオフレームを作成するように構成される。レンダリングロジックのすべてまたは一部は、任意で、グラフィック処理ユニット(GPU)内に配置される。レンダリングロジックは通常、ゲームの状態及び視点に基づいて、オブジェクト間の3次元空間関係を特定するように、及び/または好適な質感などを適用するように構成された処理段階を含む。レンダリングロジックは未処理のビデオを生成し、次いでこのビデオは、クライアント710への通信に先立ち、通常、符号化される。例えば、未処理ビデオは、Adobe Flash(登録商標)規格.wav、H.264、H.263、On2、VP6、VC-1、WMA、Huffyuv、Lagarith、MPG-x、Xvid、FFmpeg、x264、VP6―8、realvideo、mp3、または同種のものに従って符号化されてもよい。符号化プロセスは、リモートデバイス上のデコーダに配信するために任意でパッケージ化されたビデオストリームを生成する。ビデオストリームは、フレームサイズ及びフレームレートにより特徴付けられる。典型的なフレームサイズには、800×600、1280×720(例えば720p)、1024×768が挙げられるが、任意の他のフレームサイズも使用されてもよい。フレームレートは、1秒あたりのビデオフレームの数である。ビデオストリームは、様々なタイプのビデオフレームを含み得る。例えば、H.264規格では、「P」フレーム及び「I」フレームを含む。Iフレームは、ディスプレイデバイス上のすべてのマクロブロック/ピクセルをリフレッシュするための情報を含み、一方Pフレームはその部分セットをリフレッシュするための情報を含む。Pフレームは通常、Iフレームよりデータサイズが小さい。本明細書で使用される用語「フレームサイズ」は、フレーム内の画素数を指すことを意味する。「フレームデータサイズ」という用語は、フレームを格納するのに必要なバイト数を指すのに使用される。
代替的な実施形態では、ビデオソース730は、カメラなどのビデオ記録デバイスを含む。このカメラを使用して、コンピュータゲームのビデオストリームに含めることができる遅延ビデオまたはライブビデオが生成され得る。結果として生じるビデオストリームは、レンダリングされた画像と、スチルカメラまたはビデオカメラを使用して記録された画像との両方を任意選択で含む。ビデオソース730はまた、ビデオストリームに含めるために事前に記録したビデオを格納するように構成されたストレージデバイスも含み得る。ビデオソース730はまた、例えば人などのオブジェクトの動作または位置を検出するように構成された動作感知デバイスまたは位置感知デバイスと、検出された動作及び/または位置に基づいてゲーム状態の決定またはビデオの生成を行うように構成されたロジックとを含み得る。
ビデオソース730は任意で、他のビデオ上に配置されるように構成されたオーバーレイを提供するように構成される。例えば、これらのオーバーレイには、コマンドインターフェイス、ログイン指示、ゲームプレイヤへのメッセージ、他のゲームプレイヤの画像、他のゲームプレイヤのビデオ配信(例えばウェブカメラビデオ)が含まれ得る。クライアント710Aがタッチスクリーンインターフェイスまたは視線検出インターフェイスを含む実施形態では、オーバーレイには、仮想キーボード、ジョイスティック、及び/またはタッチパッドなどが含まれ得る。オーバーレイの一例では、プレイヤの声がオーディオストリームにオーバーレイされる。ビデオソース730は任意で、1つ以上のオーディオソースをさらに含む。
ビデオサーバシステム720が複数のプレイヤからの入力に基づいてゲームの状態を維持するように構成された実施形態では、ビューの位置及び方向を含む視点は、各プレイヤで異なり得る。ビデオソース830は、任意選択で、各プレイヤの視点に基づいて別個のビデオストリームを各プレイヤに提供するように構成される。さらに、ビデオソース730は、クライアント710のそれぞれに、異なるフレームサイズ、フレームデータサイズ、及び/または符号化を提供するように構成され得る。ビデオソース730は任意で、3Dビデオを提供するように構成される。
I/Oデバイス745は、ビデオサーバシステム720が、ビデオ、コマンド、情報リクエスト、ゲーム状態、視線情報、デバイス動作、デバイス位置、ユーザ動作、クライアント識別、プレイヤ識別、ゲームコマンド、セキュリティ情報、及び/またはオーディオなどの情報を、送信及び/または受信するように構成される。I/Oデバイス745は通常、ネットワークカードまたはモデムなどの通信ハードウェアを含む。I/Oデバイス745は、ゲームサーバ725、ネットワーク715、及び/またはクライアント710と通信するように構成される。
プロセッサ750は、本明細書で論述されるビデオサーバシステム720の様々な構成要素内に含まれるロジック、例えばソフトウェアを実行するように構成される。例えば、プロセッサ750は、ビデオソース730、ゲームサーバ725、及び/またはクライアントクオリファイア760の機能を実行するように、ソフトウェア命令でプログラムされ得る。ビデオサーバシステム720は任意で、プロセッサ750の複数のインスタンスを含む。プロセッサ750はまた、ビデオサーバシステム720が受信したコマンドを実行するように、または本明細書で論述されるゲームシステム700の様々な要素の動作を調整するように、ソフトウェア命令でプログラムされ得る。プロセッサ750は、1つ以上のハードウェアデバイスを含み得る。プロセッサ750は、電子プロセッサである。
ストレージ755は、非一時的なアナログ及び/またはデジタルのストレージデバイスを含む。例えば、ストレージ755は、ビデオフレームを格納するように構成されたアナログストレージデバイスを含み得る。ストレージ755は、例えばハードドライブ、光学ドライブ、またはソリッドステートストレージといったコンピュータ可読デジタルストレージを含み得る。ストレージ715は、ビデオフレーム、人工フレーム、ビデオフレームと人工フレームの両方を含むビデオストリーム、オーディオフレーム、及び/またはオーディオストリームなどを(例えば好適なデータ構造またはファイルシステムにより)格納するように構成される。ストレージ755は任意で、複数のデバイスに分散される。いくつかの実施形態では、ストレージ755は、本明細書の別の箇所で論述されるビデオソース730のソフトウェア構成要素を格納するように構成される。これらの構成要素は、必要に応じてすぐに提供できる形式で格納され得る。
ビデオサーバシステム720は任意で、クライアントクオリファイア760をさらに備える。クライアントクオリファイア760は、クライアント710Aまたは710Bなどのクライアントの能力をリモートで特定するように構成される。これらの能力には、クライアント710A自体の能力、並びにクライアント710Aとビデオサーバシステム720との間の1つ以上の通信チャネルの能力の両方が含まれ得る。例えば、クライアントクオリファイア760は、ネットワーク715を介して、通信チャネルをテストするように構成され得る。
クライアントクオリファイア760は、手動または自動で、クライアント710Aの能力を特定(例えば発見)し得る。手動による特定は、クライアント710Aのユーザと通信して、能力を知らせるようにユーザに依頼することを含む。例えば、いくつかの実施形態では、クライアントクオリファイア760は、クライアント710Aのブラウザ内に画像及び/またはテキストなどを表示するように構成される。一実施形態では、クライアント710Aは、ブラウザを含むHMDである。別の実施形態では、クライアント710Aは、HMD上に表示され得るブラウザを有するゲームコンソールである。表示されるオブジェクトは、ユーザに対し、クライアント710Aのオペレーティングシステム、プロセッサ、ビデオデコーダの種類、ネットワーク接続の種類、ディスプレイ解像度などの情報を入力するように要求する。ユーザにより入力された情報は、クライアントクオリファイア760へ返信される。
自動による特定は、例えば、クライアント710A上でエージェントを実行することにより、及び/またはクライアント710Aにテストビデオを送信することにより、行われ得る。エージェントは、ウェブページに埋め込まれた、またはアドオンとしてインストールされたジャバスクリプトなどのコンピューティング命令を含み得る。エージェントは任意で、クライアントクオリファイア760により提供される。様々な実施形態では、エージェントは、クライアント710Aの処理能力、クライアント710Aの復号化及び表示能力、クライアント710Aとビデオサーバシステム720との間の通信チャネルの遅延時間信頼性及び帯域幅、クライアント710Aのディスプレイの種類、クライアント710A上に存在するファイアウォール、クライアント710Aのハードウェア、クライアント710A上で実行されるソフトウェア、及び/またはクライアント710A内のレジストリエントリなどを、見つけ出すことができる。
クライアントクオリファイア760は、ハードウェア、ファームウェア、及び/またはコンピュータ可読媒体に格納されたソフトウェアを含む。クライアントクオリファイア760は任意で、ビデオサーバシステム720の1つ以上の他の要素とは別個のコンピューティングデバイス上に配置される。例えば、いくつかの実施形態では、クライアントクオリファイア760は、クライアント710とビデオサーバシステム720の複数のインスタンスとの間の通信チャネルの特性を特定するように構成される。これらの実施形態では、クライアントクオリファイアが発見した情報を使用して、クライアント710のうちの1つにストリーミングビデオを配信するのに最適なビデオサーバシステム720のインスタンスが特定され得る。
図8は、様々なゲームへのアクセスを提供する際に使用され得る情報サービスプロバイダアーキテクチャの実施態様を示す。情報サービスプロバイダ(ISP)802は、ネットワーク850を介して地理的に分散され、接続されたユーザ800に多数の情報サービスを供給する。ネットワーク850は、図1、2A及び2Bのネットワーク200と同様であり得る。ゲームへの高速アクセスを提供することに関して各種の実施態様が論じられてきたが、実施態様は、インタラクティブアプリケーションとのインタラクションの間にユーザによって取得された1つ以上の視覚的合図または他のツールもしくはアプリケーションポイントまたは賞もしくは報酬を使用してアクセス可能である様々なレベルのコンテンツを含むことができるコンテンツを提供する、仮想ツアーなどの他のインタラクティブアプリケーションへの高速アクセスを提供するように拡張することができる。例えば、ISP802は、ゲームなどの1種類のみのサービス、またはゲーム、株価の更新、放送メディア、ニュース、スポーツ、ゲーミングなどの様々なサービスを供給することができる。加えて、各ISPによって供されるサービスは動的であってもよく、すなわち、任意の時点でサービスを追加または排除することができる。したがって、特定の個人に特定の種類のサービスを提供するISPは、時間の経過と共に変化し得る。例えば、ユーザが地元にいる間、ユーザ付近のISPにより、ユーザはサービスを受けることができ、ユーザが別の町に移動した時、異なるISPにより、ユーザはサービスを受けることができる。地元のISPは、接続モジュールを通じて、必要な情報及びデータをユーザのゲーミングまたはアクセスプロファイルから新しいISPに転送することになり、その結果、ユーザ情報が新しい街までユーザに「追従」し、データがユーザにより近づき、データによりアクセスしやすくする。別の実施態様では、ユーザについての情報を管理するマスタISPと、マスタISPからの制御の下でユーザと直接的にインターフェイスするサーバISPとの間で、マスタ-サーバ関係が確立されてもよい。別の実施態様では、クライアントが世界中を移動するにつれて(すなわち、ユーザに割り当てられたデータセンタの切り替えの間)データが1つのISPから別のISPに転送され、そのような転送は、ユーザにサービスするためにより良好な位置にあるISP902を、これらのサービスを供給するISPとするために、それぞれのISPによって提供されるサービスの互換性に基づいていてもよい。
ISP802は、ネットワークを経由して顧客にコンピュータベースのサービスを提供するアプリケーションサービスプロバイダ(ASP)806を含む。ASPモデルを使用して提供されるソフトウェアは、オンデマンドソフトウェアまたはサービスとしてのソフトウエア(SaaS)と呼ばれることもある。特定のアプリケーションプログラム(顧客関係管理など)へのアクセスを提供する簡単な形式には、HTTPなどの標準プロトコルが使用される。アプリケーションソフトウェアは、例えば、ベンダのシステムに常駐し、HTMLを使用するウェブブラウザを通じて、またはベンダによって提供された専用クライアントソフトウェアによって、またはシンクライアントなどの他のリモートインターフェイスを介して、ユーザによってアクセスされる。
広い地理的地域にわたって供給されるサービスは、多くの場合にはクラウドコンピューティングを使用する。クラウドコンピューティングとは、動的に拡張縮小可能で多くの場合仮想化されたリソースがインターネットを介したサービスとして提供される、コンピューティング様式である。ユーザは、ユーザをサポートする「クラウド」における技術インフラストラクチャの専門家である必要はない。クラウドコンピューティングは、サービスとしてのインフラストラクチャ(IaaS)、サービスとしてのプラットフォーム(PaaS)、及びサービスとしてのソフトウエア(SaaS)などの様々なサービスに分けることができる。クラウドコンピューティングサービスは、多くの場合、ウェブブラウザからアクセスされる共通のビジネスアプリケーションをオンラインで提供するが、ソフトウェア及びデータはサーバ上に記憶される。クラウドという用語は、コンピュータネットワークの図表においてインターネットがどのように描写されるかに基づいた、(例えば、サーバ、ストレージ、及びロジックを使用する)インターネットのメタファとして使用され、それが隠している複雑なインフラストラクチャについての抽象化である。
さらに、ISP802は、ゲームクライアントによってシングル及びマルチプレイヤービデオゲームをプレイするために使用されるゲーム処理サーバまたはプロバイダ(GaPS)808を含む。インターネット上でプレイされるほとんどのビデオゲームは、ゲームサーバへの接続を介して動作する。通常、ゲームはプレイヤからのデータを収集し、それを他のプレイヤに配信する専用サーバアプリケーションを使用する。これは、ピアツーピア構成よりも効率的且つ効果的であるが、サーバアプリケーションをホストするために別個のサーバを必要とする。別の実施態様では、GaPSは、プレイヤとそれぞれのゲームプレイデバイスとの間の通信を確立し、集中化されたGaPSに依存せずに情報を交換する。
専用GaPSは、クライアントとは独立して実行されるサーバである。このようなサーバは、通常、データセンタ内に位置付けられた専用ハードウェア上で実行され、より大きい帯域幅及び専用の処理パワーを提供する。専用サーバは、大部分のPCベースのマルチプレイヤゲームのためのゲームサーバをホストするのに好ましい方法である。大規模なマルチプレイヤオンラインゲームは、ゲームタイトルを所有するソフトウェア会社が通常ホストする専用サーバ上で実行し、専用サーバがコンテンツを制御及び更新することを可能にする。
放送処理サーバまたはプロバイダ(BPS)810は、視聴者にオーディオまたはビデオ信号を配信する。非常に狭い範囲の視聴者へのブロードキャスティングは、ナローキャスティングと呼ばれることもある。ブロードキャスト配信の最終工程は、信号が聴取者または視聴者にどのように達するかであり、ラジオ局またはテレビ局と同様にアンテナ及び受信機に無線で到来し得るか、または局を介してもしくはネットワークから直接、ケーブルテレビもしくはケーブルラジオ(もしくは「無線ケーブル」)を通して到来し得る。インターネットはまた、特に、信号及び帯域幅を共有できるマルチキャストを使用して、ラジオまたはテレビのいずれかを受信者に届け得る。歴史的に、ブロードキャストは、全国放送または地域放送などの地理的領域により範囲が定められてきた。しかし、高速インターネットが普及して、コンテンツは世界のほとんどの国に届くので、ブロードキャストは地理によって定められない。
ストレージサービスプロバイダ(SSP)812は、コンピュータストレージ空間及び関連する管理サービスを提供する。SSPは、定期的なバックアップ及びアーカイブも提供する。サービスとしてストレージを提供することによって、ユーザは、必要に応じてより多くのストレージを注文することができる。別の大きな利点として、SSPはバックアップサービスを含み、コンピュータのハードドライブに障害が発生しても、ユーザがユーザのすべてのデータを失うことはない。さらに、複数のSSPは、ユーザデータの全体的または部分的なコピーを有することができ、これにより、ユーザの位置、またはデータアクセスに使用されているデバイスとは無関係に、ユーザは効率的な方法でデータにアクセスすることができる。例えば、ユーザが移動している間、ユーザは、ホームコンピュータと携帯電話の個人ファイルにアクセスすることができる。
通信プロバイダ814は、ユーザに接続性を提供する。通信プロバイダの一種は、インターネットへのアクセスを提供するインターネットサービスプロバイダ(ISP)である。ISPは、ダイヤルアップ、DSL、ケーブルモデム、ファイバ、無線、または専用の高速相互接続など、インターネットプロトコルデータグラムの配信に適したデータ伝送技術を使用して、顧客を接続する。通信プロバイダは、電子メール、インスタントメッセージ、及びSMSテキストなどのメッセージサービスも提供することができる。通信プロバイダの別の種類は、インターネットへの直接のバックボーンアクセスを提供することにより帯域幅またはネットワークアクセスを販売するネットワークサービスプロバイダ(NSP)である。ネットワークサービスプロバイダは、電気通信会社、データキャリア、無線通信プロバイダ、インターネットサービスプロバイダ、高速インターネットアクセスを提供するケーブルテレビ事業者などから構成されてよい。
データ交換804は、ISP902内のいくつかのモジュールを相互接続し、ネットワーク850を介してこれらのモジュールをユーザ800のクライアントデバイス820に接続する。データ交換804は、ISP802のすべてのモジュールが近接している小さい領域をカバーすることができ、または様々なモジュールが地理的に分散しているときには大きな地理的領域をカバーすることができる。例えば、データ交換804は、データセンタのキャビネット内の高速のギガビットイーサネット(もしくはさらに高速のもの)、または大陸間仮想エリアネットワーク(VLAN)を含み得る。
ユーザ800は、それぞれのクライアントデバイス820を用いてリモートサービスにアクセスする。このクライアントデバイスは、少なくともCPU、メモリ(図示せず)、ディスプレイ及びI/Oを含む。クライアントデバイスは、PC、携帯電話、ネットブック、タブレット、ゲーミングシステム、PDAなどとすることができる。一実施態様では、ISP802は、クライアントによって使用されるデバイスの種類を認識し、採用された通信方法を調整する。他の場合には、クライアントデバイスは、HTMLなどの標準的な通信方法を使用して、ISP802にアクセスする。
本発明の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースの、またはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなどを含む各種のコンピュータシステム構成を用いて実施されてもよい。本発明はまた、有線ベースのネットワークまたは無線ネットワークを通じてリンクされるリモート処理デバイスによってタスクが実行される、分散型コンピューティング環境で実施することができる。
上記の実施形態を念頭に置いて、本発明は、コンピュータシステム内に格納されたデータに関連した各種のコンピュータ実装動作を採用できることが理解されるべきである。これらの動作は、物理量の物理的操作を必要とする動作である。本発明の一部を構成する本明細書で説明されるいずれの動作も有用な機械動作である。本発明はまた、これらの動作を実行するためのデバイスまたは装置に関する。装置は、必要な目的のために特別に構築することができる、または装置は、コンピュータに記憶されたコンピュータプログラムにより選択的にアクティブにされるまたは構成される汎用コンピュータであってよい。詳細には、本明細書の教示にしたがって書かれたコンピュータプログラムと共に様々な汎用マシンを使用することができる、または、必要な動作を実行するためにさらに特化した装置を構築するほうがより好都合な場合もある。
発明はまた、コンピュータ可読媒体上のコンピュータ可読コードとして具現化することができる。あるいは、コンピュータ可読コードは、前述のデータ交換相互接続を使用して、サーバからダウンロードされてよい。コンピュータ可読媒体は、データを格納することができる任意のデータストレージデバイスであり、データは、その後、コンピュータシステムによって読み出すことができる。コンピュータ可読媒体の例は、ハードドライブ、ネットクワーク接続ストレージ(NAS)、読み出し専用メモリ、ランダムアクセスメモリ、CD-ROM、CD-R、CD-RW、磁気テープ、並びに他の光学及び非光学データストレージデバイスを含む。コンピュータ可読媒体には、コンピュータ可読コードが分散方式で格納され実行されるように、ネットワーク接続されたコンピュータシステムにわたり分散されたコンピュータ可読有形媒体が含まれ得る。
方法動作が特定の順序で説明されたが、他のハウスキーピング操作が動作の間に実行されてもよく、または動作が、わずかに異なる時刻に生じるように調整されてもよく、もしくはオーバーレイ動作の処理が所望の手法で実行される限り、処理に関連する様々な間隔で処理動作の発生を可能にするシステム内に分散されてもよいことが理解されるべきである。
前述の発明は、理解を明確にするために幾分詳細に説明されてきたが、添付された特許請求の範囲内である変更及び修正を実施できることは明らかであろう。したがって、本実施態様は、例示的であり、限定的ではないとみなされるべきであり、本発明は本明細書で与えられた詳細に限定されるものではなく、説明される実施態様の範囲及び均等物内で修正されてもよい。
ゲーミングコンソールの例示的なシステムアーキテクチャ全体について本明細書で説明する。例示的なゲーミングコンソールは、本発明の実施形態を実装するためのコントローラと互換性を有し得る、Sony(登録商標)Playstation3(登録商標)(PS3)またはPlaystation4(登録商標)(PS4)エンターテインメントデバイスを含んでもよい。PS3ゲーミングコンソールシステムアーキテクチャが詳細に説明されるが、本明細書で説明される各種の実施態様が、異なるゲーミングコンソールまたはコンピューティングデバイスのシステムアーキテクチャに拡張可能であることに留意されるべきである。システムユニットが提供され、このシステムユニットには各種の周辺デバイスが接続可能である。システムユニットは、図1のクラウドゲームシステム300と類似している。システムユニットは、PS3にあるような8コアプロセッサ、またはPS4にあるようなマルチコアプロセッサであり得るプロセッサ、PS3にあるようなRambus(登録商標)ダイナミックランダムアクセスメモリ(XDRAM)ユニット、またはPS4にあるようなGDDR5などのグラフィックスダイナミックランダムアクセスメモリ、PS3にあるような専用ビデオランダムアクセスメモリ(VRAM)ユニットを有するリアリティシンセサイザグラフィックスユニット(例えば、550MHz GPU)、またはPS4及びPS4 Proにおける共有グラフィックスメモリを有する800もしくは900MHz GPU、ならびにI/Oブリッジを含む。システムユニットはまた、I/Oブリッジを通じてアクセス可能な、ディスク及び着脱可能スロットインハードディスクドライブ(HDD)から読み出すためのBluRay(登録商標)ディスクリードオンリーメモリ(BD-ROM(登録商標))(光学)ディスクリーダを含む。任意選択で、システムユニットはまた、I/Oブリッジを通じて同様にアクセス可能である、コンパクトフラッシュ(登録商標)メモリカード及びメモリスティック(登録商標)メモリカードなどを読み出すためのメモリカードリーダ、ならびに、PS4では、ゲームを記録するための内蔵DVRを含む。
I/Oブリッジはまた、6つのユニバーサルシリアルバス(USB)2.0ポート、ギガビットイーサネットポート、IEEE802.11b/g無線ネットワーク(Wi-Fi)ポート、及び最大で7つのBluetooth接続をサポートする能力を有するBluetooth(登録商標)無線リンクポートに接続する。
動作中、I/Oブリッジは、1つ以上のゲームコントローラ(PS3にあるようなDualShock3コントローラ、またはPS4にあるようなPS4 DualShock4コントローラなど)からのデータを含む、すべての無線、USB、及びイーサネットデータを扱う。例えば、ユーザがゲームをプレイしているとき、I/Oブリッジは、Bluetoothリンクを介してゲームコントローラからデータを受信し、それを(PS3における)プロセッサまたは(PS4における)マルチコアプロセッサに送り出し、プロセッサまたはマルチコアプロセッサは、それに応じてゲームの現在のステートを更新する。さらに、他の画像センサ及び移動センサは、ユーザのゲームプレイ中に取り込まれたデータをI/Oブリッジに提供し、I/Oブリッジは、そのデータをそれぞれのプロセッサに送り出す。ゲームコントローラ(例えば、PS4のゲームコントローラ)は、ゲームを共有するための共有ボタンオプション、クリック可能なタッチパッド、再充電可能なバッテリ(リチウムイオンまたは他の種類)などを含む。
無線、USB及びイーサネットポートはまた、ゲームコントローラに加えて、リモコン、キーボード、マウス、Sony Playstation Portable(登録商標)エンターテインメントデバイスなどのポータブルエンターテインメントデバイス、EyeToy(登録商標)ビデオカメラなどのビデオカメラ、マイクロホンヘッドセット、及び着脱可能ハードドライブなどの他の周辺デバイスのための接続性を提供する。したがって、このような周辺デバイスは、原則として、無線でシステムユニットに接続されてもよく、例えば、ポータブルエンターテインメントデバイスはWi-Fiアドホック接続を介して通信してもよく、他方、マイクロホンヘッドセットはBluetoothリンクを介して通信してもよい。
これらのインターフェイスのプロビジョニングは、Playstation3デバイスが、デジタルビデオレコーダ(DVR)、セットトップボックス、デジタルカメラ、ポータブルメディアプレイヤー、ボイスオーバIP電話、携帯電話、プリンタ、及びスキャナなどの他の周辺デバイスとの互換性も潜在的に有することを意味する。
加えて、レガシーメモリカードリーダは、USBポートを介してシステムユニットに接続されてもよく、Playstation(登録商標)またはPlaystation2(登録商標)デバイスによって使用される種類のメモリカードの読み出しを可能にする。
本実施態様では、ゲームコントローラは、Bluetooth(登録商標)リンクを介してシステムユニットと無線で通信するように動作可能である。しかしながら、ゲームコントローラは、その代わりに、USBポートに接続することができ、それによって、ゲームコントローラのバッテリを充電する電力も提供する。1つ以上のアナログジョイスティック及び従来の制御ボタンに加えて、ゲームコントローラは、各軸における平行移動及び回転に対応した、6つの自由度における動きに反応する。その結果、ゲームコントローラのユーザによるジェスチャ及び動作は、従来のボタンまたはジョイスティックのコマンドに加えて、またはそれらの代わりに、ゲームへの入力として変換され得る。任意で、Playstation(登録商標)ポータブルデバイスなどの他の無線対応の周辺デバイスがコントローラとして使用され得る。Playstation(登録商標)ポータブルデバイスの場合、追加のゲーム情報または制御情報(例えば制御命令または残機数)がデバイスの画面上に提示され得る。ダンスマット(図示せず)、ライトガン(図示せず)、ハンドル及びペダル(図示せず)、または即答クイズゲームのための1つまたは複数の大型ボタン(同様に図示せず)などの特注品のコントローラなどの、他の代替的または補助的な制御デバイスも使用されてもよい。
リモコンはまた、Bluetooth(登録商標)リンクを介してシステムユニットと無線で通信するように動作可能である。リモコンは、BluRay(登録商標)ディスクBD-ROMリーダの動作のために、さらにディスクコンテンツのナビゲーションのために好適な制御を備える。
BluRay(登録商標)ディスクBD-ROMリーダは、従来の記録済みのコンパクトディスク(CD)及び記録可能なCD、ならびにいわゆるスーパーオーディオCDに加えて、Playstation及びPlayStation2デバイスとの互換性を有するコンパクトディスクリードオンリーメモリ(CD-ROM)を読み出すように動作可能である。BluRay(登録商標)ディスクBD-ROMリーダはまた、従来の記録済みのDVD及び記録可能なDVDに加えて、PlayStation2(登録商標)及びPlayStation3(登録商標)デバイスとの互換性を有するデジタルバーサタイルディスクリードオンリーメモリ(DVD-ROM)を読み出すように動作可能である。BluRay(登録商標)ディスクBD-ROMリーダは、さらに、従来の記録済みのBlu-Rayディスク及び記録可能なBlu-Rayディスクのみならず、PlayStation3デバイスとの互換性を有するBD-ROMを読み出すように動作可能である。
システムユニットは、ディスプレイ及び1つ以上のラウドスピーカを有するモニタまたはテレビセットなどのディスプレイ及びサウンド出力デバイスへのオーディオ及びビデオコネクタを通じて、Playstation3またはPlaystation4デバイスによって生成または復号のいずれかがなされたオーディオ及びビデオを、リアリティシンセサイザグラフィックスユニットを介して供給するように動作可能である。オーディオコネクタは、従来のアナログ及びデジタル出力を含んでもよく、他方、ビデオコネクタは、コンポーネントビデオ、Sビデオ、コンポジットビデオ、及び1つ以上の高解像度マルチメディアインターフェイス(HDMI(登録商標))出力を様々に含んでもよい。結果として、ビデオ出力は、PALもしくはNTSCなどのフォーマットにあってもよく、または720p、1080iもしくは1080pの高解像度、及び4K、HDRにあってもよい。
オーディオ処理(生成及び復号など)は、プロセッサによって実行される。例えば、Playstation3デバイスのオペレーティングシステムは、Dolby(登録商標)5.1サラウンドサウンド、Dolby(登録商標)シアターサラウンド(DTS)、及びBlu-Ray(登録商標)ディスクからの7.1サラウンドサウンドの復号をサポートする。
本実施態様では、ビデオカメラは、CMOS(相補型金属酸化物半導体)画像センサ(ただし、電荷結合素子(CCD)画像センサも使用され得る)、LEDインジケータ、ならびにハードウェアベースのリアルタイムデータ圧縮及び符号化装置を含むことにより、圧縮されたビデオデータは、システムユニットによる復号のために、イントラ画像ベースのMPEG(motion picture expert group)規格などの適切なフォーマットで送信され得る。カメラLEDインジケータは、例えば、不利な照明条件を示すために、システムユニットからの適切な制御データに応答して発光するように配列されている。ビデオカメラの実施態様は、USB、Bluetooth、Wi-Fi通信ポートを介してシステムユニットに様々に接続してもよい。ビデオカメラの実施態様は、1つ以上の関連するマイクロフォンを含んでもよく、オーディオデータを送信することも可能であってもよい。ビデオカメラの実施態様では、CCDは、高解像度ビデオの取り込みに適した分解能を有してもよい。使用中、ビデオカメラによって取り込まれた画像は、例えば、ゲーム内に組み込まれてもよく、またはゲーム制御入力として解釈されてもよい。
一般に、システムユニットの通信ポートのうちの1つを介してビデオカメラまたはリモコンなどの周辺デバイスとのデータ通信が正常に行われるように、デバイスドライバなどの、1つの適切なソフトウェアが提供されるべきである。デバイスドライバ技術は公知であり、ここで詳細に説明しないが、当業者は、デバイスドライバまたは同様のソフトウェアインターフェイスが説明される本実施態様において必要とされ得ることを理解するであろうと言えることに留める。
プロセッサは、メモリコントローラ及びデュアルバスインターフェイスコントローラを含む外部入力及び出力構造、パワープロセッシングエレメントと称されるメインプロセッサ、シナジスティックプロセッシングエレメント(SPE)と称される8つのコプロセッサ、及びエレメント相互接続バスと称される上記の構成要素を接続する環状データバス、の4つの基本構成要素を含むアーキテクチャを有する。プロセッサの総浮動小数点性能は、Playstation2デバイスのエモーションエンジンの6.2GFLOPSと比較して、218GFLOPSである。
パワープロセッシングエレメント(PPE)は、3.2GHzの内部クロックにより動作する双方向同時マルチスレッディングパワー準拠のPowerPCコア(PPU)に基づいている。このコアは、512kBのレベル2(L2)キャッシュ及び32kBのレベル1(L1)キャッシュを含む。PPEは、1クロックサイクル当たり8つの単一位置演算が可能であり、3.2GHzにおいて25.6GFLOPSに変換する。PPPEの主要な役割は、計算負荷の大部分を扱うシナジスティックプロセッシングエレメントのコントローラとして機能することにある。動作中、PPEは、ジョブキューを保持し、シナジスティックプロセッシングエレメントのジョブをスケジュールしており、その進捗を監視する。結果として、各シナジスティックプロセッシングエレメントはカーネルを実行する。カーネルの役割は、ジョブを取り出して、これを実行し、PPEと同期させることにある。
各シナジスティックプロセッシングエレメント(SPE)は、各シナジスティックプロセッシングユニット(SPU)及び各メモリフローコントローラ(MFC)を含み、さらに、MFCは、各ダイナミックメモリアクセスコントローラ(DMAC)、各メモリ管理ユニット(MMU)及びバスインターフェイス(図示せず)を含む。各SPUは、3.2GHzにおいてクロック動作し、原則として4GBに拡張可能な、256kBのローカルRAMを含むRISCプロセッサである。各SPEは、単精度性能の理論的な25.6GFLOPSを示す。SPUは、単一のクロックサイクルにおいて、4つの単精度浮動小数点部、4つの32ビット数、8つの16ビット整数または16個の8ビット整数を処理することができる。同一のクロックサイクルにおいて、SPUはまた、メモリ演算を実行することができる。SPUは、システムメモリXDRAM1426に直接アクセスしない。SPUによって形成された64ビットアドレスはMFCに渡され、MFCは、そのDMAコントローラに対し、エレメント相互接続バス及びメモリコントローラを介してメモリにアクセスするように指示する。
エレメント相互接続バス(EIB)は、上記のプロセッサエレメント、すなわちPPE、メモリコントローラ、デュアルバスインターフェイス、及び8つのSPE、合計して12個のパーティシパントを接続する、プロセッサの内部の論理的に環状の通信バスである。パーティシパントは、クロックサイクルごとに8バイトのレートでバスに対する読み出し及び書き込みを同時に行うことができる。以前に述べたように、各SPEは、より長い読み出し及び書き込みシーケンスをスケジューリングするためのDMACを含む。EIBは、4つのチャネルを備え、そのうち2つは時計回り方向であり、残り2つは反時計回り方向である。結果として、12個のパーティシパントについて、任意の2つのパーティシパント間の最長のステップ方式のデータフローは、適切な方向で6ステップとなる。したがって、パーティシパント間のアービトレーションを通じて完全に利用された場合、12個のスロットの理論上のピーク瞬間EIB帯域幅は、1クロック当たり96Bとなる。これは、3.2GHz(ギガヘルツ)のクロックレートにおける307.2GB/s(ギガバイト/秒)の理論上のピーク帯域幅に等しい。
メモリコントローラは、Rambus Incorporatedによって開発されたXDRAMインターフェイスを含む。メモリコントローラは、25.6GB/sの理論上のピーク帯域幅を有するRambus XDRAM1426とインターフェイスする。
デュアルバスインターフェイスは、Rambus FlexIO(登録商標)システムインターフェイスを含む。インターフェイスは、5つの経路が受信用、7つの経路が送信用である、それぞれが8ビット幅である12個のチャネルに編成される。これにより、コントローラを介したプロセッサとI/Oブリッジとの間、及びコントローラを介したリアリティシンセサイザグラフィックスユニットの間で、理論上のピーク帯域幅が62.4GB/s(送信36.4GB/s、受信26GB/s)が得られる。
プロセッサによってリアリティシンセサイザグラフィックスユニットに送信されるデータは通常、表示リストを含み、これは、頂点を描画し、ポリゴンにテクスチャを貼り付け、照明条件を指定するなどのための一連のコマンドである。
実施形態は、現実世界のユーザをさらに良好に識別し、アバターまたはシーンの活動を指示するために深度データを取り込むことを含んでもよい。オブジェクトは、人が保持しているものとすることができ、または人の手とすることもできる。この説明では、用語「深度カメラ」及び「三次元カメラ」は、二次元画素情報のみならず距離または深度情報を取得することが可能である任意のカメラを指す。例えば、深度カメラは、制御された赤外線照明を利用して距離情報を取得することができる。別の例示的な深度カメラは、2台の基準カメラを使用して距離情報を三角測量によって求める立体カメラ対とすることができる。同様に、用語「深度検知デバイス」は、距離情報と共に二次元画素情報を取得可能である任意の種類のデバイスを指す。
三次元画像における最新の進歩により、リアルタイムのインタラクティブコンピュータのアニメーションの可能性を広げる機会が与えられている。特に、新たな「深度カメラ」は、通常の二次元ビデオ画像に加えて三次元の取り込み及びマッピングを行う能力を提供する。新たな深度データにより、本発明の実施形態では、他のオブジェクトの背後を含む、ビデオシーン内の各種の場所に、コンピュータによって生成されたオブジェクトをリアルタイムで配置することが可能になる。
その上、本発明の実施形態は、ユーザに対してリアルタイムのインタラクティブゲーミング体験を提供する。例えば、ユーザは、コンピュータによって生成された各種のオブジェクトとリアルタイムでインタラクションを行うことができる。さらに、ビデオシーンは、ユーザの体験を向上させるようにリアルタイムで変更することができる。例えば、コンピュータによって生成されたコスチュームをユーザの服の上に装着させることができ、コンピュータによって生成された光源を利用してビデオシーン内に仮想の影を投影することができる。よって、本発明の実施形態及び深度カメラを使用して、ユーザは、自分のリビングルーム内でインタラクティブ環境を体験することができる。通常のカメラと同様に、深度カメラは、ビデオ画像を含む複数の画素についての二次元データを取り込む。これらの値は、画素についての色値であり、通常は、各画素についての赤、緑、及び青(RGB)の値である。この方式では、カメラによって取り込まれたオブジェクトは、モニタ上では二次元オブジェクトとして見える。
本発明の実施態様はまた、分散化された画像処理構成について考察する。例えば、本発明は、CPU内またはCPU及び他の1つの素子内など、1つの場所またはさらには2つの場所内で行われる取り込まれた画像及び表示画像の処理に限定されない。例えば、入力画像処理は、処理を実行することができる関連のCPU、プロセッサまたはデバイス内でそのまま容易に行うことができ、基本的には、画像処理のすべてを、相互接続システム全体に分散させることができる。したがって、本発明は、いずれかの特定の画像処理ハードウェア回路及び/またはソフトウェアに限定されない。本明細書で説明される実施形態は、汎用ハードウェア回路及び/またはソフトウェアのいずれかの特定の組み合わせにも、処理構成要素によって実行される命令についてのいずれの特定のソースにも限定されない。
上記の実施形態を念頭に置いて、本発明は、コンピュータシステムに格納されたデータに関連した各種のコンピュータ実装動作を採用し得ることが理解されるべきである。これらの動作は、物理量の物理的操作を必要とする動作を含む。通常、必須ではないが、これらの量は、格納され、変換され、組み合わされ、比較され、さもなければ操作されることが可能な電気または磁気信号の形をとる。さらに、実行される操作は、多くの場合、作成すること、識別すること、判定すること、または比較することなどの用語で参照される。
本発明の一部を構成する本明細書で説明される動作はいずれも有用な機械動作である。本発明はまた、これらの動作を実行するためのデバイスまたは装置に関する。装置は、必要な目的のために特別に構築することができる。または装置は、コンピュータに記憶されたコンピュータプログラムにより選択的にアクティブにされるまたは構成される汎用コンピュータであってよい。詳細には、本明細書の教示にしたがって書かれたコンピュータプログラムと共に様々な汎用マシンを使用することができる。または、必要な動作を実行するためにさらに特化した装置を構築するほうがより好都合な場合もある。
上述の発明は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースの、またはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成によって実施されてもよい。本発明はまた、通信ネットワークを通じてリンクされたリモート処理デバイスによってタスクが実行される分散型コンピューティング環境で実施されてもよい。
本発明はまた、コンピュータ可読媒体上のコンピュータ可読コードとして具現化されてもよい。コンピュータ可読媒体は、電磁搬送波を含む、後でコンピュータシステムによって読み出すことが可能なデータを格納することができる任意のデータストレージデバイスである。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ(NAS)、リードオンリーメモリ、ランダムアクセスメモリ、CD-ROM、CD-R、CD-RW、磁気テープ、ならびに他の光学及び非光学データストレージデバイスが含まれる。コンピュータ可読媒体はまた、コンピュータ可読コードが分散方式で格納及び実行されるように、ネットワーク結合コンピュータシステム上に分散させることができる。
前述の発明は、理解を明確にするために幾分詳細に説明されてきたが、添付された特許請求の範囲内である変更及び修正が実施され得ることは明らかであろう。したがって、本実施形態は例示的であって限定的ではないとみなされるべきであり、本発明は本明細書に与えられた詳細に限定されるものではなく、添付された特許請求の範囲及び均等物の範囲内で修正され得る。
本明細書で定められる様々な実施形態が、本明細書に開示する様々な特徴を使用し、特定の実施態様に結合され得る、または組み込まれ得ることを理解されたい。したがって、提供される実施例は、いくつかの可能な実施例にすぎず、様々な要素を組み合わせることでより多くの実施態様を定めることが可能な様々な実施態様に限定されない。ある例では、ある実施態様は、開示されたまたは同等の実施態様の趣旨から逸脱することなく、より少ない要素を含んでもよい。
本開示の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースもしくはプログラム可能な消費者向け電気製品、ミニコンピュータ、及びメインフレームコンピュータなどを含む様々なコンピュータシステム構成で実施されてよい。本開示の実施形態はまた、有線ベースネットワークまたは無線ネットワークを介してリンクされる遠隔処理デバイスによりタスクが行われる分散コンピューティング環境においても、実施することができる。
上記の実施形態を念頭に置いて、本開示の実施形態がコンピュータシステムに格納されたデータを含む様々なコンピュータ実装の動作を使用し得ることを理解されたい。これらの動作は、物理量の物理的操作を必要とする動作である。本開示の実施形態の一部を形成する、本明細書で説明される動作のうちのいずれも、有用な機械動作である。開示の実施形態はまた、これら動作を実行するためのデバイスまたは装置に関する。装置は、必要な目的のために特別に構築することができる。または、装置は、コンピュータに記憶されたコンピュータプログラムにより選択的に起動または構成される汎用コンピュータであってもよい。詳細には、本明細書の教示にしたがって書かれたコンピュータプログラムと共に様々な汎用マシンを使用することができる。または、必要な動作を実行するためにさらに特化した装置を構築するほうがより好都合な場合もある。
本開示はまた、コンピュータ可読媒体上のコンピュータ可読コードとしても具現化することができる。コンピュータ可読媒体は、後でコンピュータシステムにより読み出され得るデータを格納できる任意のデータストレージデバイスである。コンピュータ可読媒体の例は、ハードドライブ、ネットクワーク接続ストレージ(NAS)、読み出し専用メモリ、ランダムアクセスメモリ、CD-ROM、CD-R、CD-RW、磁気テープ、並びに他の光学及び非光学データストレージデバイスを含む。コンピュータ可読媒体には、コンピュータ可読コードが分散方式で格納され実行されるように、ネットワーク接続されたコンピュータシステムにわたり分散されたコンピュータ可読有形媒体が含まれ得る。
方法の動作を特定の順序で記載したが、オーバーレイ動作の処理が所望の方法で実行される限り、動作間に他のハウスキーピング動作が実行されてよく、または動作がわずかに異なる時間に起こるように調整されてよく、またはシステム内に動作を分散することで、処理に関連する様々な間隔で処理動作が起こることを可能にしてよいことを、理解すべきである。
前述の開示は、理解を明確にするためにある程度詳細に説明されたが、添付の特許請求の範囲内で特定の変更及び修正を実施できることは明らかであろう。したがって、本実施形態は、限定ではなく例示としてみなされるべきであり、本開示の実施形態は、本明細書に提供される詳細に限定されるものではなく、添付の特許請求の範囲内及び均等物内で変更されてよい。

Claims (30)

  1. オンラインゲーム用に生成されたデータのフレームをサーバデバイスから受信し、前記データのフレームは前記オンラインゲームの現在の状態を表すものであり、
    エンコーダを使用して前記データのフレームを符号化し、前記符号化されたデータのフレームは、レンダリングのためにネットワークを介してクライアントデバイスに送信されるものであり、
    前記クライアントデバイスに送信される前記符号化されたフレームに含まれるデータの量を判定するために前記符号化されたフレームに含まれる前記データを評価し、
    前記符号化されたフレームの前記データの量が、前記サーバデバイスと前記クライアントデバイスの間で確立された通信チャネルに指定された最大データ制限を超える場合、前記エンコーダに信号を送信して、レンダリングのために前記クライアントデバイスに転送される1つ以上の後続のフレームに含まれるデータ量の動的削減を行い、前記調整は、前記オンラインゲーム用に定められたフレームレートを維持するように実行される、方法。
  2. 前記1つまたは複数の後続のフレームに含まれるデータ量の動的削減では、
    データの量を削減する必要がある後続の複数のフレームを判定し、かつ、
    前記後続のフレームの数のそれぞれに含まれる前記データの削減された最大データ制限を指定し、前記削減された最大データ制限は、前記1つ以上の後続のフレームを符号化するために使用される、請求項1に記載の方法。
  3. 前記削減された最大データ制限は、前記符号化されたフレームの前記データが前記最大データ制限を超える程度に基づいて判定される、請求項2に記載の方法。
  4. 前記削減された最大データが適用される前記後続のフレームの数がオンラインゲームのタイプに依存する、請求項2に記載の方法。
  5. 前記削減された最大データが適用される前記後続のフレームの数が前記オンラインゲームのデータの要求に依存する、請求項2に記載の方法。
  6. 前記削減された最大データ制限は、前記通信チャネルの利用可能な帯域幅に基づいて設定される、請求項2に記載の方法。
  7. 前記データの量の動的削減は、圧縮技術を使用して前記フレームに含まれる前記データに対して圧縮を実行することを含み、圧縮のレベルは前記圧縮技術によって決定され、前記圧縮技術は非可逆的圧縮または可逆的圧縮に続く、請求項2に記載の方法。
  8. 後続のフレームにおける前記データ量の動的削減では、
    保持する前記後続のフレームの特定の部分、及び破棄する前記後続のフレームの特定の他の部分に関連するデータを識別し、かつ、
    保持されるべき前記特定の部分に関連する前記データを使用して、前記後続のフレームを符号化する、請求項2に記載の方法。
  9. 動的削減では、さらに、前記後続のフレームの数のデータの前記動的削減が完了したときに、前記オンラインゲームのデータのフレームの符号化を前記最大データ制限で再開する、請求項1に記載の方法。
  10. 前記最大データ制限は、前記クライアントデバイスと前記サーバデバイスとの間に確立された前記通信チャネルの利用可能な帯域幅に基づいて定められる、請求項1に記載の方法。
  11. 前記最大データ制限を超えるデータを有する前記フレームが前記ネットワークを介して前記クライアントデバイスに転送された後に、前記1つまたは複数の後続のフレームの前記動的削減が行われる、請求項1に記載の方法。
  12. 前記動的削減では、前記オンラインゲームの前記1つまたは複数の後続フレームのそれぞれの前記データを、符号化のために前記エンコーダに前記1つまたは複数の後続フレームのそれぞれの前記データを転送する前に処理する、請求項1に記載の方法。
  13. 後続のフレームのための前記データの処理では、
    前記後続のフレームに含まれる前記データを評価して、データの重要な部分と、前記後続のフレームに含まれる画像を構築するためにデータの重要ではない他の部分を識別し、前記重要な部分を識別するための評価は、前記クライアントデバイスのユーザへの前記後続のフレームに含まれるコンテンツのコンテキスト関係に基づくものであり、かつ、
    前記評価の結果を含む前記後続のフレームの前記データをエンコーダに転送し、前記エンコーダは、前記評価の前記結果を使用して、前記ユーザにとって重要であると識別された前記後続のフレームのデータの符号化部分に焦点を合わせる、請求項12に記載の方法。
  14. オンラインゲームのデータを処理するためのシステムであって、
    前記オンラインゲームのインスタンスを実行し、クライアントデバイスに送信するためのデータのフレームを生成するように構成されたサーバを有し、
    前記オンラインゲームの前記データのフレームを受信し、通信チャネルに指定された最大データ制限に従って前記データのフレームを符号化するように構成されたエンコーダを有し、
    前記通信チャネルは、前記オンラインゲームを実行する前記サーバと、レンダリングのために前記データのフレームを送信するための前記クライアントデバイスと、の間に確立されたものであり、かつ、
    特定のフレームに含まれる前記データの量が前記最大データ制限を超える場合に、前記フレームの各々に含まれるデータの量を監視し、信号を生成して、1つ以上の後続のフレームに含まれる前記データの量を動的に削減するように構成された監視システムを有する、システム。
  15. 前記監視システムは、
    各フレームを調べて、前記クライアントデバイスへのオンワードの転送のために前記エンコーダによって符号化された各フレームに含まれるデータの量を判定し、前記特定のフレームが、前記通信チャネル用に指定された前記最大データ制限を超えるデータを含むときに負債トラッカとインタラクションを行うように構成されたビットレートモニタを有し、
    前記負債トラッカは、前記特定のフレームに含まれる超過データの量と、動的に削減する必要があるデータの前記特定のフレームの後に生成される後続のフレームの数とを追跡するように構成されており、かつ、
    前記クライアントデバイスに送信された前記特定のフレームに含まれる前記超過データの表示を前記ビットレートモニタから受信し、前記後続のフレームの数に含まれる前記データの量を、削減された最大データ制限に動的に削減するように前記エンコーダに応答的に指示するように構成されたビットレートアジャスタを含む、請求項14に記載のシステム。
  16. 前記削減された最大データ制限は、前記オンラインゲームの要求に基づいて判定される、請求項15に記載のシステム。
  17. 前記エンコーダは、
    前記特定のフレームに含まれるデータの超過量を示す第1の信号を前記ビットレートアジャスタから受信し、前記第1の信号は、後続の各フレームのデータの前記削減された最大データ制限と、前記データの量を削減する必要がある前記後続のフレームの数を指定するものであり、かつ、
    前記ビットレートアジャスタからの前記第1の信号で指定された前記削減された最大データ制限に従って、後続の各フレームに含めるために識別された前記データを削減するように構成される、請求項15に記載のシステム。
  18. 前記後続のフレームの数は、前記特定のフレームが前記最大データ制限を超える量に基づいて判定される、請求項15に記載のシステム。
  19. 前記ビットレートモニタが前記負債トラッカとインタラクションを行い、前記データの量を動的に削減する必要がある前記特定のフレームに続く前記後続のフレームの数を取得し、前記後続のフレームの数を、各後続のフレームを前記クライアントデバイスに送信した後、前記ビットレートモニタによって動的に更新し、
    前記ビットレートアジャスタは前記ビットレートモニタとインタラクションを行って、前記データを削減する必要のある現在の後続のフレームの数を取得し、前記現在の後続のフレームの数がゼロではない場合、前記エンコーダへの前記第1の信号を開始して、前記クライアントデバイスへの送信のために符号化される前記後続のフレームで前記データを動的に削減する、請求項15に記載のシステム。
  20. 前記負債トラッカが、前記データを動的に削減する必要がある前記現在の後続のフレームの数を追跡するためのフレームカウンタを含む、請求項19に記載のシステム。
  21. 前記フレームカウンタがゼロに達したときに前記ビットレートアジャスタにインジケータを提供するように前記ビットレートモニタがさらに構成され、
    前記ビットレートアジャスタが、前記エンコーダに第2の信号を送信して、前記最大データ制限のデータで前記後続のフレームの符号化を再開するようにさらに構成される、請求項20に記載のシステム。
  22. 前記エンコーダが、
    前記特定のフレームの後に受信された前記1つまたは複数の後続フレームの後続フレームに含まれる前記データの量が、前記削減された最大データ制限を超えているかどうかを判定し、
    前記後続のフレームが前記削減された最大データ制限を超えた場合、前記後続のフレームの前記データを評価して、前記後続のフレームに含まれる画像の構築に重要なデータの部分を識別し、前記フレーム内の前記画像の構築に重要ではない他のデータを破棄することを行うようにさらに構成される、請求項15に記載のシステム。
  23. フレームデータプロセッサをさらに含み、前記フレームデータプロセッサが、
    前記オンラインゲームからデータのフレームを受信し、
    前記フレームに含まれる前記データを分析して、前記フレームに含まれる前記データの複雑さを理解し、かつ、
    前記フレームに含まれる前記データの前記複雑さに関連する情報を前記エンコーダに提供し、前記情報は、前記エンコーダによって、保持する前記フレームのデータの特定の部分と、破棄する前記フレームのデータの他の特定の部分を判定するべく使用されるように構成される、請求項14に記載のシステム。
  24. フレームデータプロセッサをさらに含み、前記フレームデータプロセッサが、
    前記オンラインゲームからデータのフレームを受信し、
    前記フレームに含まれる前記データを分析して、前記フレームに含まれる前記データの複雑さを理解し、かつ、
    前記フレームに含まれる前記データを調整して、前記フレームの複雑さを軽減し、前記調整されたデータのフレームは、符号化のために前記エンコーダに転送されるように構成される、請求項14に記載のシステム。
  25. 前記調整されたデータのフレームが、保持する特定のデータの部分及び破棄する特定の他のデータの部分を判定するために前記エンコーダによって使用される、請求項24に記載のシステム。
  26. 前記最大データ制限は、前記クライアントデバイスと前記サーバとの間に確立された前記通信チャネルの利用可能な帯域幅に基づいて定められる、請求項14に記載のシステム。
  27. オンラインゲーム用に生成されたデータのフレームをサーバデバイスから受信し、前記データのフレームは前記オンラインゲームの現在の状態を表すものであり、
    以前に符号化されたデータのフレームが、前記サーバデバイスとクライアントデバイスとの間で確立された通信チャネルに指定された最大データ制限を超えたかどうかを確認し、
    前記以前に符号化されたフレームが前記最大データ制限を超えたと判定された場合に、前記データのフレームを符号化して符号化されたデータのフレームを生成する前に、前記フレームに含まれるデータの量を、削減された最大データ制限に動的に削減し、かつ、
    前記符号化されたデータのフレームを、前記通信チャネルを介して前記クライアントデバイスに転送する、方法。
  28. 前記確認では、
    前記オンラインゲームの現在のセッションで維持されている負債カウンタに照会して、動的に削減する必要がある前記以前に符号化されたフレームの後に生成されたフレームの数と、前記以前に符号化されたデータのフレームが前記最大データ制限を超えた量とを取得し、かつ、
    動的に削減する必要のある前記フレームの数がゼロではない場合、前記フレームに含まれる前記データの量を動的に削減するため、信号を前記エンコーダに提供する、請求項27に記載の方法。
  29. 動的に削減する必要のある前記フレームの数がゼロである場合、前記最大データ制限で前記データのフレームの符号化を再開するために前記エンコーダに第2のインジケータを提供する、請求項28に記載の方法。
  30. 前記フレームに含まれる前記データの量が、前記削減された最大データ制限を超えることが確認されると、前記フレームに含まれる前記データが動的に削減される、請求項27に記載の方法。
JP2022538289A 2019-12-23 2020-12-11 ストリーミングビデオコンテンツの送信中にスムーズなフレームレートを維持するための方法及びシステム Pending JP2023507817A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/725,726 2019-12-23
US16/725,726 US11882188B2 (en) 2019-12-23 2019-12-23 Methods and systems for maintaining smooth frame rate during transmission of streaming video content
PCT/US2020/064504 WO2021133570A1 (en) 2019-12-23 2020-12-11 Methods and systems for maintaining smooth frame rate during transmission of streaming video content

Publications (1)

Publication Number Publication Date
JP2023507817A true JP2023507817A (ja) 2023-02-27

Family

ID=76438610

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022538289A Pending JP2023507817A (ja) 2019-12-23 2020-12-11 ストリーミングビデオコンテンツの送信中にスムーズなフレームレートを維持するための方法及びシステム

Country Status (5)

Country Link
US (2) US11882188B2 (ja)
EP (1) EP4082215A1 (ja)
JP (1) JP2023507817A (ja)
CN (1) CN114930861A (ja)
WO (1) WO2021133570A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10137361B2 (en) * 2013-06-07 2018-11-27 Sony Interactive Entertainment America Llc Systems and methods for using reduced hops to generate an augmented virtual reality scene within a head mounted system
US20240121406A1 (en) * 2019-10-18 2024-04-11 Immersive Robotics Pty Ltd Content Compression for Network Transmission
US11645766B2 (en) * 2020-05-04 2023-05-09 International Business Machines Corporation Dynamic sampling for object recognition
CN113521729B (zh) * 2021-07-02 2023-10-20 咪咕互动娱乐有限公司 云游戏延迟检测方法、服务器、客户端、系统及介质
CN117062656A (zh) * 2021-08-16 2023-11-14 谷歌有限责任公司 使用共享参考帧的低延迟多遍帧级速率控制
CN117413505A (zh) * 2021-09-29 2024-01-16 科磊股份有限公司 用于制造工具的远程控制的带宽调整
CN115086194B (zh) * 2022-05-20 2024-02-02 阿里巴巴(中国)有限公司 云应用的数据传输方法、计算设备及计算机存储介质
WO2024085665A1 (ko) * 2022-10-20 2024-04-25 삼성전자 주식회사 디스플레이의 동기화를 위한 전자 장치 및 방법
CN116795756B (zh) * 2023-08-28 2023-10-27 成都量芯集成科技有限公司 一种基于串口通讯的帧数据流软件接收方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5926222A (en) * 1995-09-28 1999-07-20 Intel Corporation Bitrate estimator for selecting quantization levels for image encoding
US6141380A (en) 1998-09-18 2000-10-31 Sarnoff Corporation Frame-level rate control for video compression
US9849372B2 (en) * 2012-09-28 2017-12-26 Sony Interactive Entertainment Inc. Method and apparatus for improving efficiency without increasing latency in emulation of a legacy application title
JP4228271B2 (ja) * 2002-07-09 2009-02-25 日本電気株式会社 動画データ圧縮装置,及び動画データ圧縮方法
US8711923B2 (en) * 2002-12-10 2014-04-29 Ol2, Inc. System and method for selecting a video encoding format based on feedback data
US9032465B2 (en) * 2002-12-10 2015-05-12 Ol2, Inc. Method for multicasting views of real-time streaming interactive video
US20090118019A1 (en) * 2002-12-10 2009-05-07 Onlive, Inc. System for streaming databases serving real-time applications used through streaming interactive video
JP4582141B2 (ja) * 2007-11-27 2010-11-17 カシオ計算機株式会社 符号量制御装置、符号量制御方法、符号量制御プログラム、動画記録装置
US11336926B2 (en) * 2007-12-05 2022-05-17 Sony Interactive Entertainment LLC System and method for remote-hosted video game streaming and feedback from client on received frames
US8903897B2 (en) 2011-07-08 2014-12-02 Google Inc. System and method for providing interactive content to non-native application environments
US20150288965A1 (en) 2014-04-08 2015-10-08 Microsoft Corporation Adaptive quantization for video rate control
US10904591B2 (en) * 2016-12-28 2021-01-26 Google Llc Scheme for zero-copy adaptive bitrate video streaming

Also Published As

Publication number Publication date
US20240171637A1 (en) 2024-05-23
US11882188B2 (en) 2024-01-23
EP4082215A1 (en) 2022-11-02
US20210194991A1 (en) 2021-06-24
WO2021133570A1 (en) 2021-07-01
CN114930861A (zh) 2022-08-19

Similar Documents

Publication Publication Date Title
US11623141B2 (en) Cloud game streaming with client side asset integration
US11052313B2 (en) Using connection quality history to optimize user experience
US11882188B2 (en) Methods and systems for maintaining smooth frame rate during transmission of streaming video content
JP7185699B2 (ja) 仮想シーンプリロード方法
US20200206610A1 (en) Methods and Systems for Scheduling Game Play of a Video Game
JP7523435B2 (ja) ピアツーピアストリーミングを使用したクラウドソーシングによるクラウドゲーム
TW201637696A (zh) 經由雲端進行的應用之預測性即時遊玩

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231114