さまざまな解像度の携帯電話用のゲームを構築する


7

Androidプログラムでゲームを構築するためのいくつかのテストを開始しています。これまでのところ、すべてが機能していて、見栄えがいいようです。

ただし、すべての携帯電話で画面の比率がわずかに異なるため(一部の奇妙な携帯電話では非常に異なるため)、ゲームがすべての携帯電話で正しく表示されるようにする方法がわかりません。

私が今やっていることは、(多くの例で見たように)-ratioから+ ratioに移動するように設定したビュー錐台(オルソでもかまいません)を作成しています画面の端で。

テストを実行するために携帯電話を横向きに傾けています(少し極端です)が、正しく動作していれば正しくレンダリングされます。

描画する前に何らかの比率でスケーリングする必要がありますか?

例をいただければ幸いです。

PS。私は2Dゲームをやっています。

回答:


4

高レベルの観点から見ると、一定のアスペクト比を維持すること、または画面の幅が広いか高さがあるという理由だけで他の人よりも多くを見ることがないようにすることのどちらがより重要であるかに応じて、少数のオプションしかありません。

オプションは次のとおりです。

  1. 合わない部分をトリミングする。
  2. 画面が収まるように引き伸ばすと、画像が引き伸ばされるという問題が発生します。
  3. 両方のアスペクト比を維持し、画面サイズのために他のどのプレーヤーよりも多くのプレーヤーが見えないようにする「レターボックス」、

ありがとう。トリミングは気にしません。これを行う方法の出発点を教えていただけますか?(スクリーンへの投影に関して)
Jason

@ジェイソン私はまだゲーム開発者にとってかなり新しいので、私が作成したいくつかのゲームはこれに対処する必要がなかったので、レンダリングに関する有用な実装アドバイスを与えることはできませんが、一般的な考えは、画面のサイズを気にしないレンダリングエンジン(つまり、常に一部のマップの一部しか表示されない「ズームイン」ビューのようなもの)、または「ネイティブ」の画面サイズそれに基づいて、それを縮小または拡大して、埋められていない画面スペースがなくなり、アスペクト比を維持して中央に維持します(重要な情報が切り取られないようにしてください)
Davy8

3

Davy8の答えからの3つのオプションは次のとおりです。

  • 合わない部分をトリミングする。
  • 画面が収まるように引き伸ばします。これは、引き伸ばされた画像で見られる問題です。
  • 両方のアスペクト比を維持し、画面サイズのために他のどのプレーヤーよりも多くのプレーヤーが見えないようにする「レターボックス」

4つ目のオプションを追加します。これが私の推奨するアプローチです。それは本当にレターボックスのバリエーションです。従来のレターボックスは余分なスペースを黒で埋めますが、このアプローチは余分なスペースを余分なグラフィックで埋めます。あなたは単に背景色/画像を拡張し、おそらく追加のロゴを表示することができます。

別の見方をすれば、私は常にすべてのディスプレイの画面をトリミングし、フルディスプレイはすべてのモバイルディスプレイ/アスペクト比よりも大きくなるように意図的に設計されています。したがって、レターボックス領域を埋めるために、常に余分なグラフィックが存在します。

さらに、ゲームの性質(つまり、この変更によって特定のプレーヤーに不当な利点がもたらされるかどうか)やUIの設計方法によっては、一部のUI要素を切り替えて余分なスペースを埋めることもできます。それは流動的なウェブサイトのデザインと考えてください。ウィンドウの幅に関係なく、適切なメニューが右側に表示されます。


あなたが言及する4番目のオプションは、私がゲームで使用する正確な方法です。「アップスケールされた」ピクセルパーフェクトなグラフィックス(つまり、高解像度でゲームエリアをズームする)を実行しているときに正しく計算するには、少し計算が必要ですが、正しく実行すると、解像度やアスペクト比に関係なく、見栄えがよくなります。 。
goshki 2014

私もあなたの4番目の方法を好みます。Androidフォンの場合、私は次のガイドラインを使用します。bigosaur.com
MilanBabuškovOct

0

あなたが言及している比率は「アスペクト比」と呼ばれます。通常は「幅/高さ」として計算されます(ただし、ビューポートを別の方法で配置した場合、「高さ/幅」になる可能性があります)。

除数をフロートにキャストすることを忘れないでください!

float aspect_ratio = width / (float) height;

HTH


1
おかげで、これは私の質問ではありませんでした。私はその除算を実行することで異なるアスペクト比を取得できることを知っています。私の質問は、それをどのように使用して正しくレンダリングするのですか?
Jason
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.