ゲームプログラマは、データストレージの2つの主な方法のいずれかに依存しています。
- 各データファイルを個別のファイルとして保存する
- 各データファイルをカスタムアーカイブ形式で保存する
最初の解決策の欠点は、無駄なディスク領域の問題と、インストールの速度が遅いという問題です。
2番目の解決策は、独自の落とし穴を提供します。1つ目は、すべての独自のイメージ/サウンドなどを記述する必要があるということです。アーカイブされたデータにアクセスするためにカスタムAPIを使用するロードルーチン。さらなる欠点は、最初にアーカイブを作成するために独自のアーカイブユーティリティを作成する必要があることです。
アーカイブからすべてのファイルを常にロードしない限り、特定のファイルを必要に応じて抽出できないため、TAR / GZはあまり良いアイデアではないかもしれません。これが、多くのゲームが必要に応じて個々のファイルを抽出できるZIPアーカイブを使用する理由です(良い例は、PK3ファイルが異なる拡張子のZIPファイルにすぎないQuake 3です)。
編集:ゲームフォルダー構造を「非表示」にし、実行可能ファイルのみを「保持」する
別のソリューションは、フォルダ構造内のゲームファイルを「隠す」ためによく使用されます。メインディレクトリに実行可能ファイルとreadmeファイルのみを保存し、ゲームファイルを「data」または他の関連するサブフォルダーに移動します。
編集: Gamedev Tuts Plusには素晴らしいリソースがあります
編集: libarchive
1つの潜在的なソリューションlibarchive。これは、ZIPファイルなどのアーカイブからのファイルの抽出を処理するアーカイブライブラリです。さらに、抽出したファイルを標準のFILEポインターに割り当てることもできます。これにより、他のライブラリとのインターフェースがより簡単になる可能性があります。
編集:代替拡張子を持つZIP形式のファイル
ここでは、@ Joachim Sauerのコメントが好きです
代替の拡張子を持つZIP形式のファイルを使用することだけでなく、ゲームの外の偉大な伝統を持っている:Javaはそれをしない、(OpenOfficeの/ LibreOfficeの形式別名)のOpenDocumentフォーマットは、それをしない、でも(「新」のMicrosoft Office形式別名)OfficeオープンXMLそれを行います。