ゲームを完全にダウンロードする前に、どのようにしてゲームをプレイ可能にしますか?


75

Diablo 3StarCraft 2には素晴らしい機能があります。ゲーム全体またはアップデートのダウンロードが完了する前にプレイを開始できます。

Diablo 3は、UIアセットや、いくつかのレベルで使用されるいくつかのメッシュやテクスチャなどの必須ファイルを最初にダウンロードすると思います。ただし、ゲームを開始するときに、適切なセーブがあれば、好きなレベルを選択できます。プレイ中にこのような遅れは一度も経験していません。開始は常に非常にスムーズです。

これはどのように作動しますか?同様の機能をどのように実装できますか?


2
World of Warcraftも:P
Kroltan 14年

3
Webページ全体をダウンロードする前に、Webページはどのように表示されますか?Google画像検索では、ダウンロードに無限の時間を使用せずに、画像の無限リストをどのように表示できますか?ゲームはより洗練されていますが、非常に似ています。
ライライアン

2
@LieRyan:「ゲームはより洗練されています」に関して、そのフレーズにはまったく基本的なものがありません。より洗練されたゲームもあるかもしれません(同様に、アプリストアを見ると、それは深刻な問題を解決しないソフトウェアの大部分です)何千ものサーバーと毎日数十億のユーザーリクエストを処理して保存します。そして、検索はその会社の多くの機能の1つにすぎません。ですから、ゲームは本質的に「通常の」ソフトウェアよりも複雑であると考えるライフフェーズを通過してください。
フレネル14年

1
@jhocking:あなたは私に話しかけていますか?(もしそうなら、@ <username>を使用する方が良いので、通知されます)いや、それほど苦くない。私が若かったとき、games-devはソフトウェア工学の丘の王様になると思いました。特に商用ゲームの多くのソースコードのリリース後、私は今よりよく知っています:)それはポップアップし続ける一般的な誤解です。Games-Devは実際にはEliteのように見えますが、実際にはスーパーコンピューティング、検索エンジン、画像認識、電子メールマーケティング、または大規模E向けのERPのように、ソフトウェア開発のもう1つの専門分野にすぎません。
フレネル14年

1
簡単に言っておくと、私は自宅の帯域幅が貧弱で(農村部での生活費)、「プレイ可能」と言ってもゲームをプレイできません。「最適」を待つ必要があります。そうしないと、ロード画面ごとに5分間待機することになり、遅延は非現実的です。帯域幅を制限することで、おそらく自分でさらにテストを行うことができます。
ダブルダブル

回答:


72

サウンド、ビデオ、モデル、テクスチャなどのアセットはダウンロードの大部分であり、これらの各アセットには複数のバージョンがあります。これらの複数のバージョンは、さまざまなグラフィックオプションをサポートします。

低グラフィックオプションに必要なアセットを最初に送信する(これもたまたま最小のものです)。すべてのグラフィックオプションをサポートするのに必要な総資産の15%しか持っていないにもかかわらず、ゲームをプレイするために必要なものはすべて揃っています。

これをテストするには、StarCraft 2を再インストールします。グラフィカルオプション画面に移動したらすぐに再生します。多くのオプションと設定は利用できません。


24
適切な線形性を備えたゲームのマップまたはレベル全体に同じ手法を適用することもできます-最初のレベルを最初にダウンロードするか、または何か。Guild Wars 2は、たとえば、ディスク上のオーディオおよび開始領域(および追加領域)のみを出荷しました。
ジョシュ

12
一部のゲーム(Blizzardゲームなど)には、ゲーム内の現在の場所に基づいて、アセットをオンデマンドでダウンロードする機能もあります。これは、ローカルハードドライブからアセットが非同期でストリーミングされることが多いのとほとんど同じように機能しますが、この場合、要求されたアセットの準備が整うまでの遅延が大きくなります。
bcrist 14年

1
IIRC、Diablo 3はJosh Petrieによって記述された方法を使用します-リソース(おそらく、この回答に記載されている低品質バージョンのみ)が再生可能になりますが、最初はAct Iのみが再生可能になります。それはあなたが十分にあなたのインターネット接続を絞る場合は、あなたが停止し、ダウンロードが法I.終了後にキャッチアップできるように強制されます、である
アーロン・デュフール

1
別の言い方をすると、ゲームは実行可能ファイルがインストールされるとすぐに技術的に実行できます。これはわずか数メガバイトのデータになります。ゲームに到達できる距離は、使用可能なアセットの数によって異なります。20GBでインストールするゲームには、約19.9999GBのデータと0.0001GBの実行可能コードがあります。ネットワークからのデータのロードを継続できる限り、インストールの1%未満でゲームを実行できます。
phyrfox 14年

1
@Brian編集履歴を見てください。私が答えを書いたとき、それはそれらのことを尋ねなかった。
ClassicThunder 14年

33

私はかつてこれをMMOに実装しました。ある週末、娘にWOWをインストールしようとすると48時間(パッチ、ダウンロードエラーなど)かかったので、より良い解決策を作成することにしました。

通常、ゲームを実行するには10 GBのデータが必要です。すべてのファイルがすぐに実際に必要なわけではありませんが、ゲームはすべてのファイルがローカルに存在するまで待機していました。私の解決策は、ゲームを通常どおりローカルで実行することでしたが、EXEは(Windowsファイルミニフィルターを使用して)すべてのファイルが既に存在していると思わせました。要求されたファイルがローカルではない場合、ファイルシステムはそれをダウンロードして保存しました。ゲームは必要に応じてローカルにゆっくりコピーされました。使用可能な帯域幅がある場合、まだ必要のない他のファイルはバックグラウンドでトリクルされました。これは、必要なときにミニフィルタードライバーがファイルを取得したため、再コンパイルする必要なくすべてのゲームで機能しました。

最悪の欠点は待ち時間でした。私の解決策は、小さなマルコフ連鎖モデルを作成して、次に必要なファイルを予測し、バックグラウンドローダーを優先させることでした。これは魅力のように機能し、MMOは、EXEといくつかの読み込み画面ファイルがローカル(20 MB以下)になった後、すぐに実行できました。ウェブページ上のリンクをクリックして、約30秒で10 GB以上のゲーム実行することができました。ヒット率は99%でした。つまり、ゲームに新しいファイルが必要になったとき、そのファイルはすでにそこにありました。

他の誰かがこれを実装するのを手伝って喜んでいます。


5
+1と、このドライバーを共有できたら素晴らしいと思います。なぜなら、私はそのようなものを探していて、あなたと同じように自分で作成しようとしていたのですが、既に完了していれば喜んで使用します。
フルカンオメイ14

5
いくつかの非常に高度なエンジニアリングの興味深い使用。あなたは本当にこれについてのブログ投稿を書くべきです。:)機械学習技術は実際にどの程度役立ちましたか?どのファイルが必要かをどれだけうまく予測できましたか?
ポールマンタ14年

1
@FurkanOmayそのようなことは、ほとんどの場合、誰かの雇用主の会社財産です。おそらく契約条件を破るように人々に頼まないでください。
14年

@jwenting私が理解したことから、彼がやったことは会社のためではなく、彼の娘とWoWのようなゲームのためでした。丁寧にお願いしているだけで、誰も強制されていません。彼は何らかの理由で拒否することができ、すべてが大丈夫です。彼は「他の誰かがこれを実装するのを手伝ってくれると喜んでいる」と言ったので尋ねたので、私はすでにこれを地面から実装したいと言っているので、少なくとも出発点を求めることは悪い考えではないと思いますアップ。
フルカンオメイ14

3

また、一部のゲームでは、ゲーム終了時のワールドエリアとファイルが遅延し、必須エリアのみが保持され、ゲームのプレイ中にインストールすることもできます。


2

数人が言ったことを要約し、おそらくいくつかの情報を追加するには:

  • 最初のダウンロードは小さく、残りはスタートアップファイルとダウンロードマネージャーだけです。アカウントの作成、アバターの作成、そしておそらくこれに開始ゾーンを含めるといいでしょう。
  • それが実行されている間、ユーザーはログインしてアバターを作成し、他のもの、低レベルゾーン、共通ファイルのダウンロードを最初に開始します(基本的なサウンドやテクスチャなど、ゲーム全体で可能な限り再利用します)
  • ユーザーがレベルを進むにつれて、今後のゾーンやその他のコンテンツの事前ダウンロードを開始します
  • ユーザーがダウンロードが必要なオプションを選択した場合、最初に低解像度の亜種をダウンロードし、必要に応じて高解像度のバージョンをダウンロードし、表示されている低解像度のバージョンをオンザフライで置き換えます。そうすることで、ユーザーは何かを見ることができ、ゲームの栄光が次第に明らかになります(もちろん、十分な帯域幅とコンピューターのパワーがあれば)
  • すべてがダウンロードされるまで繰り返します


すべてのコンテンツがローカルにキャッシュされるまで、プレイ中のネットワーク負荷が高くなりますが、サーバーへの初期バースト負荷が小さくなり、ユーザーがゲームを最初にダウンロードする間の待ち時間が短くなり、イライラすることも少なくなります。
もちろん、ユーザーのネットワーク接続が遅い場合、ゾーンを切り替えるときに「お待ちください、コンテンツをロードしています」というメッセージが表示される場合があります。または、ゲームを最初に起動するときにダウンロードするには帯域幅を確認したい場合があります確実にその場で彼を待ってから、少なくとも最初のレベル全体を待機させます(まだ完全にダウンロードされていないゾーンに入るときも)。
これは、ユーザーのネットワーク接続が行き詰まってしまうために、ユーザーが実際のゲームプレイの途中で遅れることを防ぐためです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.