ストリーミング ウェブ プレイヤーは,エンド ユーザーに素晴らしいウェブ ゲーム体験を提供するために重要です。 ウェブ ゲームの裏にある考えは,進捗バーを待つ代わりに,ユーザーがほぼすぐに内容を確認し,できる限りすぐにゲーム プレイを開始できるということです。 これは,簡単に達成できます。以下で方法について説明します。
本項では,主にオンライン ゲーム ポータルのパブリッシュについて説明します。 ストリーミングはあらゆる種類のコンテンツに便利で,その他多くのシチュエーションに簡単に適用できます。
オンライン ゲーム ポータルは,ある形態のゲーム プレイが多くても 1 MB のデータをダウンロード後に本当に開始されることを期待します。 到達しない場合,ポータルがコンテンツを受け入れる可能性は低くなります。 ユーザーの観点から言えば,ゲームは素早く開始する必要があります。 そうでない場合,時間が無駄になり,プレイヤーがウィンドウを閉じてしまうかもしれません。
128 キロビットのケーブル接続では,毎秒 16KB または毎分 1MB をダウンロードできます。 これはオンライン ポイントが対象としている帯域幅の低い側です。
ゲームは以下の内容をストリームするよう,最適に設定されます。
覚えておくべきことは,遅い接続でユーザーにとっての待ち時間で考えるということです。 決してプレイヤーを待たせてはいけません。
ウェブ プレイヤーが現在,10MB でも慌てないでください。 これを最適化するのは気が遠くなるように思えますが,通常わずかな量力で極めて簡単にこの方法によりゲームを構築できます。 上記の各手ステップは個別のシーンと考えてください。 ゲームを作成したら,すでに難しい部分は終了しました。 このローディング コンセプト周辺でシーンを構築するのは非常に簡単です!
ビルド後またはビルド中に,コンソール ログを開くと (コンソール ウィンドウ (Desktop Platforms) の , メニュー OSX),個々のシーン ファイルのサイズを確認できます。 コンソールは以下の内容を表示します。
* Player size statistics***
Level 0 'Main Menu' uses 95.0 KB compressed.
Level 1 'Character Builder' uses 111.5 KB compressed.
Level 2 'Level 1' uses 592.0 KB compressed.
Level 3 'Level 2' uses 2.2 MB compressed.
Level 4 'Level 3' uses 2.3 MB compressed.
Total compressed size 5.3 MB. Total decompressed size 9.9 MB.
このゲームは,更にもう少し最適化を使用できます! 詳細については,ファイルサイズ削減 のページ を参照してください。
最初にメニューをロードします。 アニメート化されたロゴを表示することで,意識されることなく時間が経過し,ダウンロードを更に進めることができます。
最初のレベルは短くし,多くのアセットを使用しないこと。 このようにして,最初のレベルは素早くダウンロードでき,占有しているプレイヤーに 1,2 分プレイを続けさせることで,残っているアセットのすべてのダウンロードがバックグラウンドで完了するようにできます。 ユーザーゲームのコントロールを学ぶことができるミニ チュートリアル レベルを用意してみては? ここでの高レス テクスチャまたはオブジェクトのロード,最初のレベルですべての敵を配置する理由はありません。 最も低いポリゴン数のものを使用します。 そう,これは,ウェブ プレイヤーでゲームをデザインする必要がある場合があるということです。
ゲーム開始時にすべての音楽が利用できる理由はありません。 音楽を外部に置き,WWW クラスを介してロードします。 Unity は,高品質コーデック,Ogg Vorbis でオーディオを圧縮します。 しかし,圧縮されても,オーディオは多くの容量を使用します。3MB に合わせる場合,5 分間の音楽の場合は,世界での圧縮はすべて時間を省きません。 犠牲が必要です。 更に音楽がダウンロードされるまでループ再生できる非常に短いトラックをロードします。 プレイヤーが最初のレベルでフックされた場合にのみより多くの音楽をロードします。
インポート設定を使用してテクスチャを最適化します。 音楽を外部に置いた後,テクスチャは簡単にゲームの 90% を使用します。 通常のテクスチャのサイズは,ウェブでの配備には大きすぎます。 小さいブラウザ ウィンドウ,大きいテクスチャは視覚的信頼性を増しません。 必要な大きさしかないテクスチャを使用してください (ここでより多くの犠牲の準備ができました)。 テクスチャ解像度を半分にすると,実際,テクスチャのサイズは 1/4 になります。 当然,すべてのテクスチャは,DXT 圧縮する必要があります。
一般にウェブ プレイヤーのサイズを減らします。 Unity が提供するファイル サイズの最適化のためのユーティリティ用のマニュアル ページは,ここ です。 Unity は,通常ゲーム データを圧縮されていないサイズの 1/2 から 1/3 の間に圧縮する最新の LZMA ベース圧縮を使用していますが,できることはすべて試す必要があります。
Resources.Load を避けてみてください。 Resources.Load は非常に便利ですが,Unity は,スクリプトがリソースをロードしようとするため,Resources.Load 使用時に,最初に使用されるタイミングでアセットを順序付けることはできません。 「`First Streamed Level With Resources」プロパティを使用して,
で,Resources.Load を通じてロードできるすべてのアセットを含めるレベルを設定できます。 明らかに,ゲームにできるだけ後で Resources.Load アセットを移動したいか,またはこの機能を使用したくないことでしょう。Unity でのストリーミングは,レベル ベースで,これを設定するための簡単なワークフローがあります。 内部では,Unity はアセットの追跡や圧縮データ ファイル内でのその最適な配置,使用する最初のシーンによる順序付けなどの汚い仕事をすべて行なっています。 単純に,ビルド設定での最初のレベルが使用するアセットの数をできるだけ少なくする必要があります。 これは,当然「メニュー レベル」が目的ですが,よいウェブ体験をのためには,プレイヤーがプレイしようとしている最初の実際のゲーム レベルも小さくする必要があります。
Unity でストリーミングを使用するには,ビルド設定で「Web Player Streamed」を選択します。 次に,最初のレベルによって使用されるすべてのアセットがロードサれるとすぐに,コンテンツが自動で開始されます。 「メニュー レベル」を 50–100 KB ぐらいに維持してみてください。 ストリームは可能な限り高速でロードし続けますが,一方でリアルタイムで解凍を行います。 ビルド中/後にコンソールを見ると,どのくらいの大きさかが分かります。
レベル別にストリームの進捗を問い合わせることができ,レベルが利用可能になると,ロードできるようになります。 進捗バーを表示するには,GetStreamProgressForLevel を使用し,特定のレベルをロードするのにすべてのデータが利用できるかをチェックするには,CanStreamedLevelBeLoaded を使用します。
このストリーミングの形式は当然線形で,これはほとんどの場合でのゲームがどのように機能するかに一致します。 これでは不十分なことがあります。 そのため,WWW クラスを使用して,.unity3d ファイルをロードできるよう,Unity では API も提供しています。 ビデオやオーディオもストリーミングされ,動画を最初にダウンロードする必要なく,ほぼすぐに再生できます。 最後に,テクスチャは,ゲームが依存しているかもしれないテクスチャまたはバイナリ データ同様,WWW クラスを介して簡単にダウンロードできます。