Unity を検索

モバイルゲーム開発のためのアーティストへのベストプラクティス

2020年4月7日 カテゴリ: テクノロジー | 5 分 で読めます
シェア

Is this article helpful for you?

Thank you for your feedback!

ARM のパートナーが、さまざまなモバイルハードウェア用のゲームを構築するテクニカルアーティストやゲーム開発者向けに、ゲームアートを最適化し、パフォーマンスを向上させるうえで役立つ、一連の詳細なガイドをまとめました。

テクニカルアーティストは、モバイルハードウェアの制約やパフォーマンスの要求に合わせたアセットを維持しながら、優れたモバイルゲームを構築するという課題に直面しています。他のプラットフォーム (PC やコンソールなど) での開発経験者にとって、情報を提供してくれる優れたリソースや、モバイルプラットフォーム向けのアセットを作成するために必要なガイダンスを見つけるのは難しい場合があります。 

そのため、モバイルチップ設計のトップ企業である ARM のパートナーは、テクニカルアーティスト向けにジオメトリ、テクスチャリング、マテリアル、およびシェーダーのパフォーマンスを最適化して向上させるための総合ガイドを作成しました。今回のブログ記事では、このガイドから 4 つのヒントをご紹介します。ガイドの全文は、こちらから無料でダウンロードできます。

ビジュアルのサイズ

モバイルタイトルを幅広いモバイルデバイスで動作させることは難しい場合があり、メモリリソースの厳しい制限を守ることが重要になってきます。アセットを作成するときは、ビジュアルのサイズや、ビジュアルが実際に画面上に表示されるときのピクセル数に注意してください。アセットが大きくなるほど、必要なテクスチャスペースは大きくなります。背景に占めるピクセルが数ピクセルだけのゲームアセットを無駄に大きなサイズにするべきではないでしょう。

以下のサンプルでは、2 つの軍隊が戦うゲームが示されています。兵士のテクスチャは、それぞれ画面上で数ピクセルしか使用しないため、非常に小さいままになります。これによって、いくつかの目的が達成されます。まず、テクスチャを小さく保つとメモリのオーバーヘッドが低減されます。次に、適切なサイズのテクスチャはアトラスに追加できます。アトラスの利点については、Realtime 3D art best practicesの「Texturing」セクションを参照してください。

この概念は、兵士のメッシュにも適用されます。以下に、兵士の三角形が表示されています。テクスチャリングと同様に、GPU はオブジェクトの頂点を処理する必要があるため、三角形の数を少なくするとオーバーヘッドを抑えることができます。この方法は、微小三角形の問題として知られる問題も防ぎます。メッシュに三角形が多数あり、それによる頂点が多数ある場合、GPU はすべての頂点をレンダリングする必要があります。これは、オブジェクトが小さすぎる場合や、シーンの遠くにある場合でも維持されるため、わずか数ピクセルのサイズでも、その三角形には多くの GPU 処理能力が必要となります。

圧縮タイプの問題

アーティストがテクスチャを作成するときは、PNG、JPG、または TGA ファイルとしてエクスポートするのが一般的です。しかし、ゲームを実行するときに、これらのファイルはメモリ内でより小さく、すばやく処理できる特殊な形式に変換されます。

圧縮タイプを選択する際は、プロジェクトのアーティストビジョンを十分にサポートできる形式を使用することが重要です。ASTC には圧縮品質を制御するオプションが用意されているため、この形式の使用をお勧めします。ほとんどのアセットについては、5x5 または 6x6 に設定するとよいでしょう。小さなアセットの場合は、画面に占めるピクセルが数ピクセルしかないため、8x8 や 10x10 を試すこともできます。プロジェクトに最適な設定を見つけるために、さまざまな設定を試してみることをお勧めします。

詳細レベル (LOD) とミップマップ

前述したように、オブジェクトの頂点が少ないほど、GPU の計算速度は向上します。プロジェクトのアーティスト目標として、オブジェクトを遠くからでも近くで見るのと同じくらいの品質で見せることを目指している場合は、その目標を達成できない可能性があります。ここで登場するのが詳細レベル (LOD) システムです。

LOD システムでは、オブジェクトがカメラから離れると、モデルの低ポリゴンバージョンが使用されます。このモデルはアーティストによって作成され、入れ替える距離を制御できます。この方法は、頂点の数を抑えて、オブジェクトが遠くにあるときにはパフォーマンスを提供し、オブジェクトが前面にあるときにはディテールを提供しながら、前述の微小三角形の問題に対処するのに役立ちます。

アプリケーションのビジュアル品質をサポートしながら LOD の効率を高めるには、LOD 間での入れ替えの際にテクスチャの解像度を上下させる必要があります。Unity では、ミップマップを使用してこれを簡素化できます。

ミップマップとは、低解像度で保存されたテクスチャのコピーのことです。オブジェクトがカメラから離れたときに、テクスチャに不必要な「ギザギザ感」が出るのを防ぐために低解像度バージョンが使用されます。ミップマップの仕組みを考えると、カメラからの距離が一定でないオブジェクトで使用するのが最適です。ミップマップと LOD を組み合わせると、シーンの高速化に大いに役立ちます。

透過性は絶対に必要な場合にのみ使用

どのプラットフォームでも透明なオブジェクトのレンダリングはコストが高くなりますが、モバイルでは、「オーバードロー」と呼ばれる問題のために極端に高くなります。オーバードローは、GPU がピクセルを複数回レンダリングする必要があるときに発生します。透明なオブジェクトによってオーバーラップされている全てのピクセルをそれぞれレンダリングする必要があるため、ゲームのパフォーマンスに大きな影響を及ぼします。ただし、ゲームで透過性を使用する必要がある場合は、さまざまなオプションを使用できることを知っておく必要があります。

アルファブレンド

モバイル GPU にはアルファブレンドが使用されたオブジェクトのレンダリングに役立つ最適化機能があるため、モバイルではアルファブレンドオプションの使用をお勧めします。アルファブレンドを使用すると、カットアウトのように透過性をオンまたはオフにするだけでなく、さまざまな透過性オプションを使用できます。

アルファテスト (カットアウト)

この透過性オプションでは、オブジェクトを完全に不透明または透明にすることができますが、その中間にすることはできません。多くの場合、これは「カットアウト」と呼ばれます。カットアウトでは、GPU の一部の最適化機能が無効になるため、モバイルではカットアウトを使用しないことを強くお勧めします。

結論

リアルタイム 3D アートのベストプラクティスには、非常に役に立つ情報やガイダンスが含まれているため、その中からヒントを厳選するのは非常に難しい作業でした。初心者の場合は、日常業務に役立つヒントが得られます。プロの方は、このヒントをチームと共有してください。ゲーム開発はコミュニティで取り組むものであるため、ゲームエクスペリエンスを向上させると、私たち全員にとってのメリットとなります。

   

Real time 3D art best practices ガイドを入手

2020年4月7日 カテゴリ: テクノロジー | 5 分 で読めます

Is this article helpful for you?

Thank you for your feedback!