トップページgamedev
148コメント40KB

ゲームのデータファイルについて語るスレ

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。01/11/18 12:27ID:YbPM6OMf
ゲームのデータファイルについて語るスレです

データファイルの種類(画像、BGM、効果音、音声など)は問いません
データファイルのフォーマット、圧縮、プロテクトなど語りましょう
0002201/11/18 12:35ID:???
[ヘッダ2byte][チェックサム2byte][データ2byte]
0003101/11/18 12:42ID:???
とりあえずフォーマットあたりから

ゲームを作るときには当然
データファイルのフォーマットも考えなければなりません
ちなみにいくつかのWINのゲームのデータファイルを見てみると
だいたい下記のような感じになってますね

・ヘッダー情報(識別ID、ファイル内のデータの数など)
 ファイル先頭に(必ずといっていいほど)ある
 特にはじめの4バイトが識別IDになってるものが多い(?)

・データ情報(データの識別名、位置、サイズなど)
 たいてい、ヘッダー情報の後にこれが配列される
 この数はヘッダー情報にある

・実際のデータ
 データ情報の配列の後に来る
 (ヘッダー情報のサイズ+データ情報×配列数の後)

私もゲームのデータファイルはこうしてますが、
他にもよく使われるフォーマットありますか?
0004101/11/18 12:46ID:???
追加
> 特にはじめの4バイトが識別IDになってるものが多い(?)
例えばYSUEのデータファイル(monde.ys2)は
初めの4バイトは"YS2E"が
メモオフ(***.dat)は"lnk"が識別IDとして入ってます
0005名無しさん@お腹いっぱい。01/11/18 13:11ID:0XqbuScU
可変長データのストアにはどんな構造使ってる?
俺はRIFF-WAVEみたいに、
DWORD ID
DWORD size
BYTE data dup(size)
のチャンク構造でやってるけど。
0006名無しさん@お腹いっぱい。01/11/18 13:31ID:+D6UHFOl
>3,4
コンパイラが(というかCPUが)32ビットごとに
アクセスしたほうがパフォーマンスがいいから
Cで書くと

struct data
{
  long sign;
  long width;
  long height;
  ...
}

という風に宣言しておくのはよくやるみたい。
CGの横幅なんか2バイトで十分そうでも4バイトとるし。
0007名無しさん@お腹いっぱい。01/11/18 13:34ID:CJPmmNZI
ところで、先頭の4バイトの識別子は、
magicが一般的ですか?
0008名無しさん@お腹いっぱい。01/11/18 15:22ID:???
 MAGファイルから直接DirectDrawのサーフェスに
読み込ませてる俺はDQNですか?
0009(●´ー`●)01/11/18 15:51ID:???
このスレなぁ、今んとこプログラマの好みの問題にみえるべ。
0010名無しさん@お腹いっぱい。01/11/18 17:02ID:I9nxB+Qv
参考資料
http://www.wotsit.org/
0011名無しさん@お腹いっぱい。01/11/18 19:24ID:JxPdgokv
>10
おお、こんなところ知らなかった。便利だ、感謝。

画像ファイルとかって、皆どうやって扱ってるのかな。
俺はMAGっぽい独自フォーマットで圧縮して、何十枚かまとめて
一つのファイルにしてる。ヘッダにオフセットのサイズの情報を
書いておいて、適宜抜き出してるけど。
0012名無しさん@お腹いっぱい。01/11/18 19:32ID:ZN+7V7L8
圧縮ならS3TCが扱いやすい。
固定長マンセー
00131101/11/18 19:50ID:???
s/オフセットのサイズ/オフセットとサイズ/
0014PSEC鍵生成パラメータ教えて01/11/18 20:06ID:dvJg5esY
暗号化だが、
http://info.isl.ntt.co.jp/
のEPOC PSEC Camelliaはどうか。
特にCamellia。
0015801/11/18 20:26ID:???
>>11
俺はMAGそのまんまだ。拡張子もMAG(w

 昔のエロゲなんかでMAGのヘッダ潰して拡張子変えただけ
ってのもあったらしいが。
0016名無しさん@お腹いっぱい。01/11/18 20:29ID:???
オレは画像にはPNG使ってる
データはアーカイブにして、すべてを一つにまとめてる。
データのフォーマットは
struct header {
u32l sign;
u32l size;
u32l crc32;
};
あとは簡単な暗号化を施したカタログ情報と、
その後に圧縮データが続く。
0017名無しさん@お腹いっぱい。01/11/19 01:02ID:mVW1u3JE
MAGフォーマットってフリーの規格なの?
俺もほぼパクリで使ってるけど、なんかそのまま使うと怖いような。
0018名無しさん@お腹いっぱい。01/11/19 01:14ID:???
マルチペイントのマニュアルには
同人ソフトなどでMAGフォーマットのデータを使ったりしても
いいですよ。みたいな事が書いてあった。
0019101/11/19 01:34ID:???
MAGフォーマットですか・・・
知りませんでした・・・

ちなみにMAGフォーマット検索してたら
こんなページ見つけました
〜 圧縮法入門 〜
http://www.ingnet.or.jp/~kojif/mu/comp/index.htm
0020101/11/19 01:42ID:???
追加
http://www.gavo.t.u-tokyo.ac.jp/~hosoyama/report/ex2b6.html
0021名無しさん@お腹いっぱい。01/11/19 02:15ID:???
鮪の前身であるMAKIフォーマットが完全なフリーをコンセプトに
開発されたものだから、当然MAGも自由に使えます。
適度な圧縮率と展開の速さ&容易さで今でも便利なMAG萌え。
0022名無しさん@お腹いっぱい。01/11/19 02:23ID:???
ついでに、MAGの仕様は「MAGBIBLE」で検索かけると見つかると思われ。
0023名無しさん@お腹いっぱい。01/11/19 05:16ID:zy4OsR/0
>>14
おお国産ですな。暗号化はAESしかしらないですなぁ
ブロック長より鍵長のほうが重要だと思うんですが AES 互換を全面に出した
ということですかな。Rijndaelより高速で256bit-keyが使えるなら使いたい。。
問題は Optimize されたレベルでより高速かということですが。。。
0024名無しさん@お腹いっぱい。01/11/19 11:21ID:mVW1u3JE
メッセージデータは当然圧縮なり暗号化なりするだろうけど…1byteずらして
ごまかすってのはダメ?(w

というかゲームデータを隠すのに128bit暗号も使わないて。
■ このスレッドは過去ログ倉庫に格納されています