Version: 2019.3
言語: 日本語
モバイル用の最適化に関する実用ガイド
スクリプトとゲームプレイ方法

グラフィックスメソッド

モバイルデバイスでは何ができるのでしょうか?ゲームに応じた、どのような計画が必要になるでしょう?ゲームの実行が遅く、プロファイラーがレンダリングのボトルネックを指し示しているとき何を変更したらよいかどうやったら判るでしょう?見栄えがよいままに実行を速くするにはどうしたらよいのでしょうか?このページでは、一般的かつ専門的になり過ぎないように、その方法を解説しています。詳細な情報が必要な場合は、レンダリングの最適化を参照してください。

どのくらい、現在のコンシューマー向けモバイルで合理的に実行を期待できるか:

  • 静的なジオメトリをライトマップしますが、以下に注意:
    • アルファテストシェーダーを多くを使う
    • バンプマッピング、特に組み込みシェーダーを使う。
    • 多ポリゴン回数
  • 派手なシェーダーでの文字のアニメーションは以下に注意:
    • 大規模な群衆または高ポリゴン文字
  • スプライトと 2D ゲームは以下に注意:
    • オーバードロー、またはお互いの上に多くのレイヤーを描く
  • パーティクルエフェクトは以下に注意:
    • 大きな粒子上で高密度(多くの粒子が互いの上に描かれ、これは別のオーバードロー状況)
    • 粒子の莫大な数、または粒子加速器
  • フィジクスは以下に注意:
    • メッシュの加速
    • たくさんのアクティブボディ

現在のコンシューマー向けモバイル端末で何の動作を期待できないのか。

  • グローと被写界深度のようなフルスクリーン画面イメージ効果
  • ダイナミックピクセル単位のライティング(複数の光が重要とマークされ、ライトマップにベイクされない)
    • すべての影響を受けるオブジェクトは、使用するすべての動的光のために追加の時間内に描いているが、これはすぐに遅くなります。
  • すべてのものにリアルタイムシャドウ
    • Unity は、モバイルプラットフォーム上でリアルタイムのシャドウのネイティブサポートを提供していますが、使用はハイエンドデバイスに限定するのが非常に賢明と思われます。

例 - 一流のモバイルゲームで行われている方法

Shadowgun

Shadowgun は、現在のモバイルハードウェアでできることを示す印象的な例です。より具体的に、何ができないのか、どのように制限を回避するかを示すよい例です。ゲームの一部が ブログ投稿の中で公開されています。

ここは、Shadowgun の性能を上げるために行った基本的なことの要約です:

  • ダイナミックライティング - あまり使用されない。
    • ブロブシャドウとライトマップが実際の影の代わりに使用されている。
    • Lightprobes は、実際の光の代わりに、自分のキャラクターに使用されている。
      • マズルフラッシュがスクリプトを経由してライトプローブデータに追加される。
    • 唯一の動的ピクセル単位のライティングはキャラクター上の BRDF (反射成分)を計算するために使用される任意の光の方向です。
  • バンプマッピング - あまり使用されない。
    • リアルバンプマッピングは、キャラクター上だけで使用される。
    • 可能な限りコントラストや細部を拡散テクスチャマップにベイクし、バンプマップからのライティング情報でベイクします。
    • よい例が右側に見られるような、彫像の質感または、光沢のある壁です。バンプマップはこれらのレンダリングに使用されておらず、鏡面性はテクスチャにそれをベイクすることでフェイクされています。これらのモデルに光沢のある外観を与えるために、頂点ライティングベースの鏡面ハイライトとライトマッピングが組み合わされてます。
    • あなたがこのようなテクスチャを作成する方法を学習したい場合、レンダリングの最適化ページをチェックしてください。
  • 高密度の粒子 - 回避
    • UV スクロールテクスチャで密なパーティクルエフェクトを代りに使う
  • フォグ効果 - 回避
    • それらの神の光は、手でモデル化されている
    • フェードインとアウトの一平面は、実際にフォグをレンダリングせず、シネマフォグ効果を達成するために使用される。
      • これはプレーンが極めて少ないので、より高速になります。それはフォグはすべてのピクセルとすべてのシェーダーで計算する必要がないことを意味します。
  • グロー - 回避。
    • ブレンドスプライト面は特定のオブジェクト上にグローな外観を与えるために使用されます。

Sky Castle デモ

このデモは、ハイエンド Android デバイス上で Unity の持つ可能性を示すために設計されました。

  • ダイナミックライティング - 使用しない。
    • ライトマップのみ。
  • バンプマッピング - 使用
    • レンガはすべてバンプマップされ、指向性のライトマップに照らされます。これは“ハイエンドデバイス”の役割の出番です。
  • リアルタイムの反射 - 制限されています。
    • 彼らは個別にそれらのリアルタイム反射面を慎重に配置し、切り離されたエリアを一度に 1 回実行します。そして、二度実行する必要がある環境は簡単に選別できます。

最低限のライン - これがあなたのゲームに対して意味するもの

モバイルデバイスの限界をより理解すれば、ゲームの見栄えをより良くしつつ、よりスムーズに動くようにする事ができます。モバイル用にハイクラスのゲームを作りたい場合、Unity のグラフィックス·パイプラインを理解し、独自のシェーダーを書けるようになることは有益です。今すぐ何か始めたいのであれば、ここにある ShadowGun のシェーダーが、始めるにちょうど良いでしょう。

シミュレートせず、焼き付ける!

ゲームでも自然の法則に従う方が良いのは間違いありません。発射体の動きは全て放物線状になり、クロームの輝きをあらわす各ピクセルの色は、最初に記述した、現実世界の観察結果を模倣するための式で引き出されます。しかし、ゲームには科学的なシミュレーションの部分と、絵画的な部分があります。モバイル市場では、物理的に正確なレンダリングを使うことはできません:単純に、そこまで性能の高いハードウェアがまだ存在せず、現実世界のすべてを模倣しようとすると、ゲームが制限され、単調で、もたつくものになってしまいます。

あなたはポリゴンとペイントブラシのようなブレンドモードをピックアップする必要があります。

Shadowgunに示されている レンダリングの最適化は、このすばらしい例です。スペキュラハイライトは、テクスチャにすでにあり - 人間の目は、実際に反射光とビューの方向と合わないと気付かない - それらは、単なるテクスチャ上のハイコントラストの詳い絵であり、完全に偽せたもので、見た目だけのものに終わってます。これは多くの成功したゲームで使用されている一般的なチートな技法です。 過去にリリースされた最初の Helo のスクリーンショットの中のバイザーとこの リリース中のもののスクリーンショットのバイザーを比較してみます。ヘルメットの上から装甲の突起がバイザーに反射してが表示されてますが、反射が実際にバイザーテクスチャにベイクされてます。League of Legends では、スペル効果がそれに取り付けられた画素の光を出しているように見えますが、実際にはおそらく地面に輝く画素の光のスクリーンショットを取って生成されたテクスチャとブレンドのプレーンです。

何がうまく動作しているか:

  • ライトマップ静的ジオメトリ
    • ドラマチックなライティングと動的な環境を混同しないでください。どちらか一方を選択してください。
  • オブジェクトを移動するためのライトプローブ
    • 現状のモバイルハードウェアでは、沢山の動的な光源から実際に影をおとすことはできません。複雑なゲーム世界を静的なライティングで表現するなら、ライトプローブが適切な解決方法になります。
  • 専門のシェーダーや詳細、高コントラストのテクスチャ
    • ShadowGun のシェーダーは、ピクセル単位の計算を最小限にして、複雑かつ高品質のテクスチャを利用してます。シェーダーがシンプルでも、テクスチャで見栄えを良くする方法については、レンダリングの最適化ページを参照してください。
  • カートゥーングラフィックス
    • 誰かがあなたのゲームが写真のように見えるようにと言っている?ライティングやアトモスフィアをテクスチャ・アーティスト(エンジンでなく)の責任なら、あなたはレンダリングの最適化についてほとんど心配する必要はありません。。

何が動作しないのか:

  • グローおよびその他のポストエフェクト
    • 可能であればブレンドされたクワッドを使って、おおよそこのような効果の例として Shadowgun プロジェクトをチェックしてください。
  • バンプマッピング、特に組み込みのシェーダーと一緒に使われる
    • いちばん重要なキャラクターやオブジェクトだけに、控えめに使用するようにしてください。スクリーン全体を占有するようなものには、バンプマップを使わない方が良いでしょう。
    • バンプマップを使用する代わりに、拡散テクスチャに詳細とコントラストをベイクします。League of Legends のエフェクトは業界でよく使われる成功した興味ある例です。

しかし、実際にそれをどのように行えばいいのでしょうか?

レンダリングの最適化ページを参照してください。

モバイル用の最適化に関する実用ガイド
スクリプトとゲームプレイ方法