トップページ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暗号も使わないて。
0025名無しさん@お腹いっぱい。01/11/19 11:49ID:???
>>23
そういうのってすごい気になるけど、データの鍵は
プログラムがもってるわけ?
鍵とデータを一緒に配布するって馬鹿くせえとおもったが・・・
0026名無しさん@お腹いっぱい。01/11/19 13:13ID:???
どの部分が鍵かなんて逆アセでもしないと解らないと思うけど。
0027名無しさん@お腹いっぱい。01/11/19 14:51ID:???
逆汗すりゃわかるんでしょ。
0028名無しさん@お腹いっぱい。01/11/19 15:11ID:???
圧縮の方の技術だけど、
ブロックソート後のデータもほとんど暗号と変わらんよ。
ゲームに使うなら十分でしょ
0029名無しさん@お腹いっぱい。01/11/19 15:40ID:???
http://www.interq.or.jp/www-user/enra/rina/
こんなのどう?
0030名無しさん@お腹いっぱい。01/11/19 16:23ID:???
たかがゲームデータ抜きたさに逆汗するヴァカがいるか!
0031名無しさん@お腹いっぱい。01/11/19 16:35ID:???
とりあえず貼っとくか。
http://www.jisyo.com/viewer/faq/mag_tech.htm
MAG仕様書(原文) もちろん日本語ね。
0032名無しさん@お腹いっぱい。01/11/19 16:56ID:???
>>30
結構いる
0033名無しさん@お腹いっぱい。01/11/19 16:57ID:???
>>29 作者がドキュン
0034名無しさん@お腹いっぱい。01/11/19 17:44ID:???
>>29 waveletにはちょっと興味あるけど。
0035名無しさん@お腹いっぱい。01/11/19 18:23ID:???
解析を楽しむページ
ttp://ku-www.ss.titech.ac.jp/~yatsushi/analyze.html
参考までに。
0036名無しさん@お腹いっぱい。01/11/19 20:17ID:???
基本的に、解析クン一人にでも負けたらツールばら撒かれて終わりだからなあ(藁
0037名無しさん@お腹いっぱい。01/11/19 21:36ID:???
>>25
鍵とデータが一緒になきゃ復号できないじゃん。
勘違いしてるのかもしれないけどこれはゲームの話で、実際に暗号を
使う場面では利用者がそれぞれに鍵を持っているので一緒も糞もない。
0038名無しさん@お腹いっぱい。01/11/20 00:12ID:???
TIM2ってどうよ?
0039名無しさん@お腹いっぱい。01/11/20 00:35ID:???
>38 PS2の開発なんてやったことも機会もなさそうだしなぁ…
PCで使う意義もないし。
0040名無しさん@お腹いっぱい。01/11/20 05:03ID:y/kAXWZY
Camelliaのコードをみましたが、8bitASIC系に特化されてて
16,32bitの最適化ソースが公開されていないようですね。
最適化ソースが無いのでRijndaelには速度で勝てないでしょう。残念ながら。
Feistel回数が比較して多いのとFeistelとSBOXの手間が他の方式と比べて
煩雑です。Feistelを何回か回すだけでも簡単な暗号系になりますから
それでもいいんですけどね。
0041名無しさん@お腹いっぱい。01/11/20 11:19ID:???
>>37
そりゃそうだ。
しかしどんなに強力な暗号化を使っても、鍵と一緒に配布されてるんじゃなあ(藁
0042名無しさん@お腹いっぱい。01/11/20 12:29ID:???
たかがゲーム(失礼)のデータを、そこまで暗号化しなくても
と思うのは、俺だけか?
0043名無しさん@お腹いっぱい。01/11/20 13:30ID:LstOLEvl
俺もそう思う。どうせ>>35のリンク先のようなレベルのにかかったら
何やったって解析されてしまうんだから無駄無駄。
シェアウェアのクラック問題にも似てるけど。
■ このスレッドは過去ログ倉庫に格納されています