リソースが多すぎるゲームで、リソースをどのようにパックしますか?


10

最近、Allegro 5フレームワークを使用して、C ++で基本的なSpace Invadersクローンを作成しました。終了後、約10個のスプライトと13MB相当のDLLがあることに気付きました。一部のプレイヤーはmingW DLLさえ持っていなかったため、ゲームが非常に混乱していました。

ゲームにデータを簡単に追加したり削除したりできるようにすべてのリソースをパックし、リソースのサイズを縮小して、基本的に1つの場所に配置するにはどうすればよいですか?コードブロックを使用しています。


1
リソースという用語をどのように理解していますか?画像、サウンドなどのアセット...またはこの用語にDLLを含めますか?
Christian Ivicevic

DLLがたくさんあるので、DLLにも適合できればいいと思います。
Bugster

私の最初のアイデアは、(かなり古い...)のような適切なライブラリを見つけてzziplib、通常のすべてのアセットをzipファイルに保存し、エンジンのカスタムコンテンツパイプラインを通じてゲームにロードすることです。基本的に最初に探しているのは、zipファイルからメモリにファイルをロードしてゲームで使用できるようにする方法です。dllについては、通常、実行可能ファイルと同じディレクトリ、Windowsまたは推奨されない or System32ディレクトリにある必要があるため、非常に困難です。そこに抽出してそこから実行するSFXアーカイブはどうですか?TEMP
Christian Ivicevic

3
インストーラーの使い方を尋ねていますか?DLLはリソースではないからです。
Nicol Bolas 2012

回答:


13

ここで直面している課題が2つあるようです:配布とアセットパッケージです。

分布

アプリケーション全体を必要に応じてディレクトリにパッケージ化し、トップレベルのディレクトリを.zipファイルに配置します。その.zipファイルを配布します。ユーザーがzipを抽出すると、ゲームを実行するために必要なすべてのものが入ったフォルダーができます。

ファイルをどのように配置しますか?

  • .dllは通常、実行可能ファイルと同じディレクトリにある必要があります(例外がありますが、簡単にするために...)
  • アセット(画像、オーディオ)はどこにでも配置できますが、実行可能ファイルを参照してそれらを移動する場合は、これを考慮に入れるためにリソース読み込みコードを変更する必要があります。

私は通常次のようなことをします:

MyGame \ //トップレベルのディレクトリはプログラム全体を保持します
  bin \ //コンパイルされたexeとともにDLLがここに移動します
  res \ //ゲームリソースの最上位ディレクトリ
    音楽\
    音響効果\   
    ボイス\
  cfg \ //デフォルトの構成ファイル(user-configsはユーザーディレクトリにあります)
  MyGame.lnk //コンパイル済みexeへのショートカット

アセットパッケージ

ある種の圧縮ライブラリ(zlib、lzo)を使用して、すべてのゲームリソース(上記のres \ディレクトリ)を1つのファイルに圧縮できます。次に、アセットをゲームにロードするために、同じ圧縮ライブラリを使用してリソースのコンテンツをリアルタイムで抽出する必要があります。

次に、アセットにパッチを適用するとどうなりますか?次に、次のいずれかを実行する必要があります。まったく新しいアセットファイルをコンパイルしてユーザーに配布する(つまり、基本的には、既に持っているものをダウンロードし、さらにいくつかの追加を行います)、またはアップデーター(維持する別のプログラム)をビルドする必要があります。 )そして、物事がうまくいかず、アセットファイルが破損するという事実に対処してください...

正直なところ、それを機能させるのは簡単なことではなく、あなたの状況で見返りが見られません。10個のスプライトをカプセル化するには、単純なディレクトリで十分です。追加やパッチの適用は非常に簡単です。適切なディレクトリにダウンロードして実行するだけです。

インストーラーの構築

これは、Windowsをターゲットにしていることを前提としています...上記の設定が完了したら、ゲームのインストーラーのビルドに取り掛かることができます。Visual StudioがサポートしているClickOnceメソッドは絶対に避けます。これ一般的なWindowsインストーラーではなく、独自の癖が付いています。

このStackOverflowの質問を見てください。使用できるインストーラパッケージへの一連の役立つリンクが含まれています。最近、多くの人がWiXを気に入っているようです。自分で使ったことがありません。さらに、AdvancedInstallerInnoSetupはどちらも一般的な選択肢です。


1
この回答に感謝します。これで、ゲームをどのように配布するかについての基本的な考えがわかりました。
Bugster

1
WiXを使用しないでください。それはあなたの頭を傷つけ、あなたの家族を殺します。
Ray Dey

1
別のオプションがあります-複数のアセットパッケージがある場合があります。"resources.pak、patch1.pak、patch1337.pak、.."のようなものがパッチデータを格納する方法になります。元のパッケージを変更する必要はなく、エンジンがパッチパッケージを検出して注文できるようにするだけです。
snake5 2012

0

DLLを含める代わりに、ライブラリの一部を静的にリンクできる場合があります。とはいえどのようにどのようにすべてのライブラリが異なります。


-1

Enigmaなどのソフトウェアを使用してファイルをパックし、それらを単一の.datに保存できます。ランチャーのフォルダーを変更する必要があります。

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