たくさんの小さなBMPファイルなどのゲームグラフィックを出荷する際の最新技術は何ですか?[閉まっている]


9

小さなBMPファイルがたくさんあるので、大きなTAR / ZIP /その他にまとめるとコピーが簡単になると思います。

ゲームグラフィックスの出荷時の最新技術とは何ですか?

私たちはC#を使用しており、zlibを認識しています。zlibよりも優れた他の解決策があるかどうかを確認するためにブレインストーミングを行います。

回答:


7

SharpZipLibまたはDotNetZipを調べることもできます。DotNetZipを使用するとStream直接アクセスできます。これは、そこにあるほとんどのC#ライブラリが(ファイルではなく)ストリームからロードできるため便利です。さらに、DotNetZipは、法的に疑わしい例外を除いて、GPLの代わりにMs-PL(BSDライク)を使用します。

別のオプションは、テクスチャアトラスを使用することです -多くの小さな画像にいくつかの大きな画像を持たせる代わりに。これらは実際には少し速くロードされ、描画方法に慣れれば実行時に少し速くなります。

最後に、関連するロスレスコンプレッサー(PNG、FLACなど)を通じて各アセットタイプを実行し、それらをフラットファイル(基本的には圧縮が無効にされたzipファイル)に保存できます。ほとんどの場合サイズが大きくなるため、圧縮データの圧縮は避けてください。

いくつかの先行技術:

  • MPQ:おそらくゲームアセットの場合と同じように、ルックアップは高速になるように設計されています(ディスクベースのハッシュテーブルなど)。(サポートされている)ファイルの種類ごとに固有のコンプレッサーがあります。
  • Quake PAK:これは基本的にフラットファイル構造です。
  • Doom WADDoomに多少特有ですが、調べる価値があります。

1

オプションは、圧縮テクスチャの作成に使用するのと同じ圧縮形式で画像を保存することです。これには、損失のある形式を別の形式に変換するのではなく、データを損失のある形式で保存するという利点があります。テクスチャによっては、そのようなファイルを圧縮アーカイブに保存することで、まだ何か得られることがあります。

圧縮テクスチャの詳細については、この回答を参照してください:https : //gamedev.stackexchange.com/a/5177/3505


0

ZLIBは良い答えになるかもしれませんが、アセットを取得する人がいることを知っている場合は、独自のファイル形式を作成してアセットを保存することもできますが、それほど難しくはありません。

ここにそれを作る方法があります。

これはCにありますが、C#はCやC ++に似ているため、学習するのはそれほど難しくありません。

もちろん、より高度な知識を持っている人はあなたのリソースを捕まえることができます。必要に応じて、暗号化を少し追加できます。

これは非常に便利ですが、ファイルを結合するだけです。圧縮についても、2つの選択肢があります。

  1. リソースファイル全体を作成して圧縮し、出荷します。
    この方法は簡単ですが、あまり良い方法ではありません。リソースを1つだけ取得する場合は、すべてを解凍する必要があります。

  2. すべてのリソースを圧縮し、圧縮してリソースファイルに追加します。
    これもかなり良い方法です。方法1の横ではサイズがわずかに大きくなります。各ファイルが個別に圧縮されるためですが、柔軟性が必要な場合はより良い方法です。

それぞれの方法には独自の欠点があるため、賢明に選択する必要があります。一般に、ゲームのリソース数がかなり少ない場合は、方法1の方が適しています。LOTSがある場合は、方法2が適しています。すべてのリソースのサイズが増えると、得られる余計な量を圧倒するからです。

圧縮ライブラリの場合、次のものがあります。

  • 最も有名な媒体、Zlib
  • 解凍が速い方、LZO
  • 優れた圧縮比、7-Zip

ゲーム内で高速にアクセスしたい場合はLZOを使用します。リアルタイムで解凍することを心配する必要はありません。ファイルを縮小したい場合は7-Zip圧縮率とサイズのバランスが取れている場合はLOTまたはZlib自体です。
選択はあなた次第です:D

ああ、もちろん、データを圧縮する他のアルゴリズムがあり、それらのグーグルを見つけることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.