web-dev-qa-db-ja.com

ゲームのウィンドウのサイズはどうあるべきですか?

私はXNAでゲームを作っています。ピクセル単位の寸法はウィンドウの何ですか?ほとんどのコンピューターで機能するサイズである必要があります。ほとんどのゲームで使用されているサイズがあるかどうかはわかりません。

6
Cyral

PCやXbox 360では、「最適」、またはすべてのゲームでよく使用される単一のサイズはありません。 (Windows 7 Phoneの選択肢ははるかに少ないです。)

デフォルトでネイティブウィンドウ解像度を使用しない理由はありません。

XNAでは、Initializeメソッドの次のようなコードでこれを行うことができます。

int width = GraphicsDevice.DisplayMode.Width;
int height = GraphicsDevice.DisplayMode.Height;
this.graphics.PreferredBackBufferWidth = width;
this.graphics.PreferredBackBufferHeight = height;
this.graphics.IsFullScreen = true;
this.graphics.ApplyChanges();

もちろん、ChrisFが指摘しているように、[ユーザーが使用しているサイズを変更するオプションをユーザーに提供するには意味があります。適切なデフォルトを選択した場合、多くの人はこれを使用しない可能性があります。それでも、それは、それを望む人々に大きな違いをもたらすものの1つであり、それほど多くの作業を必要としません。

Wikipediaの一般的な画面解像度 の一覧もご覧ください。

この領域での最大の課題は、さまざまな解像度とアスペクト比を処理できるようにゲームを作成することです。同じゲーム/コードベースを同じ環境で実行する場合に特に当てはまります。 XNAがサポートするPC、Xbox 360、およびWindows 7 Phone。技術的な観点から、この問題に対処するためにできることがいくつかあります。

  1. サポートする最大のウィンドウサイズのコンテンツを作成する。 1920x1080の背景を800x480の画面に描画することには問題がありますが、1920x1080の画面に800x480の背景を描画することほど問題はありません。
  2. #1に加えて、時間がある場合は、さまざまなデバイスにさまざまなコンテンツのセットを提供することを検討してくださいと考えてください。または、単に実行時に異なるコンテンツのセットをロードします。これは、他のものほど拡大縮小されない可能性があるSpriteフォントにとって特に重要です。
  3. 2つの主要なアスペクト比をサポートするインテリジェントな方法を見つける(4:3および16:9)。 3Dゲームの場合、これはほぼ確実に透視投影に異なる視野角を選択することを意味します。 2Dゲームでは letterboxing のようなものが必要になるかもしれませんが、側面の黒いバーだけではなく、より創造的な方法でそれを行います。
  4. 画面の座標からゲームの内部座標系を切り離します。ゲームは舞台裏の座標系になります。ウィンドウの座標を舞台裏の座標系として使用しないでください。たとえば、小惑星を作成しているとします。プレイヤーの船の位置を追跡します。 「私の船は画面上のピクセル(56、213)にいる」と言うのは可能です。しかし、それをしないでください。 独自の内部座標系を考え出して、それを描画するときが来たら、ある種の変換を適用して、画面上での位置(および大きさ)を特定します。舞台裏の座標系で物事を追跡することで、さまざまな解像度とアスペクト比にさまざまな変換を適用できます。また、そのルートを選択した場合でも、同じロジックを使用してゲームの3Dバージョンを簡単に作成できます。
5
rbwhitaker

なぜ多くのゲームがデフォルトでランダムな低解像度になるのですか?ゲームを書くことができれば、画面の解像度を検出するためのコードがきっと見つかりますか?

とにかく、通常のゲームではデフォルトでフルスクリーンにして、フルモニターの解像度を使用する必要があります。 Alt-TABは、ゲームを一時停止し、悪影響を与えることなくウィンドウを切り替えるように機能するはずです。 Alt-EnterまたはF11で全画面表示/ウィンドウモードを切り替える必要があります。解像度を変更するための設定も提供する必要があると思いますが、個人的には、ゲームが最初から正しいことを行う場合は使用しません。設定を記憶し、次回ゲームを開始するときに使用する必要があります。

これらすべてを正しく行うと、世の中にあるほとんどのゲーム、さらには多くのAAAタイトルよりも上手になります。

2
Sam Watkins

構成可能またはユーザーが選択できるようにし、ユーザーがウィンドウを最大化できるようにします。

最近のゲームでは、ユーザーがゲームをプレイできるウィンドウのサイズを制限する必要はありません。

1
ChrisF

可能な場合はスケーラブルなアセットを使用し、画面の最大解像度を使用してください。 800x600の画面サイズの制限により、大型のモニターを使用しているユーザーが1/4画面のウィンドウで動かなくなることを要求する理由はありません。フルスクリーンで、ネイティブモニターの解像度でプレイできない場合は、ゲームプレイでの約束にかかわらず、特にゲームをドロップしました。

より良い質問はアスペクト比かもしれません。画面の大部分は現在16:9または16:10ですが、4:3モニターがまだたくさんあるため、これは難しいものです。アンカーと空白を処理する必要があるため、ゲームのアスペクト比を調整することは、単にUIをスケーリングすることよりも困難です。ユーザーインターフェイスを複数のアスペクト比に調整できない場合は、画面の比率がゲームのUIの比率と一致しない場合に、必要に応じて画面をレターボックスに許可する必要があります。

1
Myrddin Emrys