ラスターベースのグラフィックスコンテンツの解像度の独立性にどのようにアプローチしますか?


32

ハンドヘルドなど、ロックされたプラットフォーム仕様で実行するのに十分でない幸運なゲームは、さまざまな解像度形式とアスペクト比で実行する必要があります。

3Dゲームでは、ラスターグラフィックスに基づいたHUDまたはメニューGUIがあり、2Dゲームでは、スプライトの容器であるクワッドの束があります。

私の質問は、さまざまな解像度とアスペクト比にまたがるコンテンツの設計と運用にどのようにアプローチするかということです。300x400ピクセルのスプライトであり、タイルでできたレベルに囲まれたスプライトキャラクターがあるとします。異なる解像度/アスペクト比では、まったく異なるFOVが表示されます。または、HUDまたはGUIメニューがある場合は、画面に対して同じ位置に同じサイズのいくつかのものを保持する必要があります。それでも、グラフィックソースはラスタービットマップであり、ベクターではありません。

明らかに、問題は何度も対処されています。私はこれまでのところあなたのために働いた様々なアプローチを聞いて興味を持っています。あなたは解像度とアスペクト比または他のアプローチに基づいた式を介して魔法のように必要な次元に変換する任意の次元に依存しない「ピクセル」ユニットを保持していますか?

編集:

したがって、結論はアスペクト比を列挙することです。アスペクトと解像度の最小の組み合わせは、重要なものを設計するものです。あなたがするなら安全なエリア。縦横比は同じですが、解像度が高いと単純なスケーリングの問題になります。アートコンテンツは、最高の解像度で設計されています。アスペクト比を大きくすると、情報が表示されたレベル/ FOVがより多く表示されますが、安全な領域の情報ほど重要ではありません。私が作ったこの画像のようなもの代替テキスト


1
この質問の答えから、「編集:」後に行った結論にどのように進んだかわかりません。IMO、これらの答えは不十分であり、あなたはそれらのいずれも受け入れてはいけません。EG:受け入れられた答えは、問題全体ではなく、質問の一部(スプライトスケーリング)についてのみ述べています。「edit:」の後に言ったことは、IMOの回答よりも便利です。しかし、私は実際にそれを実装するほど十分に「取得」していません。残念ながら、新しい質問で詳細を要求すると、重複としてマークされます。
ダニエルカプラン

回答:


7

解像度が互いに類似している場合は、小さな画面の実行時にダウンスケーリングを行うことで、すべての解像度で同じアートを使用できます。2倍以上の違いがある場合は、解像度ごとに別々のアセットを作成する必要があります(少なくともアーティストが調整する必要があります)。

2Dでは、解像度は画像のデザイン方法に大きな影響を及ぼします。高解像度で豊かで詳細かつリアルに見えるスプライトは、泥だらけで判読不能に縮小されます。同様に、低解像度できれいでシャープなスプライトは、高解像度では安価で非常にシンプルに見えます。


アスペクト比は私を心配しています。たとえば、アスペクトが同じであるため、1080pから720pへの大きな飛躍ではありません。その後、単純なスケーリングで調査します。1080p対1680x1050と言うとどうなりますか。より広いレベルで、より広いレベルの、より広いFOVを表示しますか?同様に、すべての重要なコンテンツが安全な領域に収まるように幅の広いアスペクトを設計し、狭いアスペクトで画面からはみ出さないようにします。
キーフレーム

このソリューションの視覚的なプレゼンテーションで質問を更新します。他の方法はないようです。
キーフレーム

4

1つの方法は、画像アセットをベクトル形式(SVG、Illustratorなど)で作成し、ゲームのさまざまなバージョンの必要に応じてラスター画像に変換することです。


確かに、オプションではないことを言及するのを忘れました。主な問題は、ラスターとベクターコンテンツの作成がまったく異なることです(アーティストにとってラスターの方がはるかに優れています)。ただし、複数のラスターアセットを作成する方法もありますが、より良いソリューションが必要だと強く信じています。たとえば、サポートされる最大の解像度/アスペクト比のアセットを作成し、低解像度のランタイムバージョンをその場でまたはそのようなものに縮小します。それでもポジショニングは問題のままです。
キーフレーム

はい、品質の低下とパフォーマンスの問題に耐えることができる場合、これもオプションです。
マティアスバルデネグロ

8
「ラスターはアーティストにとって良い」というのが正しいかどうかはわかりません。私のグラフィックアーティストは、まさにこれらの理由でIllustratorを使用しています。iPhone 4の2X解像度にアップデートするとき、彼女がすべてを再びエクスポートするのは簡単なことでした。ラスターは、ベクターアーティストとしての再教育を望まないPhotoshopアーティストにとっては良いかもしれませんが、長期的にはベクターベースのグラフィックスの専門家になる方が良いでしょう。物理プラットフォームは急速に変化しているため、ピクセルで考えることはできません。
クリスギャレット

4

さまざまな解像度でフルスクリーンを維持する場合、ピクセルの完成度(つまり、「アーティストが制作した」)が必要な場合、問題はスプライトを拡大または縮小(または回転)する完全に自動化された方法がないことです。t人の承認が必要です。最終的には、ピクセルの配置は主観的なものだからです。レンダリングアルゴリズムは、スケーリングまたは回転を実行します。これを行うには、いくつかの近似手法を使用する必要があります。バイリニアフィルタリング。あなたはまだ「ピクセル完璧に」(すなわちAAまたはBFを使用していない)、そして、あなたはいくつかの非パワー・オブ・2度によってスケーリングがされていることを受け入れなければならないとしていることを持っているために、画素にハードエッジをしたい場合に行くにはいくつかの望ましくないアーティファクトを生成します。

同様の問題に対する興味深いアプローチは、スプライトの「自動」回転を実行するように設計されたアプリケーション/アルゴリズムであるRotSpriteにあります。つまり、人間のオペレーターが選択できるように、集中的な処理の後に、多くの望ましい最終結果が得られるということです。厳選されたスプライトは最終的にゲームに入ります。つまり、これはランタイムではなくコンテンツ作成ステップです。

「任意の魔法の次元にとらわれないピクセル」の質問に対する可能な答えの1つは、OpenGL(クロスプラットフォームに移行する場合に使用する予定です)は、ソフトウェアラスターレンダラーとはまったく異なる方法で動作します。0.0-> 1.0の浮動小数点範囲でディスプレイの幅と高さを考慮し、それに応じてGPUでピクセルをマッピングします。もちろん、これ以外の場合は、アーティファクトが発生する可能性があります。テクスチャに対してBFがオンになっています(これはOpenGLのスプライトです)。


これはまったく間違っています。任意のアスペクト比でピクセルを完璧に保つために、スケーリングの代わりにコンポジションと繰り返し可能な要素(タイルを考える)を使用できます。もちろん、高解像度で要素が小さい場合、要素はますます小さくなります。そのため、2Xスケーリングまたは異なる解像度のアセットが必要になります。
adrix89
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.