ページ 11

外部データ(画像、音楽等)の読み込みについて

Posted: 2010年8月01日(日) 17:14
by シエル
いつもお世話になっております。

今回は画像や音楽データなどの外部データの読み込みについてお聞きしたいことがあります。

ゲームなどを配布する際、画像データなどの外部データも一緒に配布する必要があると
思いますが、そのままフォルダごと配布してしまったら、盗まれたり利用されてしまう可能性が
あると思います。
なので別の形で配布して読み込めるようにしたいと思っています。

DXライブラリは圧縮したデータを読み込める専用の関数があると思いますが、
私はWindowsAPIとDirectXで開発を行っています。

実行ファイルのリソースに直接取り込ませようとも思いましたが、
実行ファイルのサイズが大きくなりすぎてしまいます。
また、リソースのみのDLLを作成することも考えましたが、BMPやWAVEファイルはリソースとして
登録できても、その他のPNG形式の画像などは、私が調べる限り登録できないようでした。

一般的には外部データはどのような状態で配布し、読み込み等を行っているのでしょうか?
まずは簡単な回答でかまいません。
その回答からまた質問を広げさせていただきます。

よろしくお願い致します!

Re:外部データ(画像、音楽等)の読み込みについて

Posted: 2010年8月01日(日) 17:32
by TowaK
拡張子の変更とかではダメなのですか?
PNGはgrpにしてみるとか……。

Re:外部データ(画像、音楽等)の読み込みについて

Posted: 2010年8月01日(日) 18:23
by Justy
>DLL
>その他のPNG形式の画像などは、私が調べる限り登録できないようでした
 そんなことはないはずです。
 普通に PNGだろうが JPGだろうがカスタムリソース扱いで登録できます。

 もし仮に環境とかツールの都合でリソース扱い出来なかったとしたら
DLL側のソースコードにCの配列にして埋め込むことはできるのでなんとでもなるかと。



>一般的には外部データはどのような状態で配布し、読み込み等を行っているのでしょうか?
 素のままで配布するものもありますし、リソースに登録して exeなり dll内に
埋め込んでいるものもありますけど、ゲームだとその会社や製品独自の或いはミドルウェア等が
提供しているツールを使って複数のファイルをパック(アーカイブ)していることが多いですね。

 必要ならその段階で圧縮・暗号化もしています。
 細かいところは違いますけど、やっていることはDXライブラリのアーカイバとほとんど同じです。

 ただどういう単位でパックしているかはそれぞれです。
 カテゴリ毎にまとめたり、全てを1つにまとめていたり。

Re:外部データ(画像、音楽等)の読み込みについて

Posted: 2010年8月01日(日) 18:49
by シエル
>そんなことはないはずです。
>普通に PNGだろうが JPGだろうがカスタムリソース扱いで登録できます。
>もし仮に環境とかツールの都合でリソース扱い出来なかったとしたら
>DLL側のソースコードにCの配列にして埋め込むことはできるのでなんとでもなるかと。

カスタムリソースの存在を知りませんでした。すいません。勉強します。
が、あまりリソースで埋め込むことは考えていません。

>素のままで配布するものもありますし、リソースに登録して exeなり dll内に
>埋め込んでいるものもありますけど、ゲームだとその会社や製品独自の或いはミドルウェア等が
>提供しているツールを使って複数のファイルをパック(アーカイブ)していることが多いですね。
>必要ならその段階で圧縮・暗号化もしています。
>細かいところは違いますけど、やっていることはDXライブラリのアーカイバとほとんど同じです。
>ただどういう単位でパックしているかはそれぞれです。
>カテゴリ毎にまとめたり、全てを1つにまとめていたり。

できれば、勉強のため、アーカイブで対応してみたいです。
DXライブラリはどのようにアーカイブしているのか、簡単に説明していただけますでしょうか?

Re:外部データ(画像、音楽等)の読み込みについて

Posted: 2010年8月01日(日) 19:04
by ぬるぽ
>DXライブラリはどのようにアーカイブしているのか、簡単に説明していただけますでしょうか?

下記のURLより、DXライブラリをダウンロードし、
http://homepage2.nifty.com/natupaji/DxLib/dxdload.html

Tool/DXArchive/Sourceの中にDXアーカイブの
DxaEncode.exe や DxaDecode.exe のプログラムソースが入っています。
参考にしてみてはいかがでしょうか。

Re:外部データ(画像、音楽等)の読み込みについて

Posted: 2010年8月01日(日) 19:09
by シエル
ぬるぽさん!ありがとうございます。見てみます!

Re:外部データ(画像、音楽等)の読み込みについて

Posted: 2010年8月01日(日) 23:31
by シエル
すいません。色々調べてたんですが、
アーカイブの作り方って、fopen等で読み込んだデータを
他の一つのファイルにfwriteで書きだすっていうイメージでいいでしょうか?
後から読み出しやすくするために、書き込むときに目印等を付けておく必要がありそうですけど。

Re:外部データ(画像、音楽等)の読み込みについて

Posted: 2010年8月02日(月) 00:30
by Justy
>アーカイブの作り方って、fopen等で読み込んだデータを
>他の一つのファイルにfwriteで書きだすっていうイメージでいいでしょうか?
 そんな感じです。


>後から読み出しやすくするために、書き込むときに目印等を付けておく必要がありそうですけど
 そうですね。
 DXArchive.hでいうと DARC_FILEHEAD構造体がそれを担当しており、このヘッダを読み取って
実データが存在する場所を探しにいきます。

Re:外部データ(画像、音楽等)の読み込みについて

Posted: 2010年8月02日(月) 08:41
by シエル
Justyさん!ありがとうございます!

イメージ掴めたので、後は何とか一人でやってみます!

これにて解決いたします!