ゲームアセットストレージ:アーカイブvs個別ファイル[終了]


8

私は3D c ++ゲームを作成している最中なので、ストレージに関してゲームアセットを処理するときに、何がより有益かを考えていました。一部のゲームでは、すべてが圧縮された単一のアセットファイルと、多数の小さな圧縮ファイルを含む他のアセットファイルが見られます。

個別のファイルがたくさんある場合、一度に大きなファイルを読み込んでメモリを使い果たす必要はありませんが、必要なすべての正しいファイルを見つけるために、レベルが読み込まれたときにコードがファイルを探す必要があります。

1つの大きなファイルを処理するときに必要なファイルシークはありませんが、1つのファイルでロードされる、現在必要ではないすべてのアセットについてはどうでしょうか。

レベルごとにアセットファイルを作成することもできますが、共有アセットをどのように処理しますか

これはしばらくの間私を悩ませてきましたので、物事のどちらの方法にも他の長所と短所があるか教えてください。


7
大きなファイルが1つでも、すべてをメモリにロードするのではなく、必要なときにファイルからロードするだけです。
鬼界丸

回答:


9

パフォーマンスポイントとストレージポイントの両方から、単一のリソースファイルの方がより有益なソリューションです(ただし、実際にはそれが常に目立つとは限りません)。欠点は、更新と管理が難しいことです。

IMOそれは通常それほど重要ではありません。あなたにとってより便利なものを使用してください。それは実際にいくつかの問題に気づくまで考慮すべきではない技術的な詳細にすぎません。


6
+1、それが問題を引き起こすことが判明するまで、開発者の観点から最も簡単なことを行う
John McDonald

4

解凍されたファイルにより、ユーザーがファイルを編集および置換しやすくなり、ゲームをより改造しやすくなります。これは、改造に対するあなたの態度に応じて、長所または短所と見なすことができます。

パフォーマンスの観点から:ファイルシステムのデフラグは通常、大きなファイルの分割を回避しようとするため、ハードドライブから小さなファイルを大量にロードすると、単一の大きなファイルよりもかなり遅くなる可能性がありますが、同じディレクトリをディスク全体に分散させることができます。したがって、何千もの小さなファイルをロードするとき、ドライブは多くのシークを行わなければならない場合があります。ただし、その一方で、アーカイブを使用すると、アーカイブ内から個々のファイルを取得するのにコストがかかる可能性があるため(アーカイブの内部構造によっては)、通常一緒に必要なファイルをグループ化する必要があります。

保守の観点から:パケットファイルを段階的に更新するツールがない限り、個々のファイルにパッチを適用するためにパッケージ全体を置き換える必要がある場合、パッチは非常に大きくなります。


1

通常、パッケージの方が高速ですが、Petrが言ったように、常に便利であるとは限りません。ただし、これに対処する1つの方法は、エンジンがルーズファイルをロードしてファイルをパックできるようにすることです。次に、デバッグモードではルーズファイルをロードし、リリースモードではパックからロードします

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