複数の解像度で機能する画像をどのように作成しますか?

私は現在いくつかのゲーム開発をしています、そして私は何年もの間この状況について興味がありました。

ゲームの解像度が640 x 480と800 x 600の2つであるとしましょう(簡単にするために小さい数字を使用しています)。私は私がしたいイメージを持っています、関係なく、画面の1/4を取ります。 640 x 480の解像度の場合、320 x 240になります。 800×600の解像度ながら、それは400×300になります。これが達成できると私は考えるいくつかの方法があります。

  1. 画像を320x240にして、より大きな解像度で拡大します(ピクセル化されています)
  2. 画像を400×300にして、小さい解像度に縮小する(細部が失われる)
  3. 解像度ごとに2つの画像を作成する(サイズの拡大)

4:3のアスペクト比では、おそらくよりプロフェッショナルなゲームで見られる5-6の解像度があるでしょう。 16:10と16:9の追加のもの。アスペクト比ごとに別々のアセットを作成するのは理にかなっていますが、解像度ごとにそれを行うのはやり過ぎで巨大なサイズのジャンプのように思えます。

開発者は通常このような状況にどのように対処しますか?

ありがとうございます。

更新:この情報は2Dプラットフォーマーに使用されるでしょう。

私がこれに興味を持っている理由の一部は、彼らがどんな解像度でいようとも、すべてのプレーヤーのために「平等な競技場」を保とうとしていることです。私は800 x 600の解像度のプレイヤーが640 x 480のプレイヤーができる以上のレベルを見ることができるようにしたくありません。

さらに、私はグラフィックの経験がまったくないので、解像度の変更が画像の整合性にどの程度影響するかについてはわかりません。

0

5 答え

4番目のオプションは、解像度がわかっているとき(起動後)にイメージを生成することです。

これは、起動時に画像を適切にテクスチャにレンダリングするのに十分な情報をゲーム内に持っていることを意味します(そして将来のプレイセッションのためにおそらくそれをキャッシュする)。これはすべての解像度が正しく出るように注意深くデバッグする必要があります。しかし、テキストのようなものでは、すべての解像度に対して鮮明に保つための唯一の方法です。

3
追加された
いいえ。私の考えは彼の番号3のようですが、必要に応じてテクスチャを生成します。解像度のあらゆるバリエーションを保持する必要がなくなります。
追加された 著者 kprobst,
これは、Fuzzy Logicが投稿したミップマップのアイデアと似ていますか?
追加された 著者 Ignatz,
SVGみたい!
追加された 著者 Dave,

あなたはあなたの質問で基本的な考えをカバーしました。どちらの方法を使用するかは、要件によって異なります。あなたはアプローチの組み合わせを使うかもしれません。

1. Make the image 320x240 and scale it up on the larger resolution (will look pixelated)
Do this if you don't need higher detail and just need to show the image larger. Good for low detail images like old-style sprites.

2. Make the image 400x300 and scale it down on the smaller resolution (loss of detail)
Even if you were to create a separate image for lower resolutions you will still lose detail, but in many cases it doesn't really matter much. It's a compromise.

3. Create two separate images for each resolution (size bloat)
This one is not quite right, but close. I can't think of any game that has different images for each resolution unless it only supports a couple sizes. Once you start dealing with many screen sizes, this is unfeasible. What some games do though is create a high-res and a low-res version of the images and choose the best match depending on the screen resolution.

ただし、欠けているのはミップマップです。これは#3と似ていますが、ミップマップは単一のファイルとグラフィックスハードウェアでサポートされているミップマップフォーマットに従います。ほとんどの場合、これらは計算上の倍率で調整されていますが、他の画像と同様に編集することで、細部やその他の奇妙な部分が失われるのを防ぐことができます。ミップマッピングも画面サイズには対応していません。ミップマップの各レベルは最後の半分のサイズなので、依然としてベストマッチのアプローチを使用しています。これは、最新のゲームが異なる画像解像度を必要とする場合に行うことです。

2
追加された
はい、でもミップマップは主に3Dゲーム用で、ほとんどのゲームは3Dです。彼らはあなたが2Dゲームを作っているので彼らはあなたのために動作しないかもしれないので、彼らはまたいくつかの制限があります(画像サイズは2のべき乗である必要があります)。 2Dでは、#1または#2、あるいは低/高解像度と言いますが、ミップマップを覗いても問題ありません。他の人が言っているように、あなたはあなたがイメージごとにあなたが使う方法を考えるべきです。いくつかの画像はあなたが1つの方法をすることができますそしていくつかはあなたが別の方法をすることができます。
追加された 著者 Ibrahim AKGUN,
それで、あなたが#1または#2をしていないならミップマップがおそらく最も一般的な解決策であると言うでしょうか?
追加された 著者 Ignatz,

私は通常3つすべてをします。 1つの方法を選択してすべてのグラフィックに使用する必要があるように聞こえますが、そうではありません。それぞれの方法には長所と短所があります。そのため、異なる画像に対して異なる方法を使用します。

たとえば、私のUIは一般的には非常にシャープである必要がありますが、それも重要な小さな詳細でいっぱいではありません。 #2の完璧な候補。一方、背景画像は自然に大きい(フルスクリーンで表示されることが多い)のですが、ぼやけてしまうことがあるので、#1を使用します。

1
追加された

It can depend on the kind of game you are making. It sounds like you may have some kind of 2d, non scaling sprites display. If you are doing something like a 3d fps then you will most likely be scaling up or down. The optimization in this case is how you make this efficient. Mipmaps can help but then you need to try and make the selection optimal. Here's some good idea's on that kind of thing

1
追加された
はい、これは2Dプラットフォーマーゲームです。それでは主な質問を更新します。
追加された 著者 Ignatz,

あなたが犠牲にすることができますそれほど重要ではないピクセルのフレームを持つ画像を作ることもできます。 こうすることで、重要な中央部分をトリミングして、解像度と縦横比ごとに境界線を別々に切り取ることができます。

0
追加された