(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-05-01
(54)【発明の名称】ビデオゲームのインスタントプレイのための、ならびにクライアント側でゲームデータを破棄およびプリフェッチするためのファイルシステム読み出し動作の追跡
(51)【国際特許分類】
H04L 67/131 20220101AFI20230424BHJP
A63F 13/352 20140101ALI20230424BHJP
A63F 13/70 20140101ALI20230424BHJP
G06F 8/60 20180101ALI20230424BHJP
H04L 67/5681 20220101ALI20230424BHJP
【FI】
H04L67/131
A63F13/352
A63F13/70
G06F8/60
H04L67/5681
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022555709
(86)(22)【出願日】2021-03-17
(85)【翻訳文提出日】2022-09-14
(86)【国際出願番号】 US2021022815
(87)【国際公開番号】W WO2021188711
(87)【国際公開日】2021-09-23
(32)【優先日】2020-03-17
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】517160525
【氏名又は名称】バルブ コーポレーション
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】グリファイス、ピエール-ループ・ミグエル
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AB08
5B376CA76
(57)【要約】
クライアントマシンは、ゲームセッション中にゲーム実行ファイルによって行われる読み出し動作を追跡することと、追跡した読み出し動作に基づいて、アクセスデータを生成することと、アクセスデータをリモートシステムに報告することと、を行うファイルシステムプロキシコンポーネントを利用し得る。この手法は、リモートシステムが、複数のクライアントマシンによって報告されたアクセスデータを収集することと、クライアントシステム構成に従ってアクセスデータをカタログ化することと、アクセスデータを分析して、クライアントマシンによって使用可能であるデータを生成することと、を行って、ビデオゲームの「インスタントプレイ」、ローカルメモリリソースを解放するためのゲームデータの未使用ブロックの破棄、および/またはゲームプレイ中の待ち時間を低減させるためのゲームデータのローカルプリフェッチング等の様々な特徴の実装を可能にする。
【選択図】
図1
【特許請求の範囲】
【請求項1】
クライアントマシンであって、
1つ以上のプロセッサと、
コンピュータ実行可能命令を記憶する非一時的コンピュータ可読媒体であって、前記命令が、前記1つ以上のプロセッサによって実行されるときに、前記1つ以上のプロセッサに、
前記クライアントマシン上でビデオゲームをプレイするための、前記ビデオゲームのゲーム実行ファイルを実行することと、
前記クライアントマシンのファイルシステムに対して前記ゲーム実行ファイルによって行われた第1の読み出し動作および第2の読み出し動作を決定することであって、前記第1の読み出し動作が、前記ビデオゲームのゲームデータの第1のブロックを読み出すことを要求し、前記第2の読み出し動作が、前記ゲームデータの第2のブロックを読み出すことを要求する、決定することと、
前記読み出し動作に少なくとも部分的に基づいて、アクセスデータを生成することであって、前記アクセスデータが、
前記ゲームデータの前記第1のブロックの第1の識別子、
前記第1の読み出し動作に少なくとも部分的に基づいて前記ゲームデータの前記第1のブロックがアクセスされた、前記ゲーム実行ファイルの実行中の第1の時間、
前記ゲームデータの前記第2のブロックの第2の識別子、および
前記第2の読み出し動作に少なくとも部分的に基づいて前記ゲームデータの前記第2のブロックがアクセスされた、前記ゲーム実行ファイルの前記実行中の第2の時間、を指定する、生成することと、
リモートシステムに、前記アクセスデータ、前記ビデオゲームの識別子、および前記クライアントマシンの構成を送信することと、を行わせる、非一時的コンピュータ可読媒体と、を備える、クライアントマシン。
【請求項2】
前記クライアントマシンの前記構成が、前記クライアントマシンと関連付けられたハードウェア、ソフトウェア、またはファームウェアのタイプ、バージョン、または特性を指定する、請求項1に記載のクライアントマシン。
【請求項3】
不揮発性メモリをさらに備え、前記ビデオゲームが、第1のビデオゲームであり、前記ゲーム実行ファイルが、前記第1のビデオゲームの第1のゲーム実行ファイルであり、前記ゲームデータが、前記第1のビデオゲームの第1のゲームデータであり、前記コンピュータ実行可能命令が、前記1つ以上のプロセッサによって実行されるときに、前記1つ以上のプロセッサに、
第2のビデオゲームを取得する要求を前記リモートシステムに送信することであって、前記要求が、前記クライアントマシンの前記構成を含む、送信することと、
前記リモートシステムから、
前記第2のビデオゲームの第2のゲーム実行ファイル、および
前記クライアントマシンの前記構成と関連付けられたダウンロードシーケンスデータを受信することであって、前記ダウンロードシーケンスデータが、前記第2のビデオゲームの第2のゲームデータのブロックのシーケンスを指定する、受信することと、
前記不揮発性メモリに、前記ダウンロードシーケンスデータにおいて指定された前記シーケンスに従って、前記第2のゲームデータの前記ブロックのダウンロードを開始することと、
前記クライアントマシン上で前記第2のビデオゲームをプレイするための前記第2のゲーム実行ファイルを実行することと、をさらに行わせる、請求項1に記載のクライアントマシン。
【請求項4】
前記コンピュータ実行可能命令が、前記1つ以上のプロセッサによって実行されるときに、前記1つ以上のプロセッサに、
前記ファイルシステムに対して前記第2のゲーム実行ファイルによって行われた第3の読み出し動作を受信することであって、前記第3の読み出し動作が、前記第2のゲームデータのブロックを読み出すことを要求する、受信することと、
前記第2のゲームデータの前記ブロックが前記不揮発性メモリにダウンロードされたと決定することと、
前記ファイルシステムを使用して、前記第2のゲームデータの前記ブロックを読み出すことと、をさらに行わせる、請求項3に記載のクライアントマシン。
【請求項5】
前記コンピュータ実行可能命令が、前記1つ以上のプロセッサによって実行されるときに、前記1つ以上のプロセッサに、
前記ファイルシステムに対して前記第2のゲーム実行ファイルによって行われた第3の読み出し動作を受信することであって、前記第3の読み出し動作が、前記第2のゲームデータのブロックを読み出すことを要求する、受信することと、
前記第2のゲームデータの前記ブロックの前記不揮発性メモリへのダウンロードが完了していないと決定することと、
前記リモートシステムに、前記第2のゲームデータの前記ブロックの第2の要求を送信することと、
前記リモートシステムから、前記第2のゲームデータの前記ブロックを受信することと、
前記ファイルシステムを使用して、前記第2のゲームデータの前記ブロックを読み出すことと、をさらに行わせる、請求項3に記載のクライアントマシン。
【請求項6】
前記ゲームデータを記憶する不揮発性メモリをさらに備え、前記ゲームデータの複数の第1のブロックが、少なくとも前記ゲームデータの前記第1のブロックおよび前記ゲームデータの前記第2のブロックを含み、前記コンピュータ実行可能命令が、前記1つ以上のプロセッサによって実行されるときに、前記1つ以上のプロセッサに、
前記不揮発性メモリから、前記ゲームデータの1つ以上の第2のブロックを削除する命令を、前記リモートシステムから受信することであって、前記ゲームデータの前記1つ以上の第2のブロックが、閾値期間またはゲームセッションの閾値数にわたって前記クライアントマシン上の前記ゲーム実行ファイルによってアクセスされなかった、前記ゲームデータの未使用ブロックを表す、受信することと、
前記不揮発性メモリから、前記ゲームデータの前記1つ以上の第2のブロックを削除することと、をさらに行わせる、請求項1に記載のクライアントマシン。
【請求項7】
第1の速度で読み出しアクセスを提供するように構成された第1のメモリであって、前記ゲームデータを記憶する、第1のメモリと、
前記第1の速度よりも速い第2の速度で読み出しアクセスを提供するように構成された第2のメモリと、をさらに備え、
前記コンピュータ実行可能命令が、前記1つ以上のプロセッサによって実行されるときに、前記1つ以上のプロセッサに、
前記リモートシステムから、前記クライアントマシンの前記構成と関連付けられたブロック依存性データを受信することであって、前記ブロック依存性データが、前記ゲームデータの前記ブロックの2つ以上の間の個々の関連を指定する、受信することと、
イベントを検出することと、
前記第2のメモリに、前記イベントと関連付けられているものとして前記ブロック依存性データに指定される、前記ゲームデータの前記第1のブロックまたは前記ゲームデータの前記2ブロックのうちの少なくとも1つをキャッシュすることと、
前記第1の読み出し動作または前記第2の読み出し動作のうちの少なくとも1つを受信することと、
前記第2のメモリから、前記ゲームデータの前記第1のブロックまたは前記ゲームデータの前記第2のブロックのうちの少なくとも1つを読み出すことと、をさらに行わせる、請求項1に記載のクライアントマシン。
【請求項8】
第1の速度で読み出しアクセスを提供するように構成された第1の不揮発性メモリであって、前記ゲームデータを記憶する、第1の不揮発性メモリと、
前記第1の速度よりも速い第2の速度で読み出しアクセスを提供するように構成された第2の不揮発性メモリと、
前記第2の速度よりも速い第3の速度で読み出しアクセスを提供するように構成された揮発性メモリと、をさらに備え、
前記コンピュータ実行可能命令が、前記1つ以上のプロセッサによって実行されるときに、前記1つ以上のプロセッサに、
前記リモートシステムから、前記クライアントマシンの前記構成と関連付けられたブロック依存性データを受信することであって、前記ブロック依存性データが、前記ゲームデータの前記ブロックの2つ以上の間の個々の関連を指定する、受信することと、
イベントを検出することと、
前記第2の不揮発性メモリに、前記イベントと関連付けられているものとして前記ブロック依存性データに指定される、前記ゲームデータの前記第1のブロックをキャッシュすることと、
前記揮発性メモリに、前記イベントと関連付けられているものとして前記ブロック依存性データに指定される、前記ゲームデータの前記第2のブロックをキャッシュすることと、
前記第1の読み出し動作を受信することと、
前記第2の不揮発性メモリから前記ゲームデータの前記第1のブロックを読み出すことと、
前記第2の読み出し動作を受信することと、
前記揮発性メモリから前記ゲームデータの前記第2のブロックを読み出すことと、をさらに行わせる、請求項1に記載のクライアントマシン。
【請求項9】
方法であって、
クライアントマシンのプロセッサによって、前記クライアントマシン上でビデオゲームをプレイするための前記ビデオゲームのゲーム実行ファイルを実行することと、
前記プロセッサによって、前記クライアントマシンのファイルシステムに対して前記ゲーム実行ファイルによって行われた第1の読み出し動作および第2の読み出し動作を決定することであって、前記第1の読み出し動作が、前記ビデオゲームのゲームデータの第1のブロックを読み出すことを要求し、前記第2の読み出し動作が、前記ゲームデータの前記第2のブロックを読み出すことを要求する、決定することと、
前記プロセッサによって、前記読み出し動作に少なくとも部分的に基づくアクセスデータを生成することであって、前記アクセスデータが、
前記ゲームデータの前記第1のブロックの第1の識別子、
前記第1の読み出し動作に少なくとも部分的に基づいて前記ゲームデータの前記第1のブロックがアクセスされた、前記ゲーム実行ファイルの実行中の第1の時間、
前記ゲームデータの前記第2のブロックの第2の識別子、および
前記第2の読み出し動作に少なくとも部分的に基づいて前記ゲームデータの前記第2のブロックがアクセスされた、前記ゲーム実行ファイルの前記実行中の第2の時間、を指定する、生成することと、
リモートシステムに、前記アクセスデータ、前記ビデオゲームの識別子、および前記クライアントマシンの構成を送信することと、を含む、方法。
【請求項10】
前記ゲームデータの複数の第1のブロックが、少なくとも前記ゲームデータの前記第1のブロックおよび前記ゲームデータの前記第2のブロックを含み、前記方法が、
前記クライアントマシンの不揮発性メモリから、前記ゲームデータの1つ以上の第2のブロックを削除する命令を、前記リモートシステムから受信することであって、前記ゲームデータの前記1つ以上の第2のブロックが、閾値期間またはゲームセッションの閾値数にわたって前記クライアントマシン上の前記ゲーム実行ファイルによってアクセスされなかった前記ゲームデータの未使用ブロックを表す、受信することと、
前記不揮発性メモリから、前記ゲームデータの前記1つ以上の第2のブロックを削除することと、をさらに含む、請求項9に記載の方法。
【請求項11】
前記ビデオゲームが、第1のビデオゲームであり、前記ゲーム実行ファイルが、前記第1のビデオゲームの第1のゲーム実行ファイルであり、前記ゲームデータが、前記第1のビデオゲームの第1のゲームデータであり、前記方法が、
第2のビデオゲームを取得する要求を前記リモートシステムに送信することであって、前記要求が、前記クライアントマシンの前記構成を含む、送信することと、
前記リモートシステムから、
前記第2のビデオゲームの第2のゲーム実行ファイル、および
前記クライアントマシンの前記構成と関連付けられたダウンロードシーケンスデータを受信することであって、前記ダウンロードシーケンスデータが、前記第2のビデオゲームの第2のゲームデータのブロックのシーケンスを指定する、受信することと、
前記クライアントマシンの不揮発性メモリに、前記ダウンロードシーケンスデータに指定された前記シーケンスに従って、前記第2のゲームデータの前記ブロックのダウンロードを開始することと、
前記プロセッサによって、前記クライアントマシン上で前記第2のビデオゲームをプレイするための前記第2のゲーム実行ファイルを実行することと、をさらに含む、請求項9に記載の方法。
【請求項12】
前記プロセッサによって、前記ファイルシステムに対して前記第2のゲーム実行ファイルによって行われた第3の読み出し動作を受信することであって、前記第3の読み出し動作が、前記第2のゲームデータのブロックを読み出すことを要求する、受信することと、
前記第2のゲームデータの前記ブロックが前記不揮発性メモリにダウンロードされたと決定することと、
前記プロセッサによって、前記ファイルシステムを使用して前記第2のゲームデータの前記ブロックを読み出すことと、をさらに含む、請求項11に記載の方法。
【請求項13】
前記プロセッサによって、前記ファイルシステムに対して前記第2のゲーム実行ファイルによって行われた第3の読み出し動作を受信することであって、前記第3の読み出し動作が、前記第2のゲームデータのブロックを読み出すことを要求する、受信することと、
前記第2のゲームデータの前記ブロックが、前記不揮発性メモリへのダウンロードが完了してないと決定することと、
前記リモートシステムに、前記第2のゲームデータの前記ブロックの第2の要求を送信することと、
前記リモートシステムから、前記第2のゲームデータの前記ブロックを受信することと、
前記プロセッサによって、前記ファイルシステムを使用して前記第2のゲームデータの前記ブロックを読み出すことと、をさらに含む、請求項11に記載の方法。
【請求項14】
前記ゲームデータが、前記クライアントマシンの第1のメモリに記憶され、前記第1のメモリが、第1の速度で読み出しアクセスを提供するように構成され、前記方法が、
前記リモートシステムから、前記クライアントマシンの前記構成と関連付けられたブロック依存性データを受信することであって、前記ブロック依存性データが、前記ゲームデータの前記ブロックの2つ以上の間の個々の関連を指定する、受信することと、
前記プロセッサによって、イベントを検出することと、
前記第1の速度よりよりも速い第2の速度で読み出しアクセスを提供するように構成されている前記クライアントマシンの第2のメモリに、前記イベントと関連付けられているものとして前記ブロック依存性データに指定される、前記ゲームデータの前記第1のブロックまたは前記ゲームデータの前記2ブロックのうちの少なくとも1つをキャッシュすることと、
前記プロセッサによって、前記第1の読み出し動作または前記第2の読み出し動作のうちの少なくとも1つを受信することと、
前記プロセッサによって、前記第2のメモリから、前記ゲームデータの前記第1のブロックまたは前記ゲームデータの前記第2のブロックのうちの少なくとも1つを読み出すことと、をさらに含む、請求項9に記載の方法。
【請求項15】
前記イベントを前記検出することが、前記ゲーム実行ファイルが前記ゲームデータの前記第1のブロックを読み出すことを要求したことを検出することを含み、前記キャッシュすることが、前記ゲームデータの前記第2のブロックが前記ゲームデータの前記第1のブロックと関連付けられていると指定する前記ブロック依存性データに少なくとも部分的に基づいて、前記ゲームデータの前記第2のブロックを前記第2のメモリにキャッシュすることを含む、請求項14に記載の方法。
【請求項16】
方法であって、
リモートシステムによって、共通するクライアントシステム構成を有する複数のクライアントマシンから、ビデオゲームと関連するアクセスデータを受信することであって、前記アクセスデータが、前記複数のクライアントマシンのうちの個々のものについて、少なくとも、
個々のクライアントマシン上でのゲーム実行ファイルの実行中に、前記ビデオゲームの前記ゲーム実行ファイルによってアクセスされた、前記ビデオゲームのゲームデータの第1のブロックの第1の識別子、
前記ゲーム実行ファイルによって前記ゲームデータの前記第1のブロックがアクセスされた、前記個々のクライアントマシン上での前記ゲーム実行ファイルの前記実行中の第1の時間、
前記個々のクライアントマシン上での前記ゲーム実行ファイルの前記実行中に、前記ゲーム実行ファイルによってアクセスされた、前記ゲームデータの第2のブロックの第2の識別子、および
前記ゲーム実行ファイルによって前記ゲームデータの前記第2のブロックがアクセスされた、前記個々のクライアントマシン上での前記ゲーム実行ファイルの前記実行中の第2の時間、を指定する、受信することと、
前記アクセスデータを分析することと、
前記リモートシステムのプロセッサによって、および前記アクセスデータを前記分析することに少なくとも部分的に基づいて、データを生成することであって、前記データが、
少なくとも前記ゲームデータの前記第1のブロックおよび前記ゲームデータの前記第2のブロックが、前記クライアントシステム構成を有するクライアントマシンにダウンロードされるシーケンスを指定するダウンロードシーケンスデータ、あるいは
前記ゲームデータの前記第1のブロックと前記ゲームデータの前記第2のブロックとの間の関連、または前記ゲームデータの前記第1のブロックもしくは前記ゲームデータの前記第2のブロックとイベントとの間の関連、を指定するブロック依存性データのうちの少なくとも1つを含む、生成することと、
前記リモートシステムによって、前記データを、前記クライアントシステム構成を有する1つ以上のクライアントマシンに送信することと、を含む、方法。
【請求項17】
前記データが、前記ダウンロードシーケンスデータを含み、前記方法が、
前記リモートシステムによって、および前記クライアントシステム構成を有するクライアントマシンから、前記ビデオゲームを取得する要求を受信することと、
前記リモートシステムによって、前記ビデオゲームの前記ゲーム実行ファイルを前記クライアントマシンに送信することと、
前記クライアントマシンに、前記ダウンロードシーケンスデータに指定された前記シーケンスに従って、少なくとも前記ゲームデータの前記第1のブロックおよび前記ゲームデータの前記第2のブロックをダウンロードすることと、さらに含む、請求項16に記載の方法。
【請求項18】
前記データが、前記ダウンロードシーケンスデータを含み、前記アクセスデータを前記分析することが、
前記ゲームデータの前記第1のブロックと関連付けられた第1の統計および前記ゲームデータの前記第2のブロックと関連付けられた第2の統計を計算することと、
前記第1の統計および前記第2の統計に少なくとも部分的に基づいて、前記シーケンスを決定することと、を含む、請求項16に記載の方法。
【請求項19】
前記データが、前記ブロック依存性データを含み、前記アクセスデータを前記分析することが、
前記ゲームデータの前記第1のブロックと前記ゲームデータの前記第2のブロックとの間の関連を決定すること、または
コンテキストキューと、前記ゲームデータの前記第1のブロックもしくは前記ゲームデータの前記第2のブロックのうちの少なくとも1つとの間の関連を決定すること、のうちの少なくとも1つを含む、請求項16に記載の方法。
【請求項20】
前記複数のクライアントマシンのうちの1つから受信した前記アクセスデータに少なくとも部分的に基づいて、前記ゲームデータの1つ以上のブロックが、閾値期間またはゲームセッションの閾値数にわたって前記複数のクライアントマシンのうちの前記1つ上の前記ゲーム実行ファイルによってアクセスされなかったと決定することと、
前記複数のクライアントマシンのうちの前記1つの不揮発性メモリから、前記ゲームデータの前記1つ以上のブロックを削除する命令を、前記リモートシステムによって、前記複数のクライアントマシンのうちの前記1つに送信することと、をさらに含む、請求項16に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本明細書は、2020年3月17日に出願された「TRACKING FILE SYSTEM READ OPERATIONS FOR INSTANT PLAY OF VIDEO GAMES」と題された米国特許出願第16/821,716号に対する優先権を主張するPCT出願であり、その全容は参照により本明細書に組み込まれる。
【背景技術】
【0002】
パーソナルコンピュータ(PC)ビデオゲームを配信するためのサービスは、ネットワークアクセス可能なコンピューティングプラットフォームを利用して、ビデオゲームのデジタルコピーをPCに配信し得る。例えば、ユーザは、配信サービスを介して利用可能となるビデオゲームを購入することができ、このビデオゲームは、インターネットを通じてリモートコンピューティングシステムからユーザのPCにダウンロードすることができる。今日のビデオゲームの多くは比較的大きく、その結果、ビデオゲームをダウンロードするために相当長い時間がかかり得、また、ビデオゲームは、ユーザのPCにダウンロードされると、そのすべてのゲームデータを記憶するために、PC上のディスクストレージの相当な容量を使用し得る。例えば、ビデオゲームは、100ギガバイト(GB)を超えるゲームデータを含み得、これは、ユーザのネットワーク接続のダウンロード速度に応じて、既存の技術を使用してダウンロードするには数時間かかり得る。ビデオゲームの開発者が、ゲームデータのすべてではなく一部がPCにダウンロードされた状態でビデオゲームをプレイ可能とするような方法でゲームコードを書いていない限り、ユーザは、ゲームのダウンロードが完了するまでゲームのプレイを待機しなければならない。さらに、大部分のゲームは非常に大きいので、ユーザは、しばしば、PCに最も多くの記憶空間を提供するハードディスクドライブ(HDD)にゲームを記憶することを選択する。しかしながら、大容量HDDの現在の有用性にもかかわらず、ローカル記憶容量は、依然として制限されており、HDDは、比較的遅い読み出しアクセス速度を提供するので、ゲームセッション中にPCがHDDからゲームデータをロードするときに待ち時間が生じ得る。
【0003】
本明細書では、これらのシステムおよび他のシステムを改善および強化するための技術的解決法を提供する。
【図面の簡単な説明】
【0004】
添付の各図を参照して、詳細な説明が記載される。各図において、参照番号の左端数字は、参照番号が最初に現れる図を識別する。異なる図における同じ参照番号の使用は、類似または同一の構成要素または特徴を示す。
【0005】
【
図1】本明細書で説明される技術を実装するように構成されたビデオゲーム配信プラットフォームを含む、例示的な環境を例示する図である。
【
図2】ファイルシステム読み出し動作を追跡してアクセスデータを生成するための、およびアクセスデータをリモートシステムに送信するための、クライアントマシンの例示的なコンポーネントを例示するブロック図および例示的なプロセスのフロー図を示す。
【
図3】クライアントマシンからアクセスデータを受容するための、および1人以上のユーザにわたってアクセスデータを分析するための、本明細書で説明される技術を実装するためのリモートシステムの例示的なコンポーネントを例示するブロック図および例示的なプロセスのフロー図を示す。
【
図4】複数のクライアントマシンから受信したアクセスデータに基づいて、特定のブロックのシーケンスでゲームデータのブロックをダウンロードするためにクライアントマシンが使用するダウンロードシーケンスデータを生成するための例示的なプロセスのフロー図である。
【
図5】ゲームデータのブロックをプリフェッチしてゲームプレイ中の待ち時間を低減させるために、複数のクライアントマシンから受信したアクセスデータに基づいて、クライアントマシンが使用するブロック依存性データを生成するための例示的なプロセスのフロー図である。
【
図6】クライアントマシンから受信したアクセスデータに基づいて、ゲームデータの未使用ブロックを決定するための、およびクライアントマシンに、ゲームデータの未使用ブロックを破棄することを指示するための例示的なプロセスのフロー図である。
【
図7】クライアントマシンの不揮発性メモリから未使用のゲームデータのブロックを破棄するための例示的なプロセスのフロー図である。
【
図8】ゲームのダウンロードが完了する前に、クライアントマシン上でビデオゲームを実行するための例示的なプロセスのフロー図である。
【
図9】ゲームデータのブロックをプリフェッチしてゲームプレイ中の待ち時間を低減させるための例示的なプロセスのフロー図である。
【発明を実施するための形態】
【0006】
ビデオゲーム配信プラットフォームは、ユーザが、ビデオゲームを取得すること、ビデオゲームのデジタルコピーをそれぞれのユーザのクライアントマシンにダウンロードすること、およびインストールされたクライアントアプリケーションを使用してビデオゲームを実行することを可能にし得る。ユーザが自分のクライアントマシン上でビデオゲームをプレイするときに、各クライアントマシン上で動作しているビデオゲームのゲーム実行ファイルは、クライアントマシンのファイルシステムを使用して、ビデオゲームのゲームデータのブロックを読み出すことを連続的に要求し得る。本明細書で使用されるとき、「ゲーム実行ファイル」とは、ビデオゲームの実行コード(例えば、1つ以上の実行可能ファイル)を意味し、この実行コードは、実行されるときに、クライアントマシンの入力デバイスを介して提供されたユーザ入力に基づいて、フレームをレンダリングすることによって、ユーザが、クライアントマシン上でビデオゲームをプレイすることを可能にする。本明細書で使用されるとき、「ゲームデータ」とは、一連のフレームを通じてビデオゲームのゲーム実行ファイルの実行中にゲーム実行ファイルによって読み出されるデータを意味する。ゲームデータは、とりわけ、ビデオゲームのグラフィックスをレンダリングする、ゲームプレイロジックを計算する、および/またはビデオゲームの物理的特性を計算するために使用することができる。ゲームデータの例としては、テクスチャ、仮想オブジェクト、マップ、ゲームキャラクタ、仮想オブジェクトのパラメータおよび他の特徴、ならびに/または仮想ゲームワールド、などが挙げられるが、これらに限定されない。そのようなゲームデータは、ゲームデータをいくつかのブロック(例えば、一様にサイズ決定されたブロック)に分割することによってメモリに記憶することができ、クライアントマシンのファイルシステムは、どのようにゲームデータのこれらのブロックがクライアントマシンのローカルメモリに記憶されるのか、およびそこから検索されるのかを制御するように構成されている。ビデオゲームがクライアントマシン上でプレイされるときに、ビデオゲームのゲーム実行ファイルによって行われる、ゲームデータのブロックの読み出しの各要求は、本明細書において「読み出し動作」と称される。したがって、ビデオゲームのゲーム実行ファイルは、ゲームセッションの全体にわたって、ファイルシステムに対する一連の読み出し動作を行うことができる。
【0007】
本明細書で説明される技術、デバイス、およびシステムは、クライアントマシンのファイルシステムプロキシコンポーネントを使用して、ゲームセッション中にビデオゲームのゲーム実行ファイルによって行われる読み出し動作を追跡し、追跡した読み出し動作に基づいて、アクセスデータを生成して、アクセスデータをリモートシステムに報告することに関する。クライアントマシンによって実装される例示的なプロセスは、クライアントマシン上でビデオゲームをプレイするためのビデオゲームのゲーム実行ファイルを実行することと、クライアントマシンのファイルシステムに対してゲーム実行ファイルによって行われた読み出し動作を決定することと、読み出し動作に少なくとも部分的に基づいて、アクセスデータを生成することと、リモートシステムに、アクセスデータ、ビデオゲームの識別子、およびクライアントマシンの構成を送信することと、を含み得る。ゲーム実行ファイルによって行われる読み出し動作は、ビデオゲームのゲームデータのブロックを読み出すことを要求し得る。したがって、クライアントマシンによって生成されたアクセスデータは、(i)ゲームセッション中にアクセスされたゲームデータのブロックの識別子、および(ii)読み出し動作に少なくとも部分的に基づいてゲームデータのブロックがアクセスされた、ゲーム実行ファイルの実行中の時間を指定し得る。
【0008】
このテレメトリ手法は、リモートシステムが、複数のクライアントマシンによって報告されたアクセスデータを収集すること、クライアントシステム構成に従ってアクセスデータをカタログ化すること、およびアクセスデータを分析して、ビデオゲームの「インスタントプレイ」、ローカルメモリリソースを解放するためのゲームデータの未使用ブロックの破棄、および/またはゲームプレイ中の待ち時間を低減させるためのゲームデータのローカルプリフェッチングが挙げられるが、これらに限定されない、様々なゲーム関連の特徴を実装するためにクライアントマシンによって使用可能であるデータを生成すること、を可能にする。リモートシステムによって実装される例示的なプロセスは、共通するクライアントシステム構成を有する複数のクライアントマシンから、ビデオゲームと関連するアクセスデータを受信することと、アクセスデータを分析することと、アクセスデータを分析することに少なくとも部分的に基づいて、データを生成することと、クライアントシステム構成を有する1つ以上のクライアントマシンにデータを送信することと、を含み得る。リモートシステムによって受信したアクセスデータは、個々のクライアントマシンについて、(i)個々のクライアントマシン上でのゲーム実行ファイルの実行中にビデオゲームのゲーム実行ファイルによってアクセスされた、ビデオゲームのゲームデータのブロックの識別子、および(ii)ゲームデータのブロックがゲーム実行ファイルによってアクセスされた、ゲーム実行ファイルの実行中の時間を指定し得る。さらに、アクセスデータを分析することに少なくとも部分的に基づいて、リモートシステムによって生成されたデータは、(i)ゲームデータのブロックの少なくとも一部がクライアントシステム構成を有するクライアントマシンにダウンロードされるシーケンスを指定するダウンロードシーケンスデータ、または、(ii)ゲームデータの2つ以上のブロックの間の個々の関連を指定するブロック依存性データ、のうちの少なくとも1つを含み得る。
【0009】
言及されるように、有効にすることができる1つの例示的なゲーム関連の特徴は、「インスタントプレイ」特徴である。本明細書で説明されるインスタントプレイ特徴は、ビデオゲームを取得するユーザが、ビデオゲームを取得することに応じて、かつユーザのクライアントマシンへのゲームデータのダウンロードが完了する前に、ビデオゲームのプレイを開始することを可能にすることができる。したがって、ユーザは、ビデオゲームのゲームセッションを開始する前に、ビデオゲームのダウンロードが完了するまで待機する必要はない。インスタントプレイ特徴を有効にするために、リモートシステムは、複数のクライアントマシンから、特定のビデオゲームに関する(本明細書で説明されるような)アクセスデータを受信し得、リモートシステムは、アクセスデータに基づいて、ビデオゲームのゲームデータのブロックのシーケンスを指定するダウンロードシーケンスデータを生成し得る。このシーケンスは、最初にアクセスされる可能性がより高いブロックをシーケンスの始めの方に位置付け、最初にアクセスされる可能性が低いブロックをシーケンスの終わりの方に位置付け得る。このようにして、ゲームデータのブロックがクライアントマシンへのダウンロードを開始するときに、ゲームセッション中に初期にアクセスされる可能性が低いゲームデータの他のブロックをダウンロードする前に、ゲームセッション中に初期にアクセスされる可能性が最も高いゲームデータのブロックが、クライアントマシンの不揮発性メモリに記憶される。これは、ゲームデータのブロックがまだクライアントマシンの不揮発性メモリにダウンロードされている間であっても、ビデオゲームを取得することに応じて、ユーザがビデオゲームのプレイを開始することができることを可能にする。実際には、本明細書で説明される技術およびシステムは、ゲームデータの第1のブロックがユーザのクライアントマシンへのダウンロードを完了する前であっても、ユーザが、ビデオゲームのプレイを開始することを可能にする。これは、クライアントマシン上でファイルシステムプロキシコンポーネントを使用することによって少なくとも部分的に有効にされ、このコンポーネントは、ゲーム実行ファイルによって行われる読み出し動作を受信するように、および要求されたゲームデータのブロックが不揮発性メモリにダウンロードされたかどうか、またはブロックがまだダウンロードを完了する必要があるかどうかを決定するように構成される。ブロックが不揮発性メモリ内に「実現される」場合、これは、不揮発性メモリへのゲームデータのブロックのダウンロードが完了したことを意味し、ゲーム実行ファイルは、ファイルシステムを使用してゲームデータのブロックを読み出すことができる。ブロックが不揮発性メモリへのダウンロードを完了していなかった場合、ファイルシステムプロキシコンポーネントは、読み出し動作を遮断し得、リモートシステムから、ゲームデータの未実現ブロックを要求し得、リモートシステムからブロックを受信することに応じて、ファイルシステムを使用してブロックを読み出すことができる。ゲームデータの未実現ブロックがリモートシステムから検索されている間、ビデオゲームの実行において短い中断が存在し得るが、ビデオゲームの取得に応じてゲームデータのダウンロードが開始すると仮定すれば、また、ゲームデータのブロックが、ゲームセッション中に、ゲーム実行ファイルがデータのブロックにアクセスするシーケンスと整列するシーケンスでダウンロードされると仮定すれば、これが頻繁に生じる可能性は低いか、または全くない。
【0010】
有効にすることができる別の例示的なゲーム関連の特徴は、ゲームデータの未使用ブロックを破棄することによって、クライアントマシン上のローカルメモリリソースを解放することである。クライアントマシンは、ローカルメモリリソースを解放することによって、他のビデオゲームのゲームデータおよび/または他のデータ全般に利用することができる、貴重な記憶容量を再利用することができる。クライアント側のゲームデータの破棄を有効にするために、クライアントマシン-ビデオゲームのゲームデータが不揮発性メモリに記憶されている-は、ビデオゲームのゲーム実行ファイルを実行し得、また、クライアントマシンのファイルシステムに対してゲーム実行ファイルによって読み出し動作が行われたときに、1つ以上のゲームセッションを通じてアクセスデータを生成し得る。このアクセスデータは、1つ以上のゲームセッションにわたってアクセスされたゲームデータのブロックの第1のサブセット、ならびにゲームセッション中にこれらのブロックがアクセスされた時間を指定し得る。リモートシステムは、クライアントマシンからアクセスデータを受信し得、リモートシステムは、アクセスデータに基づいて、ゲームデータの1つ以上の第2のブロックを決定し得、この第2のブロックは、少なくとも閾値期間またはゲームセッションの閾値数にわたって、クライアントマシン上のゲーム実行ファイルによってアクセスされなかったブロックに基づいて、「未使用」ブロックとして分類することができる。この場合、リモートシステムは、不揮発性メモリからゲームデータの1つ以上の第2のブロックを削除することをクライアントマシンに指示する命令をクライアントマシンに送信し得る。クライアントマシンが不揮発性メモリからこれらの未使用ブロックを削除した場合、クライアントマシン上の記憶容量を増加させることができる。さらに、ゲーム実行ファイルが、削除されたゲームデータのブロックを読み出すことを要求するものであった場合、クライアントマシンのファイルシステムプロキシコンポーネントは、オンデマンドの様式でリモートシステムからゲームデータのブロックを要求することができ、ローカルメモリ上にブロックを記憶することと比較して、いくらかの追加的な待ち時間を伴う。
【0011】
有効にすることができる別の例示的なゲーム関連の特徴は、ゲームセッション中にゲームデータをロードするときの待ち時間を減少させるために、ゲームデータのブロックをローカルプリフェッチすることである。ローカルプリフェッチング特徴を有効にするために、リモートシステムは、複数のクライアントマシンから、特定のビデオゲームに関する(本明細書で説明されるような)アクセスデータを受信し得、リモートシステムは、アクセスデータに基づいて、ゲームデータの2つ以上のブロックの間の個々の関連を指定するブロック依存性データを生成し得る。例えば、ブロック依存性データは、ゲームセッション中にゲームデータの第1のブロックがアクセスされたときは常に、典型的にはゲームデータの第2のブロックが閾値期間内にアクセスされることを示し得る。このようにして、ブロック依存性データは、リモートシステムで受信したアクセスデータに示されるアクセスパターンに基づいて、2つ以上のブロックのセットのブロック間の関係を説明し得る。リモートシステムは、ブロック依存性データを、ビデオゲームがインストールされたクライアントマシンに送信することができ、クライアントマシンがビデオゲームのゲーム実行ファイルを実行したときに、クライアントマシンは、ゲームデータが持続的に記憶されるメモリ(例えば、HDD、SDカードなどの不揮発性メモリなど)よりも速い読み出しアクセス速度を提供するローカルメモリにブロックをキャッシュすることによって、ゲームデータのブロックをプリフェッチすることができる。このローカルプリフェッチングは、ゲーム実行ファイルがゲームデータのブロックを読み出すことを要求するときのロード時間の待ち時間を低減させることができる。
【0012】
本明細書で説明される技術およびシステムは、ゲーム開発者が今日のビデオゲームを作製する方法を変更する必要なく、クライアントマシンのゲームプレイ機能を向上させ得る。例えば、本明細書で説明されるファイルシステムプロキシコンポーネントなどのクライアント側コンポーネントを実装することは、クライアントマシンのユーザが、ビデオゲームを取得することに応じて、ビデオゲームをプレイすることを可能にし、これは、ユーザが、ゲームセッションを開始する前に、ゲームのダウンロードを(潜在的に数時間)待機する必要がないことを意味する。また、シーケンスの開始時に最初にアクセスされる可能性が最も高いブロックを位置決めするブロックのシーケンスで、ゲームデータをインテリジェントにダウンロードすることも可能にし、これは、ゲームデータのダウンロードが進行中である間の、ゲームプレイ中の待ち時間を低減させることを補助する。クライアントマシンのゲームプレイ機能は、追加的にまたは代替的に、ブロック依存性データに従ってゲームセッション中にゲームデータをプリフェッチすることによって改善され得る。これは、クライアントマシンが、ビデオゲームのゲーム実行ファイルによって行われる一連の読み出し動作において次にアクセスされる可能性が高いゲームデータのブロックがどれなのかを予測することができるからであり、そうしたブロックは、ゲームデータが残存している不揮発性メモリよりも速い読み出しアクセス速度を提供するローカルメモリ(例えば、ランダムアクセスメモリ(RAM)などの揮発性メモリ)にキャッシュすることができる。これは、ビデオゲームがゲームデータを要求したときに高速アクセスするゲームデータを「プライミング」する。
【0013】
本明細書で説明される技術およびシステムは、追加的にまたは代替的に、少なくともメモリリソースに関して、1つ以上のデバイスがリソースを節約することを可能にし得る。例えば、ゲームデータの未使用ブロックを決定するために1つ以上のクライアントマシンによって生成されたアクセスデータを使用すること、およびゲームデータの未使用ブロックを削除することで、クライアントマシン上のローカルメモリリソースを解放することができる。例えば、クライアントマシンおよび/またはリモートシステムが、追跡されたファイルシステム読み出し動作に関連するアクセスデータから、ユーザがこれまでゲームをシングルプレイヤーモードでプレイしたことがなく、常にマルチプレイヤーモードでゲームをプレイしていると決定した場合、少なくとも閾値期間またはゲームセッションの閾値数にわたってブロックが使用されなかったという決定に基づいて、ビデオゲームのシングルプレイヤーゲームデータをクライアントマシンの不揮発性メモリから削除することができる。
【0014】
図1は、本明細書で説明される技術を実装するように構成されたビデオゲーム配信プラットフォームを含む、例示的な環境100を例示する図である。コミュニティのユーザ102(「顧客」と称されることもある)は、1つ以上のクライアントマシン104と関連付けられ得る。したがって、
図1に示されるクライアントマシン104(1)~(N)は、ビデオゲームなどのプログラムを実行するためにユーザコミュニティ(または顧客ベース)によって利用することができるコンピューティングデバイスを表す。クライアントマシン104は、PC、デスクトップコンピュータ、ラップトップコンピュータ、携帯電話(例えば、スマートフォン)、タブレットコンピュータ、ポータブルデジタルアシスタント(PDA)、ウェアラブルコンピュータ(例えば、仮想現実(VR)ヘッドセット、拡張現実(AR)ヘッドセット、スマートメガネ、など)、車両内(例えば、自動車内)コンピュータ、テレビ(スマートテレビ)、セットトップボックス(STB)、ゲームコンソール、および/または任意の同様のコンピューティングデバイスが挙げられるが、これらに限定されない、グラフィックスを処理して関連するディスプレイ上にレンダリングするように、およびネットワークを通じてデータを送信/受信するように構成された、任意の適切なタイプのコンピューティングデバイスとして実装することができる。
【0015】
クライアントマシン104の構成は、変化し得る。例えば、クライアントマシン104のサブセットは、それぞれが、特定のタイプ、バージョン、もしくは特性のハードウェア(例えば、中央処理ユニット(CPU)モデル、グラフィックス処理ユニット(GPU)モデル、など)、ならびに/または特定のタイプ、バージョン、もしくは特性のファームウェアおよび/もしくはソフトウェア(例えば、あるバージョンのグラフィックスドライバ、インストールスクリプトに使用するためのダウンロード可能なコンテンツ(DLC)パッケージ、ビデオゲームクライアントが動作している言語、など)を使用し得る。これらのおよび他の態様のクライアントマシン104のハードウェア、ファームウェア、および/またはソフトウェアは、クライアントマシン104の「構成」を構成し、本明細書で使用されるとき、「クライアントシステム構成」と称されることもあり、また、これらは、ビデオゲームの(データのブロックに分割された)ゲームデータをビデオゲーム配信プラットフォームにダウンロードするために使用される有限セットのデポを表し得る。したがって、クライアントマシン104のサブセットは、共通のクライアントシステム構成を共有し得、クライアントシステム構成は、クライアントマシン104のこれらのサブセットの間で異なり得る。クライアントシステム構成の点で異なるクライアントマシン104は、同じビデオゲームの場合であっても、ゲームデータのブロックを異なってダウンロード、記憶、および/またはアクセスし得る。一対のクライアントマシン104が、共通のクライアントシステム構成を有しているかどうかを決定することは、マシン104が、共通のタイプの閾値数、バージョン、またはハードウェア、ソフトウェア、もしくはファームウェアの特性を共有することに基づき得る。例えば、2つのクライアントマシン104が、インストールスクリプトについて少なくとも同じDLCパッケージを使用する場合、これらのマシンは、他の態様がいくらか異なる(例えば、GPUモデルが異なる、など)にも関わらず、同じクライアントシステム構成を有するとみなされ得る。
【0016】
図1を再度参照すると、クライアントマシン104は、コンピュータネットワーク108を通じてリモートコンピューティングシステム106(「リモートシステム106」と短縮されることもある)と通信し得る。このコンピュータネットワーク108は、インターネット、他のタイプのデータおよび/もしくは音声ネットワーク、有線インフラストラクチャ(例えば、同軸ケーブル、光ファイバケーブル、など)、無線インフラストラクチャ(例えば、ラジオ周波数(RF)、セルラ、衛星、など)、ならびに/または他の接続技術を表し得る、および/または含み得るが、これらに限定されない。リモートシステム106は、場合によっては、コンピュータネットワーク108を介して維持およびアクセスされるネットワークアクセス可能なコンピューティングプラットフォームの一部であってもよい。このようなネットワークアクセス可能コンピューティングプラットフォームは、「オンデマンドコンピューティング」、「サービスとしてのソフトウェア(SaaS)」、「プラットフォームコンピューティング」、「ネットワークアクセス可能プラットフォーム」、「クラウドサービス」、「データセンタ」などの用語を使用して言及される場合がある。一般に、リモートシステム106は、クライアントマシン104からアクセスデータ110を収集するように構成され、また、データストア112内で受信するアクセスデータ110をカタログ化する(例えば、系統化する、カテゴリ化する、分類する、など)ように構成される。リモートシステム106はまた、アクセスデータ110を分析して、本明細書で説明される様々なゲーム関連の特徴を実装するためにクライアントマシン104によって使用可能であるデータを生成するように構成され得る。例えば、本明細書で説明されるように、リモートシステム106は、ダウンロードシーケンスデータ114および/またはブロック依存性データ116を生成するように構成され得、リモートシステム106は、このデータをクライアントマシン104に配信し得る。リモートシステム106は、追加的にまたは代替的に、アクセスデータ110を分析して、1つ以上のクライアントマシン104上のゲームデータの未使用ブロックを決定するように構成され得、また、クライアントマシン104上のローカルメモリリソースを解放するために、クライアントマシン104に、ゲームデータの未使用ブロックを削除する命令118を送信し得る。
【0017】
いくつかの実施形態では、リモートシステム106は、プログラム(および、データ)をクライアントマシン104に配信する(例えば、ダウンロードする)配信サービスとして作用するか、またはそこにアクセスする。一実施例では、クライアントマシン104は、クライアントアプリケーションをインストールし得る。ビデオゲームクライアント(例えば、ビデオゲームをプレイするためのゲームソフトウェア)であり得るクライアントアプリケーションは、クライアントアプリケーションがインストールされるクライアントマシン104上で、ビデオゲームなどのプログラムを実行するように構成され得る。クライアントアプリケーションがインストールされた状態で、クライアントマシン104は、次いで、コンピュータネットワーク108を通じて、リモートシステム106からプログラム(例えば、ビデオゲーム)をダウンロードする能力を有し得る。この目的のために、プログラム(例えば、ビデオゲーム)をクライアントマシン104にダウンロードして実行するために個々に購入可能である直接購入モデル、サブスクリプションに基づくモデル、プログラムがある期間にわたってレンタルまたはリースされるコンテンツ配信モデルなどの任意のタイプのコンテンツ配信モデル利用することができる。したがって、個々のクライアントマシン104は、クライアントアプリケーションをロードすることによって実行可能である1つ以上のインストールされたビデオゲームを含み得、これらのビデオゲームは、実行中にディスプレイ上にグラフィックスをレンダリングし得る。一実施例では、ユーザ102は、ビデオゲームクライアントをロードし、所望のビデオゲームを選択して、ビデオゲームの実行を開始することなどによって、自分がリモートシステム106から取得(例えば、購入、レンタル、リース、など)してダウンロードした複数のビデオゲームのうちの1つをプレイすることを選択し得る。
【0018】
ユーザ102の何人かが、リモートシステム106によってこれらのユーザ102に対して利用可能にされているビデオゲームをプレイする、
図1の例について考える。ユーザ102のそれぞれのクライアントマシン104上でビデオゲームがプレイされるときに、各クライアントマシン104上で動作するゲーム実行ファイルは、ビデオゲームのゲームデータのブロックを読み出す要求をファイルシステムに対して連続的に行い得る。ゲーム実行ファイルによって行われる読み出し動作は、クライアントマシン104のファイルシステムプロキシコンポーネントによって追跡されて、アクセスデータ110を生成し得る。例えば、クライアントマシン104(1)上で動作するゲーム実行ファイルは、ハードディスクドライブ(HDD)のセクタから、またはクライアントマシン104(1)に取り外し可能に結合されているセキュアデジタル(SD)カードのセクタからゲームデータのブロックを読み出すことなどによって、ゲーム実行中に、クライアントマシン104(1)の1つ以上のローカルメモリリソースからゲームデータのブロックを読み出す要求をクライアントマシン104(1)のファイルシステムに対して発行することができる。したがって、クライアントマシン104(1)上で実行するビデオゲームのゲーム実行ファイルは、ゲームセッションの全体にわたって、ファイルシステムに対する一連の読み出し動作を行うことができ、クライアントマシン104(1)のファイルシステムプロキシコンポーネントは、読み出し動作を追跡して、アクセスデータ110を生成することができる。
【0019】
アクセスデータ110は、(i)ビデオゲームのアクセスされたゲームデータのブロック(例えば、ゲームセッション中にゲーム実行ファイルによってアクセスされたブロック)を識別するブロック識別子、ならびに(ii)ゲーム実行ファイルの実行中に、アクセスされたゲームデータのブロックが、読み出し動作を行うゲーム実行ファイルによってアクセスされた時間、を指定し得る。言及されるように、ビデオゲームのゲームデータは、テクスチャ、仮想オブジェクト、マップ、ゲームキャラクタ、などを含み得る。いくつかの実施形態では、ゲームデータは、不揮発性メモリのセクタ(例えば、HDD、SDカード、などのセクタ)全体にわたって記憶されて、セクタ内のゲームデータのブロックに系統化され得る。ブロックを使用することは、ファイルシステム内の連続的な記憶空間を使用してあらゆるファイルを記憶する必要性を回避しながら、異なるサイズのファイルを扱う柔軟な方法である。ゲームデータの各ブロックは、ブロック識別子(例えば、数字)を使用して参照および/または位置特定され得る。一般に、クライアントマシン104の1つ以上のプロセッサは、1つ以上のデバイスドライバによって指示されたときに、読み出し、書き込み、および/または他の記憶動作を行い得る。いくつかの実施形態では、クライアントマシン104は、ゲームプレイ中にゲーム実行ファイルによって行われた読み出し動作に基づいて、どのブロックがアクセスされたか、どこから(例えば、どのセクタが)アクセスされたかを決定するために、ゲームデータのブロックと不揮発性メモリのセクタとの間のマッピングを作成し得る。例えば、ゲーム実行ファイルが読み出し動作を行って、不揮発性メモリの第1のセクタに記憶されたゲームデータにアクセスする場合、第1のセクタに記憶されたゲームデータの特定のブロックの識別子が、アクセスデータ110に指定され得る。さらに、アクセスデータ110に指定されたアクセス時間は、ゲームセッション中にブロックがアクセスされた順序(またはシーケンス)(例えば、ブロックAが最初にアクセスされ、その後にブロックDが続き、その後にブロックFが続く、など)、ならびにアクセスの相対的時間(例えば、ゲームセッションに入って4分、ゲームセッションに入って9分、ゲームセッションに入って1時間、など)を決定することを可能にし得る。
【0020】
リモートシステム106が受信したアクセスデータ110は、一意のクライアントシステム構成に従って、および/または対応するビデオゲームのビデオゲームIDに従って、データストア112にカタログ化され得る。アクセスデータ110は、追加的に、アクセスデータ110を送信したクライアントマシン104上で実行するビデオゲームクライアントにログインしたユーザのユーザアカウントと関連付けて記憶され得る。
図1は、クライアントマシン104から受信するアクセスデータ110を記憶、カタログ化、または別様に系統化するための、リモートシステム106によって維持されるデータストア112を示す。データストア112は、アクセスデータ110を、各々がクライアントシステム構成およびビデオゲームIDの一意の組み合わせと関連付けられるグループ(またはバケット)に系統化し得る。換言すれば、データストア112のアクセスデータ110の各バケットは、本明細書で説明されるように、特定のプログラム(例えば、ビデオゲーム)に、および特定のクライアントシステム構成に結び付けられ得る。
【0021】
図1は、ビデオゲームをリモートシステム106から取得(例えば、購入、レンタル、リース、など)する要求120を送信するクライアントマシン104(N)を示す。例えば、インストールされたビデオゲームクライアントを介して自分のユーザアカウントにログインするクライアントマシン104(N)のユーザは、リモートシステム106を介してトランザクションを行って、ビデオゲームを購入し得る。要求120に応答して、クライアントマシン104(N)は、リモートシステム106から、ビデオゲームのゲーム実行ファイル122を受信し得、クライアントマシン104はまた、取得したビデオゲームの、およびクライアントマシン104の特定のクライアントシステム構成のダウンロードシーケンスデータ114および/またはブロック依存性データ116を受信し得る。したがって、要求120は、クライアントマシン104(N)の構成を含み得、この構成は、その特定のクライアントシステム構成に利用可能であり得るダウンロードシーケンスデータ114およびブロック依存性データ116を探すように、リモートシステム106に伝えることを理解されたい。
【0022】
図1はまた、ダウンロードシーケンスデータ114に指定されたブロックのシーケンスに従って、取得したビデオゲームのゲームデータ126のブロック124のダウンロードを開始するリモートシステム106も描写する。
図1は、第1のブロック124(1)がダウンロードされ、その後に第2のブロック124(2)が続き、その後に第3のブロック124(3)が続く、などの場合の一例を示す。
図1には、クライアントマシン104(N)にダウンロードされるものとして、3つのブロック124が描写されているが、ダウンロードシーケンスは、ブロック124(3)の後にダウンロードされる追加的なブロックを含む、任意の数のブロック124を含み得ることを理解されたい。クライアントマシン104(N)は、ブロック124を、HDD、SDカードなどの、クライアントマシン104(N)の不揮発性メモリにダウンロードし得る。
【0023】
図1に示されるように、クライアントマシン104(N)は、インスタントプレイ128特徴を実装し得、その場合、クライアントマシン104(N)は、ゲームデータ126のブロック124のダウンロード前またはその間に、取得したビデオゲームのゲーム実行ファイル122の実行を開始し得る。例えば、クライアントマシン104(N)は、ゲームデータの第1のブロック124(1)がダウンロードされる前であっても、ゲーム実行ファイル122の実行を開始し得る。ゲーム実行ファイル122は、ユーザがマウスおよび/またはキーボード、ゲームコントローラ、などを使用する場合にはユーザ102などの、クライアントマシン104(N)によって受信したユーザ入力に応答して、新しく取得したビデオゲームの起動を開始し得る。この意味で、ユーザ102がビデオゲームのプレイを開始するときに関して、ユーザ102に課されるいかなる制約も存在し得ない。その結果、ユーザ102は、ゲームのプレイを開始し得、ゲーム実行ファイル122は、ゲームデータの第1のブロック124(1)がクライアントマシン104(N)にダウンロードされる前に実行を開始し得る。ユーザ102がビデオゲームを取得した後にある期間だけ待機することを選択した場合、ゲーム実行ファイル122は、ゲームデータ126の少なくとも1つのブロック124(1)がクライアントマシン104(N)にダウンロードされた後に実行を開始し得る。
【0024】
いくつかの実施形態では、クライアントマシン104(N)上で動作するビデオゲームクライアントは、ブロック124のダウンロードを開始してから所定の時間が経過するまで、または(例えば、ユーザ102がゲームのプレイを開始することを可能にする前に、閾値数のブロック124がダウンロードされるまで待機することによって)所定のイベントが生じるまで、ゲーム実行ファイル122が開始することを阻止するように構成され得る。所定の時間またはイベントは、どのくらいビデオゲームがインスタントプレイ128特徴に好適であるかに基づいて、リモートシステム106によって決定され得、リモートシステム106は、ビデオゲームの取得に応じて、ゲーム実行ファイル122がクライアントマシン104(N)上で動作することを可能にする前に、所定の期間が経過するまで待機する命令および/または所定のイベントが発生するまで待機する命令をビデオゲームクライアントに送信し得る。いくつかの実施形態では、リモートシステム106は、「最良のユーザエクスペリエンスのために、[ビデオゲームX]のダウンロードを開始してからプレイするまで5分間待機することを推奨します」と述べる推奨を表示することなどによって、クライアントマシン104(N)を介して推奨をユーザ102に出力するためのデータを、クライアントマシン104(N)に送信し得る。一実施例では、ビデオゲームがインスタントプレイ128特徴に十分適している場合、リモートシステム106は、「このゲームは、インスタントプレイの準備ができているので、すぐにプレイを開始することができます。楽しんで!」と述べる通知を出力することを、クライアントマシン104(N)に指示し得る。
【0025】
図1に示されるように、別のクライアントマシン104(2)は、ローカルプリフェッチング130特徴を実装し得、クライアントマシン104(2)は、ゲームプレイ中の待ち時間を低減させるために、ゲームデータ126の1つ以上の実現ブロック124をプリフェッチし得る。例えば、ビデオゲームのゲームデータ126は、第1の速度で読み出しアクセスを提供する第1のメモリ132(1)に記憶され得る。この第1のメモリ132(1)は、ゲームデータ126が残存する、HDD、SDカードなどの不揮発性メモリを表し得る。クライアントマシン104(2)はまた、第1の速度よりも速い第2の速度で読み出しアクセスを提供する第2のメモリ132(2)も含み得る。この第2のメモリ132(2)は、追加的な不揮発性メモリ(例えば、SSD)であり得るか、または揮発性メモリ(例えば、RAMなどの作業用メモリ)であり得る。いずれの場合でも、ブロック依存性データ116は、ブロック124がゲーム実行ファイル122によって次に読み出される可能性があるかどうかを決定するために、クライアントマシン104(2)によって使用され得、その可能性がある場合は、ブロック124を第2のメモリ132(2)にキャッシュすることができ、それにより、ゲーム実行ファイル122が最終的にブロック124を読み出すことを要求したときに、ブロック124は、比較的より遅い第1のメモリ132(1)からブロック124にアクセスするのではなく、第2のメモリ132(2)からすぐにアクセスすることができる。以下でより詳細に説明されるように、複数の異なるローカルメモリリソース132は、ローカルプリフェッチング130特徴の一部としてゲームデータ126のブロック124をキャッシュするために利用することができ、これは、全体的な帯域幅を向上させることができ、また、ブロック124を、例えば、作業用メモリのみにキャッシュするよりもはるかに多く待ち時間を低減させることができる。これは、全体的な帯域幅を向上させ、かつ待ち時間をさらに大幅に低減させることと並行して、ゲーム実行ファイル122が、第1のメモリ132(1)を含む異なるローカル記憶リソース132から読み出すことができるという概念に基づいている。
【0026】
図1に示されるように、さらに別のクライアントマシン104(1)は、未使用ゲームデータ削除134特徴を実装し得、クライアントマシン104(1)は、リモートシステム106から、クライアントマシン104(1)の不揮発性メモリに記憶されたゲームデータ126の1つ以上のブロック124を削除する命令118を受信し、それに応答して、クライアントマシン104(1)は、1つ以上のブロック124を削除して、クライアントマシン104(1)上のローカルメモリを解放することができる。例えば、リモートシステム106は、クライアントマシン104(1)から受信したアクセスデータ110から、クライアントマシン104(1)のユーザ102がこれまでビデオゲームのシングルプレイヤーモードをプレイしたことがないと決定し、その結果として、ビデオゲームをシングルプレイヤーモードでプレイするために使用可能であるビデオゲームのゲームデータ126のブロック124が、閾値期間またはゲームセッションの閾値数にわたってゲーム実行ファイル122によってアクセスされなかったと決定し得る。したがって、リモートシステム106は、命令118をクライアントマシン104(1)などの1つ以上のクライアントマシン104に送信して、クライアントマシン104に、そこにある不揮発性メモリから、以前にクライアントマシン104にダウンロードされて、「未使用」ブロック124として分類可能であると決定されたゲームデータ126の1つ以上の未使用ブロック124を削除することを指示し得る。命令118は、クライアントマシン104(1)がゲームデータ126の正しいブロック124を削除することができ、それにより、クライアントマシン104(1)上でゲームをプレイするユーザエクスペリエンスを損なうことなく、ローカルメモリ容量を解放するように、未使用ブロック124の識別子を指定し得る。
【0027】
図2は、クライアントマシン104の例示的なコンポーネントを例示するブロック図、ならびにファイルシステム読み出し動作を追跡してアクセスデータ110を生成するための、およびアクセスデータ110をリモートシステム106に送信するための例示的なプロセス200のフロー図を示す。例示される実装形態において、クライアントマシン104は、他のコンポーネントの中でも、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)などの1つ以上のプロセッサ202、1つ以上の入力デバイス204、1つ以上の出力デバイス206、非一時的コンピュータ可読媒体208、ローカルメモリ132、および通信インターフェース210を含む。
【0028】
非一時的コンピュータ可読媒体208は、揮発性および不揮発性メモリ、コンピュータ可読命令、データ構造、プログラムモジュール、または他のロジックおよび/もしくはデータなどの情報を記憶するための任意の方法または技術で実装された、取り外し可能および取り外し不可能な媒体を含み得る。そのようなメモリとしては、限定されるものではないが、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタル多目的ディスク(DVD)もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、RAIDストレージシステム、または所望の情報を記憶するために使用され得、コンピューティングデバイスによってアクセスされ得る、任意の他の媒体が挙げられる。コンピュータ可読媒体208は、コンピュータ可読媒体208に記憶された命令を実行するためにプロセッサ202によってアクセス可能な任意の利用可能な物理的媒体であり得る、コンピュータ可読記憶媒体(「CRSM」)として実装され得る。1つの基本的な実装形態では、CRSMは、ランダムアクセスメモリ(「RAM」)およびフラッシュメモリを含み得る。他の実装形態では、CRSMとしては、リードオンリーメモリ(「ROM」)、電気的消去可能プログラマブルリードオンリーメモリ(「EEPROM」)、または所望の情報を記憶するために使用することができ、かつプロセッサ202によってアクセスすることができる任意の他の有形媒体が挙げられ得るが、これらに限定されない。さらに、ローカルメモリ132は、コンピュータ可読媒体208とは別体であるように示されているが、いくつかの実装形態では、コンピュータ可読媒体208、ならびにローカルメモリ132(1)、132(2)、および/または132(3)のうちの任意の1つ以上は、同じメモリまたは同じメモリの少なくとも一部分を表し得ることを理解されたい。
【0029】
ここで、
図2に示されるプロセス200を参照する。本明細書で説明されるプロセスは、ロジックフローグラフ内の一群のブロックとして例示され、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせ(本明細書では「ロジック」と称されることもある)に実装することができる動作シーケンスを表す。ソフトウェアの文脈では、ブロックは、コンピュータ実行可能命令を表し、コンピュータ実行可能命令は、1つ以上のプロセッサによって実行されるときに、列挙された動作を行う。一般に、コンピュータ実行可能命令は、特定の機能を実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が記載される順序は、限定として解釈されることを意図するものではなく、任意のいくつかの記載されたブロックは、プロセスを実装するために任意の順序でおよび/または並行して組み合わされ得る。
【0030】
考察の目的で、プロセス200を行うクライアントマシン104が、すでにビデオゲームクライアント212をインストールしたものと仮定し、これは、コンピュータ可読媒体208に記憶されて、ビデオゲームのためのゲーム実行ファイル122を実行するように構成されているクライアントアプリケーションを表す。クライアントマシン104のユーザ102は、ビデオゲームを取得(例えば、購入、レンタル、リース、など)し得、その取得に応じて、ビデオゲームはインストールされて(例えば、リモートシステム106からダウンロードされて)、不揮発性メモリに維持され得る。いくつかの実施形態では、第1のローカルメモリ132(1)(「第1のメモリ132(1)」と称されることもある)は、不揮発性メモリ(例えば、HDD、SDカード、など)を表し得、第1のメモリ132(1)は、第1の速度で読み出しアクセスを提供し得る。ゲームデータ126のブロック124がリモートシステム106からダウンロードされるときに、ゲームデータ126のブロック124は、第1のメモリ132(1)にダウンロードされ得る。一方で、第2のメモリ132(2)は、追加的な不揮発性メモリ(例えば、ソリッドステートドライブ(SSD))を表し得、第2のメモリ132(2)は、第1のメモリ132(1)によって提供される第1の速度よりも速い第2の速度で読み出しアクセスを提供し得る。追加的に、第3のメモリ132(3)は、揮発性メモリ(例えば、RAMなどの作業用メモリ)を表し得、第3のメモリ1320(3)は、第2の速度よりも速い第3の速度で読み出しアクセスを提供し得る。クライアントマシン104は、(例えば、第2のメモリ132(2)を取り除くことによって)
図2に示されるものよりも少ないローカルメモリ132リソースを実装し得るか、または追加的なローカルメモリ132リソースを実装し得ることを理解されたい。
【0031】
214において、ビデオゲームクライアント212は、クライアントマシン104上でビデオゲームのゲーム実行ファイル122を実行し得る。例えば、クライアントマシン104のユーザ102は、ビデオゲームクライアント212をロードし得、ロードしたビデオゲームクライアント212は、(ゲーム実行ファイル122の実行を介して)以前にダウンロードしたビデオゲームを実行する、および/またはリモートシステム106から新しいビデオゲームを取得する能力をユーザ102に提供し得る。ゲーム実行ファイル122は、第3のメモリ132(3)などの作業用メモリにロードされ得、とりわけ、クライアントマシン104のディスプレイ上にグラフィックスをレンダリングするために実行する。ゲームセッション中には、スタートアップ段階およびプレイタイム段階が存在し得る。ゲームセッション中に、ゲーム実行ファイル122は、入力デバイス204(例えば、マウスおよび/またはキーボード、ゲームコントローラ、ヘッドマウントディスプレイ(HMD)、マイクロホン、など)から入力データを受信するように構成され得、また、クライアントマシン104のディスプレイ(すなわち、出力デバイス206)上にビデオゲームコンテンツの次のフレームをレンダリングするためにアクセスするゲームデータ126のブロック124を決定し得る。例えば、ゲーム実行ファイル122は、ゲームワールドのどの部分を今度のフレーム内にレンダリングするか、ならびにどのオブジェクトおよび/またはテクスチャを今度のフレーム内にレンダリングするか決定するように構成され得、また、読み出し動作を発行して、今度のフレームを提示するためのゲームデータ126の対応するブロック124を読み出し得る。
【0032】
216において、クライアントマシン104上で実行するファイルシステムプロキシコンポーネント218は、クライアントマシン104のファイルシステム220に対してゲーム実行ファイル122によって行われる読み出し動作(例えば、第1の読み出し動作、第2の読み出し動作、など)を決定(例えば、受信、監視、遮断、など)し得る。ファイルシステム220は、ビデオゲームのゲームデータ126のブロック124を含むデータがどのように記憶および検索されるかを制御するように構成され得る。ビデオゲームのゲームデータ126のすべてが、第1のメモリ132(1)などのローカルメモリリソースに実現されるどうかにかかわらず、ファイルシステムプロキシコンポーネント218は、どんなゲームデータ126のブロック124(例えば、ファイル)がクライアントマシン104の不揮発性メモリに(例えば、HDD、SDカード、などに)存在するかに関して、ビデオゲームに「嘘をつく」ように構成され得る。例えば、ビデオゲームクライアント212は、ファイルシステムプロキシコンポーネント218を介して、ビデオゲームの識別子に基づいて、不揮発性メモリに記憶されると思われるゲームファイルのリスト、ゲームファイルのサイズ、および可能であればゲームファイルが記憶される不揮発性メモリのセクタを知り得る。これは、例えば、ビデオゲーム(例えば、ゲーム実行ファイル122)に、ビデオゲームのすべてのゲームデータ126のブロック124が第1のメモリ132(1)に記憶されていると思わせる。ファイルシステムプロキシコンポーネント218は、必要に応じてこの情報を偽造してゲーム実行ファイル122に表出させるための、ファイルシステム220の拡張子であり得る。いずれの場合でも、ビデオゲームのすべてのゲームデータ126のブロック124がクライアントマシン104の第1のメモリ132(1)に記憶され、かつそこからアクセス可能である場合の一例について考える。この例では、ファイルシステムプロキシコンポーネント218は、単にファイルシステム220に対してゲーム実行ファイル122によって行われる読み出し動作を監視するだけである、パススルーとして作用し得る。本明細書でより詳細に説明されるように、ゲームデータ126の特定のブロック124は、第1のメモリ132(1)からプリフェッチされて、第2のメモリ132(2)または第3のメモリ132(3)のうちの少なくとも1つにキャッシュされ得、これらのメモリはどちらも、第1のメモリ132(1)によって提供される読み出しアクセス速度よりも速い読み出しアクセス速度を提供する。ファイルシステム220は、ゲームデータ126のブロック124が任意の所与の瞬間に記憶された場所を追跡することができ、適切なメモリリソース132からゲームデータ126のブロック124にアクセスして、セッション中にゲーム実行ファイル122によって行われる読み出し動作を提供し得る。
【0033】
222において、ファイルシステムプロキシコンポーネント218は、読み出し動作に少なくとも部分的に基づいて、ゲーム実行ファイル122から受信するアクセスデータ110を生成し得る。本明細書の他の場所で説明されるように、このアクセスデータ110は、(i)ゲームセッション中にゲーム実行ファイル122によってアクセスされたゲームデータ126のブロック124の識別子、および(ii)ゲームデータ126のアクセスされたブロック124がゲーム実行ファイル122によってアクセスされた、ゲーム実行ファイル122の実行中の時間を指定し得る。例えば、ゲームデータ126の2つのブロック124に関して、アクセスデータ110は、(i)ゲームデータの第1のブロックの第1の識別子、(ii)第1の読み出し動作に少なくとも部分的に基づいてゲームデータの第1のブロックがアクセスされた、ゲーム実行ファイルの実行中の第1の時間、(iii)ゲームデータの第2のブロックの第2の識別子、および(iv)第2の読み出し動作に少なくとも部分的に基づいてゲームデータの第2のブロックがアクセスされた、ゲーム実行ファイルの実行中の第2の時間、を指定し得る。いくつかの実施形態では、各アクセスされたブロック124のアクセス時間は、ゲームセッションの開始から測定される時間として(例えば、ブロックAが、ゲームセッションが開始して4分後にアクセスされた、ブロックDが、ゲームセッションを開始して13分後にアクセスされた、など)、アクセスデータ110に表現され得る。
【0034】
224において、クライアントマシン104は、通信インターフェース210を介して、およびコンピュータネットワーク108を通じて、などにおいて、アクセスデータ110をリモートシステム106に送信し得る。通信インターフェース210は、複数のタイプの有線および/または無線もしくはラジオ技術を実装し得る。例えば、通信インターフェース210は、Bluetooth低エネルギー(BLE)(登録商標)ラジオ、Wi-Fiラジオ、および/またはセルララジオなどのラジオを実装することができる。通信インターフェース210は、ネットワーク、接続された周辺デバイス、または他の無線ネットワークと通信するプラグインネットワークデバイスへの有線接続を容易にする物理ポートをさらに含み得ることを理解されたい。
【0035】
サブブロック226に示されるように、224において、アクセスデータ110が、クライアントマシン104の構成およびビデオゲームの識別子とともに送信され得る。さらに、アクセスデータ110は、任意の好適な時間に、アクセスデータ110が生成されるときに、および/またはイベントに応答して(例えば、定期的に、処理リソース消費がリソース消費の閾値パーセンテージ未満などの比較的低いアイドル時間中、ネットワーク接続を再開したとき(例えば、ゲームをオフラインでプレイした後)、クライアントマシン104がゲーム実行ファイル122の実行を停止した後(例えば、ユーザ102がビデオゲームを出ることによってゲームセッションを終了した後)、など)、アクセスデータ110をリモートシステム106にストリーミングすることによって、リアルタイムまたは実質的にリアルタイムなどで、リモートシステム106に送信され得る。アクセスデータ110はまた、アクセスデータ110をリモートシステム106にアーチファクトとして送信することなどによる、クライアントマシン104上の追跡された読み出し動作によって生じるメタデータを送信するための任意の好適なフォーマットで送信され得る。プロセス200は、リモートシステム106でアクセスデータ110を収集するための「テレメトリ」手法を表す。多数のクライアントマシン104がプロセス200を行い得ることを考えれば、リモートシステム106は、ブロック224において、異なるクライアントシステム構成を有する非常に多数のクライアントマシン104から送信される(例えば、アップロードされる、報告される、など)アクセスデータ110を収集し得る。
【0036】
図3は、本明細書で説明される技術を実装するための、リモートシステム106の例示的なコンポーネントを例示するブロック図、ならびにクライアントマシン104からアクセスデータ110を受信するための、および1人以上のユーザ102にわたってアクセスデータ110を分析するための例示的なプロセス300のフロー図を示す。例示される実装形態では、リモートシステム106は、他のコンポーネントの中でも、1つ以上のプロセッサ302と、メモリ304(または非一時的コンピュータ可読媒体304)と、通信インターフェース306と、を含む。メモリ304(または非一時的コンピュータ可読媒体304)には、揮発性および不揮発性メモリ、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実装された取り外し可能および取り外し不可能な媒体が含まれ得る。そのようなメモリとしては、限定されるものではないが、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタル多目的ディスク(DVD)もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、RAIDストレージシステム、または所望の情報を記憶するために使用され得、コンピューティングデバイスによってアクセスされ得る、任意の他の媒体が挙げられる。コンピュータ可読媒体304は、コンピュータ可読記憶媒体(「CRSM」)として実装され得、そのコンピュータ可読記憶媒体は、メモリ304上に記憶された命令を実行するためのプロセッサ302によってアクセス可能である任意の利用可能な物理的媒体であってもよい。1つの基本的な実装形態では、CRSMは、ランダムアクセスメモリ(「RAM」)およびフラッシュメモリを含み得る。他の実装形態では、CRSMとしては、リードオンリーメモリ(「ROM」)、電気的消去可能プログラマブルリードオンリーメモリ(「EEPROM」)、または所望の情報を記憶するために使用することができ、かつプロセッサ302によってアクセスすることができる任意の他の有形媒体が挙げられ得るが、これらに限定されない。ダウンロードシーケンスコンポーネント308、ブロック依存性コンポーネント310、および/またはゲームデータ使用コンポーネント312は、プロセッサ302によって実行されるときにリモートシステム106に本明細書で説明される技術および動作を行わせる、メモリ304に記憶された命令を表し得る。例えば、本明細書で説明されるように、ダウンロードシーケンスコンポーネント308は、アクセスデータ110に基づいて、ダウンロードシーケンスデータ114を生成するように構成され得る。本明細書で説明されるように、ブロック依存性コンポーネント310は、アクセスデータ110に基づいて、ブロック依存性データ116を生成するように構成され得る。本明細書で説明されるようにゲームデータ使用コンポーネント312は、ユーザごとまたはクライアントごとのマシン104に基づいて、ゲームデータ126の未使用ブロック124を決定するように構成され得る。
【0037】
通信インターフェース306は、複数のタイプの有線および/または無線もしくはラジオ技術を実装し得る。例えば、通信インターフェース306は、Bluetooth低エネルギー(BLE)(登録商標)ラジオ、Wi-Fiラジオ、および/またはセルララジオなどのラジオを実装することができる。通信インターフェース306は、ネットワーク、接続された周辺デバイス、または他の無線ネットワークと通信するプラグインネットワークデバイスへの有線接続を容易にする物理ポートをさらに含み得ることを理解されたい。
【0038】
ここで、
図3に示されるプロセス300を参照する。314において、リモートシステム106は、(例えば、上記のように、プロセス200を使用した「テレメトリ」手法の一部として)クライアントマシン114からアクセスデータ110を受信し得る。受信したアクセスデータ110は、特定のクライアントマシン104について、ビデオゲームのゲーム実行ファイル112によって特定のクライアントマシン104でアクセスされたビデオゲームのゲームデータ126のブロック124の識別子、およびゲームセッション中に(例えば、ビデオゲームのゲーム実行ファイル122の実行中に)ブロック124がアクセスされた時間を指定することができる。サブブロック316によって示されるように、アクセスデータ110は、特定のクライアントマシン104の構成とともに、およびアクセスデータ110の生成中に実行されたビデオゲームの識別子とともに受信され得る。
【0039】
318において、リモートシステム106は、クライアントシステム構成およびゲーム識別子によって(またはそれに従って)ブロック314で受信するアクセスデータ110をカタログ化し得る。例えば、データストア112は、ゲームIDおよびクライアントシステム構成の一意の組み合わせによって分類される複数のグループまたはバケット320(1)~(M)を含み得る。クライアントシステム構成「1」を有する第1のクライアントマシン104(1)を例にとると、ブロック314において、第1のクライアントマシン104(1)から第1のアクセスデータ110を受信したときに、ブロック318において、第1のアクセスデータ110が、第1のバケット320(1)(または群)にカタログ化され得、サブブロック316において、このバケット320(1)には、第1のクライアントマシン104(1)から受信したビデオゲームのゲームIDおよび第1のクライアントマシン104(1)のクライアントシステム構成がタグ付けされ得る。同様に、第2のクライアントマシン104(2)は、第2のアクセスデータ110を送信し得、ブロック318において、この第2のアクセスデータ110は、第2のバケット320(2)にカタログ化され得、これには、サブブロック316において、第2のクライアントマシン104(2)から受信したビデオゲームのゲームIDおよび第2のクライアントマシン104(2)の第2のクライアントシステム構成「2」がタグ付けされ得る。これは、アクセスデータ110を報告するクライアントマシン104の数に応じて、クライアントマシン104が異なるクライアントシステム構成を有するかどうかに応じて、および/またはクライアントマシン104上で実行されている異なるビデオゲームの数に応じて、任意の数の「M」個のバケットにわたって続けることができる。
【0040】
322において、リモートシステム106は、ブロック314で受信したアクセスデータ110の分析を行ってデータ(例えば、分析の結果)を生成し得る。この生成されるデータとしては、1つ以上のビデオゲームのダウンロードシーケンスデータ114、1つ以上のビデオゲームのブロック依存性データ116、および/またはユーザごと/クライアントごとのマシンに基づいて、ゲームデータ126の未使用ブロック124の決定が挙げられ得るが、これらに限定されない。
【0041】
324において、リモートシステム106は、トリガイベントが生じたかどうかを決定し得る。トリガイベントとしては、様々であり得るが、クライアントマシン104からビデオゲームを取得する(例えば、購入する、レンタルする、リースする、などの)要求120を受信すること、ビデオゲームの新しいダウンロードシーケンスデータ114および/または新しいブロック依存性データ116を生成すること、閾値期間またはゲームセッションの閾値数にわたってアクセスされずにある期間が経過したゲームデータ126の未使用ブロック124がクライアントマシン104に存在すると決定すること、などが挙げられ得るが、これらに限定されない。
【0042】
ブロック324において、リモートシステム106が、トリガイベントが生じていないと決定した場合、プロセス300は、ブロック324からブロック314に戻る「いいえ」のルートに従い得、リモートシステム106は、クライアントマシン104からのアクセスデータ110を収集/受信し続ける。ブロック324において、リモートシステム106が、トリガイベントが生じたと決定した場合、プロセス300は、ブロック324からブロック326への「はい」のルートに従い得、リモートシステム106は、データを1つ以上のクライアントマシン104に送信し得る。例えば、トリガイベントが、クライアントマシン104がビデオゲームを取得することを含む場合、リモートシステム106は、ビデオゲームのダウンロードシーケンスデータ114を検索し得、また、ビデオゲームのゲーム実行ファイル122とともに、ダウンロードシーケンスデータ114をクライアントマシン104に送信し得る。追加的にまたは代替的に、リモートシステム106は、ビデオゲームのブロック依存性データ116を検索し得、また、ブロック依存性データ116をクライアントマシン104に送信し得る。さらに別の例として、トリガイベントが、ゲームデータ126の未使用ブロック124がクライアントマシン104に存在すると決定することを含む場合、リモートシステム106は、ゲームデータの未使用ブロックを削除する命令を送信し得る。
【0043】
いくつかの実施形態では、
図2に示されるクライアントマシン104のコンポーネントの少なくともいくつかが、リモートシステム106のコンポーネントとして実装され得ることを理解されたい。例えば、ゲーム実行ファイル122は、(例えば、ビデオゲームをストリーミングするサービスの一部として)リモートシステム106上で実行し得、ゲーム実行ファイル122は、ビデオゲームをプレイしている間、ネットワーク108を通じてクライアントマシン104からユーザ入力を示すデータを受信し得る。このシナリオでは、ビデオゲームのゲームデータ126も同様にリモートシステム106に記憶され得、ファイルシステムプロキシコンポーネント218は、ゲーム実行ファイル122から読み出し動作を受信して、ゲームプレイ中にアクセスされたゲームデータ126のブロック124を監視する、リモートシステム106のコンポーネントであり得る。この構成では、クライアントマシン104は、シンクライアントとして作用し得、ビデオゲームセッション中に大部分の処理がクラウドで行われる。別の例では、ダウンロードシーケンスコンポーネント308、ブロック依存性コンポーネント310、および/またはゲームデータ使用コンポーネント312は、クライアントマシン104のコンポーネントであり得る。この例では、クライアントマシン104は、リモートシステム106によって収集された、他のクライアントマシン104によって生成されたアクセスデータ110を受信し得、クライアントマシン104は、それ自体のアクセスデータ110および/または他のクライアントマシン104によって生成されたアクセスデータ110の分析を行って、クライアントマシン104に記憶されたダウンロードシーケンスデータ114、ブロック依存性データ116、および/またはゲームデータ126の未使用ブロック124を決定し得る。
【0044】
図4は、複数のクライアントマシン104から受信したアクセスデータ110に基づいて、ブロック124の特定のシーケンスでゲームデータ126のブロック124をダウンロードするためにクライアントマシン104が使用するダウンロードシーケンスデータ114を生成するための例示的なプロセス400のフロー図である。
【0045】
402において、リモートシステム106は、複数のクライアントマシン104から、ビデオゲームに関連するアクセスデータ110を受信し得る。ブロック402で受信したアクセスデータ110は、個々のクライアントマシン104について、(i)個々のクライアントマシン上でのゲーム実行ファイル122の実行中にビデオゲームのゲーム実行ファイル122によってアクセスされた、ビデオゲームと関連付けられたゲームデータ126のアクセスされたブロック124、および(ii)ゲームデータ126のアクセスされたブロック124がゲーム実行ファイル122によってアクセスされた、ゲーム実行ファイル122の実行中の時間を指定し得る。サブブロック404によって示されるように、アクセスデータ110は、アクセスデータ110を送信したクライアントマシン104の構成、および/またはアクセスデータ110が生成されたときにクライアントマシン104上で実行したビデオゲームのゲーム識別子とともに受信され得る。
【0046】
406において、リモートシステム106は、アクセスデータ110に少なくとも部分的に基づいて、クライアントシステム構成およびビデオゲームのゲーム識別子と関連付けられたダウンロードシーケンスデータ114を生成し得る。ダウンロードシーケンスデータ114は、ビデオゲームのゲームデータ126のブロック124のシーケンスを指定し得、このシーケンスは、ゲームデータのブロック124が、特定のクライアントシステム構成を有するクライアントマシン104にダウンロードされる順序を表し得る。ビデオゲームのダウンロードシーケンスは、任意の好適な様態で決定され得る。サブブロック408および410によって示されるように、ダウンロードシーケンスデータ114の生成は、複数のサブ動作を含み得る。
【0047】
408において、ビデオゲームをプレイしたN人の対応するユーザ102のN個のゲームセッションを通じて(「N」は、任意の正の整数)、いつブロック124が(アクセスデータ110に指定されたように)アクセスされたかに少なくとも部分的に基づいて、ビデオゲームのゲームデータ126の少なくともいくつかのブロック124について統計(例えば、時間、位置/順序/ランク、など)が計算され得る。例えば、ビデオゲームをプレイしたN人のユーザ102と関連付けられたアクセスデータ110に基づいて、リモートシステム106は、ブロック124がゲームセッション中に(例えば、最初のゲームセッション中に)N人のユーザ102の各々によってアクセスされた時間に基づいた統計(例えば、平均値)を決定し得る。リモートシステム106は、例えば、(例えば、ブロックAがN人の異なるユーザによってアクセスされた複数の異なる時間に基づいて)最初のゲームセッションへのブロックAの平均アクセス時間が30分であった、最初のゲームセッションへのブロックBの平均アクセス時間が45分であった、最初のゲームセッションへのブロックCの平均アクセス時間が2時間であった、などと決定し得る。リモートシステム106は、追加的にまたは代替的に、N人のユーザについて、ブロックAが、最初のゲームセッション中にユーザAによってアクセスされた第1のブロックであった、ブロックAが、最初のゲームセッション中にユーザBによってアクセスされた第5のブロックであった、ブロックAが、最初のゲームセッション中にユーザCによってアクセスされた第7のブロックであったなどと決定し得、次いで、リモートシステム106は、いつブロックがN人の異なるユーザ102によってアクセスされたかに関する情報に少なくとも部分的に基づいたブロックAの統計(例えば、平均位置/順序/ランク)を決定し得る。これは、ゲームセッション中にアクセスされた他のブロック124について繰り返され得る。これらの分析は、少なくとも初期のゲームセッションについて行うことができる。分析は、どのゲームデータ126のブロック124が、典型的には、ゲームセッション中にアクセスされるかを決定するために、任意の後続のゲームセッションにも同様に行うことができる。
【0048】
410において、算出統計に基づいて、ビデオゲームのゲームデータ126の複数のブロック124について、ダウンロードシーケンスを決定することができる。ダウンロードシーケンスで指定されたブロック124は、ゲームデータのブロック124のいくつか(例えば、ブロック124の総数のうちの一部)であり得、またはダウンロードシーケンスは、ゲームデータ126のブロック124のすべてを含み得る。所与のビデオゲームについて、プレイ時間の初期期間中にアクセスされる可能性が高いブロック124の最初の数の間の比率、およびプレイ時間の初期期間の長さは、いくぶん不均衡であり得ることを理解されたい。換言すれば、2ギガバイトのゲームデータ126は、特定のビデオゲームのプレイ時間の最初の6時間を提供し得、ゲームデータ126の残部は、この最初のプレイ期間中にアクセスされる可能性が低くなり得る。これは、特定のゲームが「インスタントプレイ」128特徴に十分適し得ること、およびこれらのゲームには、この比率に基づいて、インスタントプレイに十分適している「良好なインスタントプレイゲーム」としてフラグを立てることができることを意味する。換言すれば、特定のゲームは、比較的長い初期プレイ期間を比較的少ない量のゲームデータ126によってサポートすることができる場合にフラグを立てることができる。一例として、シングルプレイヤーゲームは、新しいプレイヤーが最初に同じレベルをプレイすることが必要であり得るので、待ち時間をほとんどまたはまったく伴わない「インスタントプレイ」128特徴に十分適し得る。これは、シングルプレイヤーゲームについて、リモートシステム106が、初めてゲームをプレイするすべてのまたはほぼすべてのプレイヤーがプレイ時間の最初のX時間以内に同じブロック124にアクセスすると決定し得、このパターンは、一組のN人のプレイヤーにわたって実質的に直線状で一貫し得る-例えば、すべてのN人のプレイヤーが、ブロックAに、次いで、ブロックH、ブロックQ、などにアクセスし得る-ことを意味する。ブロック124がアクセスされる正確な時間には不一致が存在し得るが、所与のビデオゲームのプレイ時間の初期期間にわたってアクセスされるブロック124の共通の順序が存在し得る。対照的に、マルチプレイヤーゲームは、巨大なマップを有するオープンゲームワールドを有し得る。例えば、N人のユーザにわたって、N人のユーザは、最初にオープンワールドの異なる場所においてゲームに入り込み得、各ゲーム実行ファイル122は、マッチしたプレイヤーがゲームに入り込むオープンワールドの異なる場所に対応する、ゲームデータ126の異なるブロック124にアクセスすることになる。これは、インスタントプレイ128特徴には適さないゲームの一例である。
【0049】
ビデオゲームが、インスタントプレイ128特徴をサポートすることができると仮定すると、ダウンロードシーケンスは、ブロックA、ブロックD、ブロックG、ブロックC、ブロックF、ブロックE、などの順序を指定し得る。したがって、任意のビデオゲームについて、および任意のクライアントシステム構成について、リモートシステム106は、少なくともあるプレイ時間(例えば、プレイ時間の最初の6時間)にわたって、平均的なユーザ102は、そのプレイ時間の期間中に、ゲームデータのブロック124の特定のサブセットにのみアクセスする可能性が高く、また、特定のシーケンスでブロック124にアクセスする可能性が高いと決定することができる。いくつかの実施形態では、ダウンロードシーケンスがユーザ固有であり得ることを理解されたい。すなわち、同じビデオゲームおよび同じクライアントシステム構成について、第1のダウンロードシーケンスが第1のユーザ102に対して決定され得、第2のダウンロードシーケンスが第2のユーザ102に対して決定され得、第2のダウンロードシーケンスは、第1のダウンロードシーケンスとは異なる。これは、ユーザ固有のアクセスデータ110に示される一意のアクセスパターンに基づき得る。
【0050】
412において、リモートシステム106は、クライアントマシン104から、ビデオゲームを取得する要求120を受信し得、要求120は、クライアントマシン104の構成を含む。例えば、ビデオゲームクライアント212を介して自分のユーザアカウントにログインするクライアントマシン104のユーザ102は、リモートシステム106を介してトランザクションを行って、ビデオゲームを購入し得る。
【0051】
414において、リモートシステム106は、ビデオゲームのゲーム実行ファイル122をクライアントマシン104に送信し得る。このゲーム実行ファイル122は、クライアントマシン104上でのビデオゲームのプレイを開始するためにクライアントマシン104のプロセッサ202によって実行可能な、実行可能コード(例えば、ファイル)であり得る。サブブロック416によって示されるように、リモートシステム106は、ダウンロードシーケンスデータ114をクライアントマシン104に送信して、クライアントマシン104がダウンロードシーケンスデータ114によって指定されたシーケンスで、取得したビデオゲームのゲームデータ126のブロック124のダウンロードを開始し得る。
【0052】
418において、リモートシステム106は、ダウンロードシーケンスデータ114で指定されたシーケンスに従って、ゲームデータのブロック124をクライアントマシン104にダウンロードし得る。これは、クライアントマシン104の達成可能なダウンリンクデータ転送速度に応じて、いくらかの時間を費やし得る。したがって、ブロックのシーケンス124がダウンロードされているので、最初にアクセスされる可能性が最も高いブロック124が、他のブロックの前に、クライアントマシン104のローカルメモリ132に実現され、ビデオゲームのゲーム実行ファイル122が他のブロックを読み出すことを要求する時間までに、それらのブロックは、クライアントマシン104へのダウンロードが完了している可能性が高い。
【0053】
図5は、ゲームデータ126のブロック124をプリフェッチしてゲームプレイ中の待ち時間を低減させるために、複数のクライアントマシン104から受信されるアクセスデータ110に基づいて、クライアントマシン104が使用するブロック依存性データ116を生成するための例示的なプロセス500のフロー図である。
【0054】
502において、リモートシステム106は、複数のクライアントマシン104から、ビデオゲームに関連するアクセスデータ110を受信し得る。ブロック502で受信したアクセスデータ110は、個々のクライアントマシン104について、(i)個々のクライアントマシン上でのゲーム実行ファイル122の実行中にビデオゲームのゲーム実行ファイル122によってアクセスされた、ビデオゲームと関連付けられたゲームデータ126のアクセスされたブロック124、および(ii)ゲームデータ126のアクセスされたブロック124がゲーム実行ファイル122によってアクセスされた、ゲーム実行ファイル122の実行中の時間を指定し得る。サブブロック504によって示されるように、アクセスデータ110は、アクセスデータ110を送信したクライアントマシン104の構成、および/またはアクセスデータ110が生成されたときにクライアントマシン104上で実行したビデオゲームのゲーム識別子とともに受信され得る。
【0055】
506において、リモートシステム106は、アクセスデータ110に少なくとも部分的に基づいて、クライアントシステム構成およびビデオゲームのゲーム識別子と関連付けられたブロック依存性データ116を生成し得る。ブロック依存性データ116は、ビデオゲームのゲームデータ126の2つ以上のブロック124の間の個々の関連を指定し得る。換言すれば、リモートシステム106は、特定のイベントが生じた場合にアクセスされる、ゲームデータ126の1つ以上のブロック124を予測することができる。このようにして、アクセスデータ110に基づいて、ゲームデータ126のブロック124の間のおよび/またはブロック124とコンテキストキューとの間の依存性(例えば、分岐、ツリー状の依存性)のマップを構築することができる。サブブロック508および510によって示されるように、ブロック依存性データ116の生成は、1つ以上のサブ動作を含み得る。
【0056】
508において、リモートシステム106は、ビデオゲームをプレイしたN人のユーザ102から受信したアクセスデータ110に示されるアクセスパターン(例えば、アクセス時間)に基づいて、コンテキストキューとビデオゲームのゲームデータ126のブロック124との間の関連を決定し得る。例えば、リモートシステム106は、特定のコンテキストキューが検出されたときは常に(例えば、ユーザ102がビデオゲームのライブラリページにナビゲートするときは常に)、ゲームデータ126の特定のブロック124が、典型的には、閾値期間内にアクセスされる(例えば、N人のユーザにわたって平均される)と決定し得る。このタイプの相関は、アクセスデータに指定されたアクセス時間に少なくとも部分的に基づいて決定することができる。例えば、N人のユーザにわたって、ブロックAが、ビデオゲームのライブラリページにナビゲートするN人のユーザにより最初の15秒以内に最もアクセスされたブロックである場合、ブロックAは、このタイプのコンテキストキューと関連付けられ得る。
【0057】
510において、リモートシステム106は、ビデオゲームをプレイしたN人のユーザ102から受信したアクセスデータ110に示されるアクセスパターン(例えば、アクセス時間)に基づいて、ビデオゲームのゲームデータ126のブロック124の対の間の関連を決定し得る。例えば、リモートシステム106は、ビデオゲームをプレイしたN人のユーザ102から受信したアクセスデータ110に基づいて、ゲームデータ126の第1のブロック124(1)がゲームセッション中にアクセスされたときは常に、ゲームデータ126の第2のブロック124(2)が、典型的には、閾値期間中にアクセスされたと決定し得る。このようにして、リモートシステム106は、アクセスデータ110に示されるアクセスパターンに基づいて、2つ以上のブロック124のグループのブロック間の関係を決定し得る。
【0058】
いくつかの実施形態では、ブロック依存性データ116がユーザ固有であり得ることを理解されたい。すなわち、同じビデオゲームおよび同じクライアントシステム構成について、ブロック依存性の第1のマップが第1のユーザ102に対して決定され得、ブロック依存性の第2のマップが第2のユーザ102に対して決定され得、第2のマップは、第1のマップとは異なる。これは、ユーザ固有のアクセスデータ110に示される一意のアクセスパターンに基づき得る。
【0059】
512において、リモートシステム106は、ブロック依存性データ116を1つ以上のクライアントマシン104に送信し得る。ブロック依存性データ116は、様々なトリガイベントに応答して送信され得る。例えば、リモートシステム106は、クライアントマシン104のユーザ102がビデオゲームを取得した(例えば、購入した、レンタルした、リースした、など)ことに応答して、ビデオゲームのブロック依存性データ116をクライアントマシン104に送信し得る。別の例として、ブロック506で生成されたブロック依存性データ116は、ビデオゲームのブロック依存性データ116の以前のバージョンに対する新しいデータ(または更新されたデータ)を表し得、ブロック506で新しい/更新されたブロック依存性データ116を生成することに応答して、リモートシステム106は、ブロック依存性データ116を、ビデオゲームの所有者と関連付けられていることが知られているクライアントマシン104に送信し得る。さらに別の例として、ユーザは、自分のクライアントマシン104に実装されたローカルプリフェッチング特徴を有することを選択し得、選択に応答して、リモートシステム106は、ブロック依存性データ116を、選択したユーザのクライアントマシン104に送信し得る。
【0060】
図6は、クライアントマシン104から受信したアクセスデータ110に基づいて、ゲームデータ126の未使用ブロック124を決定するための、およびクライアントマシン104にゲームデータ126の未使用ブロック124を破棄することを指示するための例示的なプロセス600のフロー図である。
【0061】
602において、リモートシステム106は、クライアントマシン104から、ビデオゲームに関連するアクセスデータ110を受信し得る。ブロック602で受信したアクセスデータ110は、(i)クライアントマシン104上でのゲーム実行ファイル122の実行中にビデオゲームのゲーム実行ファイル122によってアクセスされた、ビデオゲームと関連付けられたゲームデータ126のアクセスされたブロック124、および(ii)ゲームデータ126のアクセスされたブロック124がゲーム実行ファイル122によってアクセスされた、ゲーム実行ファイル122の実行中の時間を指定し得る。リモートシステム106は、同じクライアントマシン104から、過去のいつかにおいて以前に受信したアクセスデータ110を有し得ることを理解されたい。したがって、リモートシステム106は、クライアントマシン104上でプレイされた複数のゲームセッションを通じて生成されたアクセスデータ110へのアクセスを有し得る。サブブロック604によって示されるように、アクセスデータ110は、アクセスデータ110を送信したクライアントマシン104の構成、および/またはアクセスデータ110が生成されたときにクライアントマシン104上で実行したビデオゲームのゲーム識別子とともに受信され得る。
【0062】
606において、リモートシステム106は、アクセスデータ110(および、可能であれば過去にクライアントマシン104から受信した追加的なアクセスデータ110)に基づいて、現在クライアントマシン104の不揮発性メモリ(例えば、第1のメモリ132(1))に記憶されているビデオゲームのゲームデータ126の任意のブロック124を、ゲームデータ126の「未使用」ブロック124に分類することができるかどうかを決定し得る。サブブロック608によって示されるように、この決定は、個々のブロック124が、閾値期間にわたって、またはゲームセッションの閾値数にわたってクライアントマシン104上のビデオゲームのゲーム実行ファイル122によってアクセスされなかったかどうかを決定することを含み得る。例えば、ゲームデータ126のブロックX~Zが過去のP個のゲームセッションに対して(「P」は、任意の好適な整数である)、または最後のQ週間にわたって(「Q」は、過去10週間などの任意の好適な整数である)アクセスされなかった場合、ブロックX~Zが未使用ブロックであると決定され得る。
【0063】
いくつかの実施形態では、ゲームデータ126のブロック124を未使用ブロックとして分類する際に、他の因子が考慮される。例えば、リモートシステム106は、特定のビデオゲームのN人のユーザにわたって、ゲームデータ126の特定のブロック124がゲーム実行ファイル122によって一度アクセスされて、その後に再度アクセスされていないと決定し得、リモートシステム106は、特定のブロック124がすでに一度アクセスされたと決定し得、その場合、どのくらい最近にブロック124がゲーム実行ファイル122によってアクセスされたかにかかわらず、ブロック124を未使用として指定し得る。同様に、他のヒューリスティックスを使用して、未使用ブロック124を決定することができる。
【0064】
ブロック606において、クライアントマシン104の不揮発性メモリ(例えば、第1のメモリ132(1))に記憶されたゲームデータ126のブロック124のいずれも未使用ブロック124に分類できないと決定した場合、プロセス600は、ブロック606からブロック602に戻る「いいえ」のルートに従い得、リモートシステム106は、クライアントマシン104から追加的なアクセスデータ110を受信(または、受信を待機)し得る。ブロック606において、クライアントマシン104の不揮発性メモリに記憶されたゲームデータ126の1つ以上のブロック124を未使用ブロック124に分類することができると決定した場合、プロセス600は、ブロック606からブロック610への「はい」のルートに従い得る。
【0065】
610において、リモートシステム106は、クライアントマシン104に、クライアントマシン104の不揮発性メモリからゲームデータ126の未使用ブロック124を削除する命令118を送信し得る。これらの命令118は、削除されるブロック124の識別子を含み得る。削除に応じて、クライアントマシン104のローカルメモリリソース132を解放して、ローカルメモリ容量を増加させて、潜在的に他のデータをそこに記憶することができる。
【0066】
図7は、クライアントマシン104の不揮発性メモリからゲームデータの未使用ブロックを破棄するための例示的なプロセス700のフロー図である。
図2および
図7のページ外参照「A」によって示されるように、プロセス700は、クライアントマシン104がアクセスデータ110をリモートシステム106に送信した後、プロセス200のブロック224から続き得る。
【0067】
702において、クライアントマシン104は、リモートシステム106から、不揮発性メモリからビデオゲームのゲームデータ126の1つ以上のブロック124を削除する命令118を受信し得る。リモートシステム106は、以前にクライアントマシンによって送信されたアクセスデータ110から、削除されるブロック124が、閾値期間またはゲームセッションの閾値数にわたってアクセスされなかったゲームデータ126の未使用ブロック124を表すと決定し得る。
【0068】
704において、クライアントマシン104は、リモートシステム106から受信した命令118に基づいて、不揮発性メモリ(例えば、第1のメモリ132(1))から、ゲームデータ126の1つ以上のブロック124を削除し得る。サブブロック706によって示されるように、クライアントマシン104は、ゲームデータ126のブロック124を破棄する前に、クライアントマシン104が再起動されるまで待機するように構成され得る。このようにして、例えば、ユーザ102が現在ビデオゲーム(または異なるビデオゲーム)をプレイしている場合に、ブロック124を削除することは、いかなる問題も生じさせない。ゲームデータ126の残りのブロック124は、未使用ブロック124の削除後に、不揮発性メモリ内に残存したままであることを理解されたい。したがって、ローカルメモリリソース132は、将来アクセスされる可能性が低いゲームデータ126のブロック124を破棄することによって解放され得る。例示的な使用事例では、ユーザ102は、自分のクライアントマシン104にビデオゲームXをインストールし得、インストールしてから、ユーザ102は、これまでビデオゲームXをオンラインでプレイしただけであり、これは、ユーザ102が、これまでビデオゲームXをシングルプレイヤーモードでプレイしたことがないことを意味する。クライアントマシン104によってリモートシステム106に報告されたアクセスデータ110から、リモートシステム106は、ユーザ102が、ビデオゲームXがクライアントマシン104にインストールされて以来、数週間にわたっておよび/またはある数のゲームセッションにわたって、ビデオゲームXのシングルプレイヤーモードについてゲームデータ126のブロック124にアクセスしたことがないと決定し得る。この場合、リモートシステム104は、(このゲームデータ126に対応する1つ以上のブロック124を識別することによって)シングルプレイヤーゲームデータ126を破棄する命令118を送信し得、クライアントマシン104は、その命令を受信し得、クライアントマシン104は、これらのブロック124を削除して、クライアントマシン104の不揮発性メモリ(例えば、第1のメモリ132(1))内の空間を解放し得る。
【0069】
削除後に、ビデオゲームは、通常通り実行され得、ゲーム実行ファイル122によって行われた読み出し動作が行われ続ける。クライアントマシン104の不揮発性メモリから削除されたゲームデータ126のブロック124を読み出すことをゲーム実行ファイル122が要求するという万が一の可能性において、ファイルシステムプロキシコンポーネント218は、そうしたブロックをオンデマンドでリモートシステム106から検索し得る。いくつかの実施形態では、削除されたブロック124が、ゲーム実行ファイル122による読み出しを要求された場合、そうしたブロック124は、クライアントマシン104の不揮発性メモリに再ダウンロードされ得る。プロセス700の実装形態は、他のプロセスおよび/または本明細書で説明される技術とともに、クライアントマシン104上の有益なディスク領域(例えば、数十ギガバイト程度のディスク領域)を再利用することができる。
【0070】
図8は、ゲームダウンロードが完了する前に、クライアントマシン104上でビデオゲームを実行するための例示的なプロセス800のフロー図である。プロセス800は、ゲームデータ126がクライアントマシン104にダウンロードされることを待機することなく、ユーザ102が、ビデオゲームをビデオゲームの取得に応じてプレイすることを可能にし得るので、本明細書では、「インスタントプレイ」128特徴と称されることもある。
【0071】
802において、クライアントマシン104は、ビデオゲームを取得(例えば、購入、レンタル、リース、など)する要求120をリモートシステム106に送信し得る。サブブロック804によって示されるように、要求120は、リモートシステム106がクライアントシステム構成の正しいダウンロードシーケンスデータ114を検索するように、クライアントマシン104の構成を含み得る。
【0072】
806において、クライアントマシン104は、リモートシステム106から、クライアントマシン104上のビデオゲームをプレイするためにそのプロセッサ202によって実行可能である実行可能コード(例えば、1つ以上のファイル)などの、ビデオゲームのゲーム実行ファイル122を受信し得る。サブブロック808によって示されるように、クライアントマシン104はまた、クライアントマシン104の構成と関連付けられたダウンロードシーケンスデータ114も受信し得る。このダウンロードシーケンスデータ114は、ビデオゲームのゲームデータ126のブロック124のシーケンスを指定し得る。
【0073】
810において、クライアントマシン104は、クライアントマシン104の不揮発性メモリ(例えば、第1のメモリ132(1))に、ダウンロードシーケンスデータ114に指定されたシーケンスに従って、ビデオゲームのゲームデータ126のブロック124のダウンロードを開始し得る。
【0074】
812において、クライアントマシン104は、ゲーム実行ファイル122を実行して、ビデオゲームを開始し得る。ゲームデータ126の第1のブロック124がダウンロードを完了する前であっても、ユーザ102がビデオゲームのプレイを開始し得ること、およびゲーム実行ファイル122が実行を開始し得ることを理解されたい。ゲーム実行ファイルの実行は、ビデオゲームを開始するためにクライアントマシン104によって検出されたユーザ入力に応答して生じ得る。例えば、クライアントマシン104のユーザは、ユーザがリモートシステム106を介してちょうど今取得したビデオゲームを開始するために、ビデオゲームクライアント212のユーザインターフェース要素を選択し得る。言及されるように、いくつかの実施形態では、リモートシステム106は、「最良のユーザエクスペリエンスのために、[ビデオゲームX]のダウンロードを開始してからプレイするまでT分間待機することを推奨します」と述べる推奨を表示することなどによって、クライアントマシン104を介して推奨をユーザ102に出力するためのデータを、クライアントマシン104に送信し得る。いくつかの実施形態では、ビデオゲームクライアント212は、最適なユーザエクスペリエンスを提供するために、閾値期間が経過するまで、および/または閾値数のブロック124のダウンロードが完了するまで、ゲーム実行ファイル122の実行を阻止し得る。代替的に、ビデオゲームがインスタントプレイ128特徴に特に十分適している場合、リモートシステム106は、「このゲームは、インスタントプレイの準備ができているので、すぐにプレイを開始することができます。楽しんで!」と述べる通知を出力することを、クライアントマシン104に指示し得、および/またはビデオゲームクライアント212は、ユーザ102がビデオゲームのプレイを開始することができるようになったときに、いかなる制約も課し得ない。実際には、これは、直ちにプレイを開始するためのビデオゲームの開始時の(例えば、ワールドを探査して、設定を行うときの)、および、おそらくは、任意のゲームデータ126のダウンロードが完了する前のわずかな待ち時間が気にならない一部のプレイヤーにとって好ましい場合がある。
【0075】
814において、クライアントマシン104のファイルシステムプロキシコンポーネント218は、ゲーム実行ファイル122によってクライアントマシン104のファイルシステム220に対して行われた第1の読み出し動作を受信し得る。この第1の読み出し動作は、ビデオゲームのゲームデータ126の第1のブロック124(1)を読み出すことを要求し得る。ゲームデータ126のダウンロードは、ブロック814で読み出し動作を受信した時点で進行中であるので(かなり大きいビデオゲームと仮定する)、ゲーム実行ファイル122がゲームデータ126の未実現ブロック124を読み出すことを要求する可能性が存在し、「未実現」とは、ゲームデータのブロック124が、まだクライアントマシン104の不揮発性メモリ(例えば、第1のメモリ132(1))にダウンロードされていないことを意味する。いくつかの実施形態では、ファイルシステムプロキシコンポーネント218は、要求されたブロック124が不揮発性メモリに実現されているかどうかに関して決定を行うために、またはブロック124がまだダウンロード(例えば、ダウンロードの完了)を必要とする場合に、一時的に(例えば、短時間)読み出し動作を阻止し得る。
【0076】
したがって、816において、ファイルシステムプロキシコンポーネント218は、ゲームデータ126の第1のブロック124(1)がクライアントマシン104の不揮発性メモリ(NVM)にダウンロードされたかどうか(すなわち、第1のブロック124(1)が不揮発性メモリに「実現された」かどうか)を決定し得る。ゲームデータ126の第1のブロック124(1)がクライアントマシン104の不揮発性メモリに実現される場合、ブロック814で読み出し動作を受信する時点で、プロセス800は、ブロック816からブロック818への「はい」のルートに従い得る。
【0077】
718において、クライアントマシン104のファイルシステムプロキシコンポーネント218が、読み出し動作を阻止解除し得、ファイルシステム220が、ゲームデータ126の第1のブロック124(1)をローカルメモリリソース132から読み出すために使用され得る。偶然に、第1のブロック124(1)が実現されて、第1のメモリ132(1)よりも速い読み出しアクセス速度を提供する第2のメモリ132(2)または第3のメモリ132(3)にキャッシュすることによってプリフェッチされた場合、第1のブロック124(1)は、それがキャッシュされるより高速なメモリ132(2)/(3)から読み出され得る。ブロック816において、ゲームデータ126の第1のブロック124(1)がクライアントマシン104の不揮発性メモリに実現されていない場合、これは、第1のブロック124(1)が不揮発性メモリ(例えば、第1のメモリ132(1))へのダウンロードを完了していないことを意味し、プロセス800は、ブロック816からブロック820への「いいえ」のルートに従い得る。
【0078】
820において、クライアントマシン104は、リモートシステム106に、ゲームデータ126の第1のブロック124(1)の第2の要求を送信し得る。言及されるように、ファイルシステムプロキシコンポーネント218は、読み出し動作を遮断および阻止し得る。いくつかの実施形態では、読み出し動作と関連付けられた呼び出しは、クライアントマシン104のカーネル内で遮断および阻止され得、ファイルシステムプロキシコンポーネント218は、ビデオゲームクライアント212へのコールバックを行って、第1のブロック124(1)が実現されていないと決定した場合に、第1のブロック124(1)をダウンロードし得る。
【0079】
822において、クライアントマシン104は、コンピュータネットワーク108通じてリモートシステム106からゲームデータ126の第1のブロック124(1)を受信し得る。ゲームデータ126の第1のブロック124(1)の受信に続いて、ファイルシステム220を使用して、ゲームデータ126の第1のブロック124(1)が読み出され得る。したがって、ファイルシステムプロキシコンポーネント218は、リモートシステム106からブロック124を受信するまで、少なくともゲームデータ126の未実現ブロック124について、読み出し動作を一時的に阻止し得る。これは、すでにクライアントマシン104の不揮発性メモリに実現されているブロック124を読み出す待ち時間と比較して、未実現ブロック124を読み出す際に待ち時間を加え得るが、この構成は、それでもなお、ビデオゲームのゲームデータ126のすべてをダウンロードすることなく、ビデオゲームをプレイすることを可能にする。実際には、任意のゲームデータ126をクライアントマシン104に記憶することなく、ビデオゲームをプレイすることを可能にする。しかしながら、コンピュータネットワーク108を通じてゲームデータ126のブロック124を検索することによって待ち時間が加えられるので、ゲームの実行と並行してゲームデータ126をダウンロードする動作は、ゲーム実行ファイル122がブロック124を読み出すことを要求するまでに、ゲームデータ126のブロック124の、すべてではないが、少なくとも一部が不揮発性メモリに実現され、それによって、待ち時間を低減させることを確実にする。すなわち、リモートシステム106は、同じクライアントシステム構成で他のクライアントマシン104から受信したアクセスデータ110に基づいて、ダウンロードシーケンスをインテリジェントに決定するので、ゲームデータ126の未実現ブロック124を読み出すことを要求する読み出し動作を受信する可能性は比較的低く、たとえ可能であっても、頻繁に発生するとは思われない。代わりに、所与のブロック124の読み出し動作がゲーム実行ファイル122によって行われるまでに、所与のブロック124がすでに不揮発性メモリにダウンロードされて、実現されている可能性があり、よって、ゲーム実行ファイル122は、コンピュータネットワーク108を通じてリモートシステム106から同じブロック124を検索する際に含まれる待ち時間よりも少ない待ち時間で、クライアントマシン104のローカルメモリリソース132からブロック124を読み出すことができる。
【0080】
824において、ビデオゲームのゲームセッションを終了するべきかどうかの決定が行われる。例えば、ユーザ102がビデオゲームを止めた場合、プロセス800は、ブロック824からブロック826への「はい」のルートに従い得、ビデオゲームクライアント212は、ゲーム実行ファイル122の実行を停止させ得る。ブロック824において、ゲームセッションを終了するべきでなかった場合(例えば、ユーザ102がゲームをプレイし続けている場合)、プロセス800は、ブロック824からブロック814への「いいえ」のルートに従い得、追加的な読み出し動作が受信され得る。ユーザ102がゲームをプレイし続けるときに、このようにしてプロセス800の一部分を繰り返し得、ゲームデータ126の未実現ブロック124は、必要な場合にオンデマンドで、リモートシステム106から検索される。ファイルシステムプロキシコンポーネント218が不揮発性メモリで利用可能なブロック124に関してビデオゲームに「嘘をつく」この手法を使用することは、ビデオゲームの参照のフレームから、ゲームのコンテンツが第1のメモリ132(1)に記憶されているように見えると理解することができる。ビデオゲームは、ローカルメモリリソース132からゲームデータ126が利用可能であると予想し得、様々な因子(例えば、他の動作中のプロセスによって消費されるリソース、など)に基づいて、クライアントマシン104とクライアントシステム104との間で変動する読み出しアクセス速度が習慣化し得るか、または単一のクライアントマシン104での読み出しアクセス速度の変動が存在し得る。これはすべて、プロセス800の手法が、ワイドエリアネットワーク108を通じてゲームデータ124の未実現ブロック124を検索するために、おそらく少し遅くなる場合があるにもかかわらず、ビデオゲームをクラッシュさせないことを意味する。
【0081】
プロセス800を使用することで、ユーザ102は、自分がゲームを取得した後に、望めばすぐにビデオゲームのプレイを開始することができる。さらに、プロセス800の技術は、ゲームに左右されるものではなく、これは、インスタントプレイ128特徴を可能にするために、ゲーム開発者がいかなる作業も行う必要がないことを意味し、むしろ、ビデオゲームをクライアントシステム構成の異種の集団に配信するビデオゲーム配信プラットフォーム上のすべてのゲームの価値を高める。
【0082】
図9は、ゲームデータ126のブロック124をプリフェッチしてゲームプレイ中の待ち時間を低減させるための例示的なプロセス900のフロー図である。
【0083】
902において、クライアントマシン104は、リモートシステム106から、クライアントマシン104の構成と関連付けられたブロック依存性データ116を受信し得る。このブロック依存性データ116は、ビデオゲームのゲームデータ126の2つの以上のブロック124の間の個々の関連を指定し得る。
【0084】
904において、クライアントマシン104は、ビデオゲームのゲーム実行ファイル122を実行して、クライアントマシン104上のビデオゲームを開始し得る。ビデオゲームがクライアントマシン104にインストールされているので、ゲーム実行ファイル122は、すでにクライアントマシン104上で利用可能であり得る。ゲーム実行ファイル122の実行は、クライアントマシン104のユーザ102がゲームのプレイを開始することを可能にする。さらに、ゲーム実行ファイル122の実行は、クライアントマシン104によって検出されたビデオゲームを開始するためのユーザ入力に応答して生じる。例えば、クライアントマシン104のユーザ102は、ビデオゲームを開始するために、ビデオゲームクライアント212のユーザインターフェース要素を選択し得る。
【0085】
906において、閾値を超える容量が「プリフェッチキャッシュ」内に存在するかどうかに関する決定が行われ得る。「プリフェッチキャッシュ」は、本明細書で使用されるとき、ゲームデータ126のプリフェッチされたブロック124に割り当てられた(または予約された)キャッシュを意味する。本明細書で説明されるように、第2のメモリ132(2)および/または第3のメモリ132(3)-第1のメモリ132(1)よりも速い読み出しアクセス速度を提供する-は、プリフェッチキャッシュを提供し得、ローカルメモリ132(2)/(3)のいずれかは、またはどちらも、100メガバイトなどの任意の好適なデータ量に設定することができる。この実施例では、ゲーム実行ファイル122が、プリフェッチしたゲームデータ126を読み出すことを要求する前に、100メガバイトものゲームデータ126を、ゲームセッション中にプリフェッチすることができる。100メガバイトは、単なる一例に過ぎず、プリフェッチキャッシュは、より少ないまたはより多いデータ量に設定することができる。したがって、ブロック906において、プリフェッチキャッシュを監視して、どのくらいプリフェッチキャッシュが満たされているかを決定することができ、キャッシュ容量が閾値量を満たす、または超えた場合、ゲームデータ126の追加的なプリフェッチをトリガすることができる。ブロック906で評価される、プリフェッチキャッシュのこの閾値容量は、任意の好適な量に設定することができる。例えば、ゲームデータ126の個々のブロック124のサイズが4096バイトである場合、閾値容量は、わずか4096バイトの容量に設定され得、これは、ゲームデータ126のブロック124をプリフェッチするのに十分な空間である。しかしながら、閾値容量は、プリフェッチアルゴリズムを通した実行中に複数のブロック124をプリフェッチすることができることを確実にするために、より多いバイト/メガバイト数に設定され得る。
【0086】
例示的な使用事例では、使用事例、クライアントマシン104のユーザ102が、ゲームのライブラリページにナビゲートされ得、ゲームデータ126の一組のブロック124が、クライアントマシン104の第2のメモリ132(2)および/または第3のメモリ132(3)内の100メガバイトのプリフェッチキャッシュを満たすようにプリフェッチされ得る。ユーザ102がビデオゲームをプレイし続けるときに、ファイルシステム220は、プリフェッチされたブロック124の1つ以上を読み出すためにゲーム実行ファイル122によって行われた読み出し動作と関連付けられた呼び出しを受信し得る。ブロック124を検索するためにクライアントマシン104の第1のメモリ132(1)にアクセスする代わりに、ファイルシステム220は、プリフェッチされたブロック132がキャッシュされる第2のメモリ132(2)または第3のメモリ132(3)のうちの少なくとも1つにアクセスし得、その結果、プリフェッチキャッシュの容量が増加し始める。このプリフェッチキャッシュの容量が閾値を満たすかまたは超えると、追加的なプリフェッチングがトリガされて、プリフェッチキャッシュを満たし得る。したがって、ブロック906において、閾値を超える容量がプリフェッチキャッシュ内に存在する場合、プロセス900は、ブロック906からブロック908への「はい」のルートに従い得る。
【0087】
908において、クライアントマシン104のロジックは、どんなゲームデータ126のブロック124をプリフェッチするかを決定するために使用されるイベントを検出し得る。例えば、サブブロック910において、検出したイベントは、コンテキストキュー(例えば、ユーザがビデオゲームのライブラリページにナビゲートする)であり得る。別の例として、サブブロック912において、検出したイベントは、ゲームデータ126の特定のブロック124を読み出すためにゲーム実行ファイル122によって行われた読み出し動作を受信するファイルシステムプロキシコンポーネント218であり得る。
【0088】
914において、クライアントマシン104のロジックは、ブロック依存性データ116を使用して、検出されたイベントと関連付けられる、ゲームデータ126の1つ以上のブロック124を識別し得る。例えば、ブロック908で検出したイベントが、ゲームデータ126のブロックAを読み出すことを要求したゲーム実行ファイル122である場合、およびブロック依存性データ116が、ブロックAへのアクセスから閾値期間内にゲーム実行ファイル122によってブロックBがアクセスされる可能性が高いことを示す場合、ロジックは、ブロック914において、ブロックBを識別し得る。
【0089】
916において、識別されたブロック124は、第1のメモリ132(1)(例えば、HDD、SDカードなどの不揮発性メモリ、など)よりも速い読み出しアクセス速度を提供するローカルメモリ132にキャッシュされ得、ゲームデータ126は、クライアントマシン104に残存する。したがって、識別されたブロック124は、第2のメモリ132(2)(例えば、SSDなどの、追加的な不揮発性メモリ)または第3のメモリ132(3)(例えば、RAMなどの揮発性作業用メモリ)のうちの少なくとも1つにキャッシュすることができる。サブブロック918によって示されるように、914でゲームデータ126の複数のブロック124が識別された場合、第2のブロック124(2)を第2のメモリ132(2)にキャッシュすること、第3のブロック124(3)を第3のメモリ132(3)キャッシュすること、などによって、ブロック124を複数の異なるプリフェッチキャッシュにキャッシュすることができる。このようにして、プリフェッチされたゲームデータ126のブロック124は、負荷バランシング技術を使用して、複数のローカルメモリリソース132の複数のプリフェッチキャッシュにわたって配信され得、第3のメモリ132(3)が第2のメモリ132(2)よりも速い読み出しアクセス速度を提供するにもかかわらず、いくつかのゲームデータ126が第2のメモリ132(2)にキャッシュされ、ほぼ等しい量のゲームデータ126が第3のメモリ132(3)キャッシュされる。このようにして、プリフェッチされたゲームデータ126は、負荷バランスをとって、ゲームプレイ中にゲームデータ126が任意のおよびすべてのローカルメモリリソース132から並行してアクセスすることができるという点で、システムの全体的なスループットを向上させることができる。この負荷バランシングスキームでは、読み出し動作の1%が第1のメモリ132(1)からのゲームデータ126にアクセスすると予測され、読み出し動作の9%が第2のメモリ132(2)からのゲームデータ126にアクセスすると予測され、読み出し動作の90%が第3のメモリ132(3)からゲームデータ126にアクセスすると予測される場合があり得る。
【0090】
920において、クライアントマシン104のファイルシステムプロキシコンポーネント218は、ゲーム実行ファイル122によってファイルシステム220に対して行われた読み出し動作を受信し得、読み出し動作は、ビデオゲームのゲームデータ126の特定のブロック124を読み出すことを要求する。
【0091】
922において、(例えば、ファイルシステム220によって)要求されたブロック124が、比較的速い読み出しアクセス速度を提供するローカルメモリリソース(例えば、第2のメモリ132(2)または第3のメモリ132(3))のプリフェッチキャッシュにキャッシュされるかどうかに関して決定が行われ得る。ブロック124がプリフェッチキャッシュにキャッシュされている場合、プロセス900は、ブロック922からブロック924への「はい」のルートに従い得、ブロック124がプリフェッチキャッシュから読み出され得る。例えば、ゲーム実行ファイル122は、ブロック124がキャッシュされる場所に応じて、第2のメモリ132(2)または第3のメモリ132(3)からゲームデータ126のブロック124を読み出し得る。ブロック124がプリフェッチキャッシュにキャッシュされていない場合、プロセス900は、ブロック922からブロック926への「いいえ」のルートに従い得、ブロック124が第1のメモリ132(1)から読み出され得、ゲームデータ126は、クライアントマシン104に残存することができる。
【0092】
928において、ビデオゲームのゲームセッションを終了するべきかどうかに関する決定が行われる。例えば、ユーザ102がビデオゲームを止めた場合、プロセス900は、ブロック928からブロック930への「はい」のルートに従い得、ビデオゲームクライアント212は、ゲーム実行ファイルの実行を停止させ得る。いくつかの実施形態では、ユーザ102が、ゲームセッション、およびクライアントマシン104を再起動する場合、第2のメモリ132(2)にプリフェッチされたゲームデータ126は、第2のメモリ132(2)が追加的な不揮発性メモリ(例えば、SSD)を表す場合の再起動時に、第2のメモリ132(2)のプリフェッチキャッシュに記憶されたままであり得る。このようにして、再起動後にユーザ102が別のゲームセッションを開始した場合、もしブロック124が後続のゲームセッション中にゲーム実行ファイル122によって要求されたときに、第2のメモリ132(2)にキャッシュされたままであるゲームデータ126のブロックをそこから検索することができる。ブロック928において、ゲームセッションを終了するべきでなかった場合(例えば、ユーザ102がゲームをプレイし続ける場合)、プロセス900は、ブロック928からブロック906への「いいえ」のルートに従い得、プリフェッチキャッシュの容量は、プロセス900の一部分がブロック906からの開始を繰り返すために再度評価される。906において、閾値を超える容量がプリフェッチキャッシュ内に存在していない場合(例えば、プリフェッチキャッシュが、プリフェッチされたゲームデータ126を過剰に満たしているとみなわれる場合)、プロセス900は、ブロック906からブロック920への「いいえ」のルートに直接従い得、プリフェッチキャッシュのゲームデータ126をプリフェッチすることなく、ファイルシステムプロキシコンポーネント218によって読み出し動作が受信される。
【0093】
プロセス900は、第1のメモリ132(1)から排他的にゲームデータ126にアクセスすることと比較して、全体的な待ち時間を低減させることによって、ゲーム実行中のローディング時間を減少させることができ、ゲームデータ126は、クライアントマシン104に残存する。このようにして、比較的大きなビデオゲームを第1のメモリ132(1)(例えば、HDD、SDカード、など)に記憶することができ、さらに、ゲーム実行ファイル122がゲームデータ126のブロック124を読み出すことを要求するまでに、ブロック124がゲーム実行ファイル122によって要求されたときに、前もって、ゲームデータ126のブロック124を第3のメモリ132(2)(例えば、RAMなどの作業用メモリ、不揮発性メモリ)に、および/または第2のメモリ132(2)(例えば、SSD)にキャッシュすることによって、ゲームデータ126がインテリジェントにプリフェッチされ得るので、ブロック124は、読み出しアクセス時間を低減させるために、すでにプリフェッチキャッシュにキャッシュされている可能性が高い。
【0094】
本主題は、構造的特徴に固有の言語で説明されているが、添付の特許請求の範囲で定義された主題が必ずしも説明された特定の特徴に限定されないことを理解されたい。むしろ、特定の特徴は、特許請求の範囲を実装する例示的な形態として開示される。
【国際調査報告】