1 :
名無しさん@お腹いっぱい。:
ゲームのデータファイルについて語るスレです
データファイルの種類(画像、BGM、効果音、音声など)は問いません
データファイルのフォーマット、圧縮、プロテクトなど語りましょう
2 :
2:01/11/18 12:35 ID:???
[ヘッダ2byte][チェックサム2byte][データ2byte]
3 :
1:01/11/18 12:42 ID:???
とりあえずフォーマットあたりから
ゲームを作るときには当然
データファイルのフォーマットも考えなければなりません
ちなみにいくつかのWINのゲームのデータファイルを見てみると
だいたい下記のような感じになってますね
・ヘッダー情報(識別ID、ファイル内のデータの数など)
ファイル先頭に(必ずといっていいほど)ある
特にはじめの4バイトが識別IDになってるものが多い(?)
・データ情報(データの識別名、位置、サイズなど)
たいてい、ヘッダー情報の後にこれが配列される
この数はヘッダー情報にある
・実際のデータ
データ情報の配列の後に来る
(ヘッダー情報のサイズ+データ情報×配列数の後)
私もゲームのデータファイルはこうしてますが、
他にもよく使われるフォーマットありますか?
4 :
1:01/11/18 12:46 ID:???
追加
> 特にはじめの4バイトが識別IDになってるものが多い(?)
例えばYSUEのデータファイル(monde.ys2)は
初めの4バイトは"YS2E"が
メモオフ(***.dat)は"lnk"が識別IDとして入ってます
5 :
名無しさん@お腹いっぱい。:01/11/18 13:11 ID:0XqbuScU
可変長データのストアにはどんな構造使ってる?
俺はRIFF-WAVEみたいに、
DWORD ID
DWORD size
BYTE data dup(size)
のチャンク構造でやってるけど。
6 :
名無しさん@お腹いっぱい。:01/11/18 13:31 ID:+D6UHFOl
>3,4
コンパイラが(というかCPUが)32ビットごとに
アクセスしたほうがパフォーマンスがいいから
Cで書くと
struct data
{
long sign;
long width;
long height;
...
}
という風に宣言しておくのはよくやるみたい。
CGの横幅なんか2バイトで十分そうでも4バイトとるし。
7 :
名無しさん@お腹いっぱい。:01/11/18 13:34 ID:CJPmmNZI
ところで、先頭の4バイトの識別子は、
magicが一般的ですか?
MAGファイルから直接DirectDrawのサーフェスに
読み込ませてる俺はDQNですか?
このスレなぁ、今んとこプログラマの好みの問題にみえるべ。
10 :
名無しさん@お腹いっぱい。:01/11/18 17:02 ID:I9nxB+Qv
11 :
名無しさん@お腹いっぱい。:01/11/18 19:24 ID:JxPdgokv
>10
おお、こんなところ知らなかった。便利だ、感謝。
画像ファイルとかって、皆どうやって扱ってるのかな。
俺はMAGっぽい独自フォーマットで圧縮して、何十枚かまとめて
一つのファイルにしてる。ヘッダにオフセットのサイズの情報を
書いておいて、適宜抜き出してるけど。
12 :
名無しさん@お腹いっぱい。:01/11/18 19:32 ID:ZN+7V7L8
圧縮ならS3TCが扱いやすい。
固定長マンセー
13 :
11:01/11/18 19:50 ID:???
s/オフセットのサイズ/オフセットとサイズ/
14 :
PSEC鍵生成パラメータ教えて:01/11/18 20:06 ID:dvJg5esY
15 :
8:01/11/18 20:26 ID:???
>>11 俺はMAGそのまんまだ。拡張子もMAG(w
昔のエロゲなんかでMAGのヘッダ潰して拡張子変えただけ
ってのもあったらしいが。
オレは画像にはPNG使ってる
データはアーカイブにして、すべてを一つにまとめてる。
データのフォーマットは
struct header {
u32l sign;
u32l size;
u32l crc32;
};
あとは簡単な暗号化を施したカタログ情報と、
その後に圧縮データが続く。
17 :
名無しさん@お腹いっぱい。:01/11/19 01:02 ID:mVW1u3JE
MAGフォーマットってフリーの規格なの?
俺もほぼパクリで使ってるけど、なんかそのまま使うと怖いような。
マルチペイントのマニュアルには
同人ソフトなどでMAGフォーマットのデータを使ったりしても
いいですよ。みたいな事が書いてあった。
19 :
1:01/11/19 01:34 ID:???
20 :
1:01/11/19 01:42 ID:???
鮪の前身であるMAKIフォーマットが完全なフリーをコンセプトに
開発されたものだから、当然MAGも自由に使えます。
適度な圧縮率と展開の速さ&容易さで今でも便利なMAG萌え。
ついでに、MAGの仕様は「MAGBIBLE」で検索かけると見つかると思われ。
23 :
名無しさん@お腹いっぱい。:01/11/19 05:16 ID:zy4OsR/0
>>14 おお国産ですな。暗号化はAESしかしらないですなぁ
ブロック長より鍵長のほうが重要だと思うんですが AES 互換を全面に出した
ということですかな。Rijndaelより高速で256bit-keyが使えるなら使いたい。。
問題は Optimize されたレベルでより高速かということですが。。。
24 :
名無しさん@お腹いっぱい。:01/11/19 11:21 ID:mVW1u3JE
メッセージデータは当然圧縮なり暗号化なりするだろうけど…1byteずらして
ごまかすってのはダメ?(w
というかゲームデータを隠すのに128bit暗号も使わないて。
>>23 そういうのってすごい気になるけど、データの鍵は
プログラムがもってるわけ?
鍵とデータを一緒に配布するって馬鹿くせえとおもったが・・・
どの部分が鍵かなんて逆アセでもしないと解らないと思うけど。
逆汗すりゃわかるんでしょ。
圧縮の方の技術だけど、
ブロックソート後のデータもほとんど暗号と変わらんよ。
ゲームに使うなら十分でしょ
たかがゲームデータ抜きたさに逆汗するヴァカがいるか!
>>29 waveletにはちょっと興味あるけど。
基本的に、解析クン一人にでも負けたらツールばら撒かれて終わりだからなあ(藁
>>25 鍵とデータが一緒になきゃ復号できないじゃん。
勘違いしてるのかもしれないけどこれはゲームの話で、実際に暗号を
使う場面では利用者がそれぞれに鍵を持っているので一緒も糞もない。
TIM2ってどうよ?
>38 PS2の開発なんてやったことも機会もなさそうだしなぁ…
PCで使う意義もないし。
40 :
名無しさん@お腹いっぱい。:01/11/20 05:03 ID:y/kAXWZY
Camelliaのコードをみましたが、8bitASIC系に特化されてて
16,32bitの最適化ソースが公開されていないようですね。
最適化ソースが無いのでRijndaelには速度で勝てないでしょう。残念ながら。
Feistel回数が比較して多いのとFeistelとSBOXの手間が他の方式と比べて
煩雑です。Feistelを何回か回すだけでも簡単な暗号系になりますから
それでもいいんですけどね。
>>37 そりゃそうだ。
しかしどんなに強力な暗号化を使っても、鍵と一緒に配布されてるんじゃなあ(藁
たかがゲーム(失礼)のデータを、そこまで暗号化しなくても
と思うのは、俺だけか?
43 :
名無しさん@お腹いっぱい。:01/11/20 13:30 ID:LstOLEvl
俺もそう思う。どうせ
>>35のリンク先のようなレベルのにかかったら
何やったって解析されてしまうんだから無駄無駄。
シェアウェアのクラック問題にも似てるけど。
>>42 同感。
複雑な暗号化は速度的にも不利なうえに鍵添付じゃあ、その鍵で
暗号化を解除してくださいとクラッカーに言ってるようなもの。
暗号化にかける時間があったら他のことやったほうがよい。
>>43 あのリンク先程度じゃ、変形算術圧縮とか、TripleDES掛けただけでも解析できなくなるだろ
まぁしばしばルーチンの解析なんかしないで、ルーチンごと
ブッこぬいて使ったりするけどね。
複雑になればなるほど、所詮手動の解析では手間がかかる。
つまり、複雑度を限りなくあげてやればよい。
結局、複合化後のデータを抜き出すようなコード書けば
意味無いんじゃないの?
ネトゲなんかで課金がからむと真面目にやったほうがいいんだろうが、
普通のオフラインゲームであんまり気張ってもなぁ。
暗号化アルゴリズムをどう複雑にしたって、たとえば
bool decrypt(byte *out, byte *in, int len);
みたいな関数の入り口見つけられたら、そこからそのまま
ひっこぬかれておしまい。
アルゴリズムではなくてプログラムを複雑にすると
今度はプログラムが単に汚くなる。
50 :
48:01/11/20 16:05 ID:???
こういう暗号化は、暗号化アルゴリズムをいかに
複雑にして解読を防ぐかじゃなくて、復号ルーチンを
どうリバースエンジニアリングから守るかだよ。
52 :
名無しさん@お腹いっぱい。:01/11/21 04:09 ID:XcI+VzyT
皆さんソフトにリバースエンジニアリングを防ぐ建設的な手法を使って
いらっしゃいますか?(結局理論的には解析可能だから対策をしないと
いうのはとても簡単なことですが…)
>>51 >暗号化アルゴリズムをいかに複雑にして解読を防ぐかじゃなくて
おおむね同意します。でも暗号アルゴリズムなんてXORでもない限り
複雑なものを導入しても大してコストはかからないですよ。感覚としては
XORをかけるならAESかけるのもさして違いはないです。
53 :
52:01/11/21 04:13 ID:???
>XORでもない限り
すみません "s/XORでもない限り/"
XORとAESってそうとう違うような・・・
55 :
名無しさん@お腹いっぱい。:01/11/21 13:01 ID:kTxoHJqc
どうせ鍵を同梱するなら、XORでももっと凝った暗号でも
防御力は一緒だと思ってたんだけど、違うの?
>>55 鍵と暗号済みのデータがあれば、解読できるわけ?
ゲームを普通に起動して、
メモリ上に展開された解読済みデータを
ReadProcessMemory で抜き取るとか。
58 :
名無しさん@お腹いっぱい。:01/11/21 15:13 ID:K8u4BtIq
>>49 グローバルなレジストフラグをプログラム全体に散りばめておいて、
レジストチェックルーチンの中でそのフラグを直接操作する。
こうすることで、レジストチェックルーチンをスキップしただけでは
動作しないようになる。
あとはひたすらチェックルーチンを冗長に複雑にする。
例えば、チェックルーチンは仮想マシンコードで実装する。
これによって直接の逆アセンブラは防げる。
あとは、そのルーチンを圧縮して、展開コードを仮想マシンで書いて
インタプリタで動かして、無駄なコードをつけまくって、ひたすら頑張る。
一度このシステムを作れば、プログラムにフラグを生めこむだけなので再利用はきくよ。
なんか話がいつのまにかレジストチェックルーチンの話に
すりかわってますぜ旦那・・・
みんなサウンドやBGMのコーデックに何使ってる?
61 :
名無しさん@お腹いっぱい。:01/11/21 15:45 ID:K8u4BtIq
>>59 暗号化も鍵を隠すという点ではにたようなものでしょうが。
暗号の鍵を暗号化する?w まぁがんばれや
ネットゲーの場合はときどきサーバからあたらしい
アルゴリズムの復号化DLLが送られてくる、とかで
結構なんとかなるかな。
普通のゲームの場合、暗号化されたデータと鍵と復号ルーチンを全部配布してるわけで、
その辺が普通の暗号解読とは違う。
個人的にはあんまりむきになっても仕方ないと思ってるんだけど
66 :
名無しさん@お腹いっぱい。:01/11/21 20:11 ID:16mzDT/7
鍵と金庫を一緒にユーザにしてんのに、
南京錠だろうがIDカードだろうが同じことだと思う今日この頃。
シェアウェアなら、パスワードにデータの解除キー混ぜたり
できるかもしらんけどどのみち気休めでんな。
67 :
名無しさん@お腹いっぱい。:01/11/21 20:12 ID:16mzDT/7
s/してんのに/渡してんのに/
68 :
名前は開発中のものです。:01/12/16 02:56 ID:inKSfJGH
age
OggVorbis 重くない?
これ入れてから FPS が激減しちゃったんだけど・・。
70 :
名前は開発中のものです。:01/12/17 00:01 ID:7KBcu3BJ
MP3 2%, OGG 5%, APE 15%, MPC 1%, AAC 15% (Celeron450MHz@Winamp における負荷調べ)
どこぞから拾ってきた参考資料
多少は重いかも
www.din.or.jp/~glit/TheOddStage/Progs/audioplayer/
こんなのがある。CPU使用率調べ。
>>71 やっぱ、mp3もoggも遅いマシンだと負荷は馬鹿にならないなー。
いやそのページのPenIIIマシンが遅いという気はないんだが。にんともかんとも
74 :
名前は開発中のものです。:01/12/23 03:58 ID:nVi8CRdJ
OggVorbis RC3 早くでないかな・・・。
75 :
名前は開発中のものです。:02/01/09 13:03 ID:4uvwfI59
>74
でまして。
76 :
名前は開発中のものです。:02/01/09 23:33 ID:SWMCUrMt
OggVorbis RC3 すごく音がいいぞ
>>29,33
去年の話でなんですけど、閉鎖ということでご勘弁を。
78 :
名前は開発中のものです。:02/02/04 09:16 ID:eg/wWGzG
プレイ中のゲームの変数改竄方法と対策について語り合ってるスレはないですか?
プレイ中のゲームの変数改竄方法と対策について語り合ってるスレはないですか?
>プレイ中のゲームの変数改竄方法と対策について語り合ってるスレはないですか?
プログラムコードを書き換えることで、変数改竄をするパターンが
多いです。なので、これに対する対策は、全てのアプリケーションデータを
プログラムコード全領域をキーとする暗号をかけてしまうことです。
こうすれば、プログラムコードを変化させようものならば、
アプリケーションデータも解凍時に支障が起きます。
プログラムコードが変更するたびにデータも作成しなければならないという
点がデメリットと、絶対に常駐するコード領域をキーにするというのが
必要条件です。
もっとも気休め程度の暗号なのですが。
>>81 結局、コード書き換えされればいつかは改造されるのか。
オフラインなら良いかもしれないんだけど、ネットゲーだと致命的だよな。
課金とか絡んでくるし。
チートキャラだらけのネトゲに金払うなんてバカバカしいってことで
ゲームの存続にもかかわってくるから結構重要な問題かと…
プレイ中にプログラムを切り替えてターゲットゲームの変数の増減を検索して
何の値であるか推定し、書き換えるアプリがありますね。
プロセスの切替時の各パラメータチェックサムの変化で書き換えを検出
できそうですが、いずれ高度な書き換えソフトが出ないとも...
折れは男らしく全部ビットマップ
ダブルキュリックで中身が見える親切設計だ折れもユーザーも大ハッピー。まいったか
ネットだと結局、改竄してもらっては困るデータ(能力値等)をサーバーに、
改竄してもどうでもいいデータ(テクスチャ)を置いて、完全にクライアント
とサーバーを分割するしかない。 というか、それでオケな気もする。
86 :
名前は開発中のものです。:02/05/14 21:45 ID:x.mXxrcs
>84
まいった。
アナタ最強でつ。
88 :
1:02/09/07 01:56 ID:???
おお、このスレまだあったんだなぁ・・・(涙
ねぇ3Dのデータ扱うのに「これ使っとけヽ(`Д´)ノゴルァ!!」って感じの
フォーマット教えて下さい……
90 :
名前は開発中のものです。:02/09/23 07:18 ID:hVSm4E2G
自作
xsi
いややっぱしtmd使っとけ
いやrokだろう
94 :
89:02/09/23 21:13 ID:???
>91>92>93
ありがとうございます、試してみます。
でもみんな>90みたいに自作の独自フォーマット使ってたら(((( ;゜Д゜))))ガクガクブルブル
マジレスすると世間では基本的に自作フォーマットだ。がんがれ
>>66 個別に違う鍵を渡すなら漏洩元を特定でるるから無意味でもないのでは?
97 :
名前は開発中のものです。:03/02/23 02:53 ID:pM6P4J9p
保守あげ
o.
/  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ /
/ このスレは見苦しく. /
/ 終了いたしました /
/ ありがとうございました /
/ /
/ モララーより /
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/
∧_∧ / /∧_∧
( ・∀・) / /(・∀・ )
( )つ ⊂( )
| | | | | |
(__)_) (_(__)
99 :
名前は開発中のものです。:03/02/25 01:43 ID:/DNQkTBe
データは全部変数に代入してコンパイラすればいいんではないか
というのはだめか?
o.
/  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ /
/ このスレは無事に . /
/ 終了いたしました /
/ ありがとうございました /
/ /
/ ペイピッニダより /
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
/
. /
__<`∀´>./
/__ \ /
| | | |
(_) (__)
保守
??
104 :
名前は開発中のものです。:03/09/23 03:39 ID:HNIyLmTg
>>99 ROMに焼くならそうするしかない。
static const指定して全部プログラムROMに詰め込む。
105 :
名前は開発中のものです。:03/10/03 23:27 ID:qU13l1Ia
改造ソフトってパラメータがやたら増えてたりするみたいだが
それやると
チェックサムに引っかかってセーブデータ無効になったりしないか?
なんで皆平気で改造してるんだろ。
優秀で親切ひと、教えてください
マルチ氏ね
107 :
名前は開発中のものです。:03/10/04 00:06 ID:sM2y81o/
>106
105さんは前のスレッドで撤退宣言してますよ
>>105 ゲーム製作じゃなくてゲームプレーだろそれ。
板違いだって言ってんのに何でまたしつこくこの板で聞くんだ?
109 :
名前は開発中のものです。:03/10/04 01:01 ID:YxrpxQrl
りょおかいしました、じゃ家庭用ゲーム板で伺います
プログラマじゃないとわからないだろうとおもったんですよ、、
画像データなら…
昔のしょぼい市販ゲームでは、ビットマップのヘッダ潰しただけってのも
あったけど、大体は、ランレングスかスライド辞書でOKだろ。
そういや、アンバランスのザナドゥはベタベタのビットマップだったな。
マスクデータも見えていや〜ん(w
スレ違いと思われるが、Susieプラグインを作ったりしてる人たちは、どうやって作っているのか知りたい。
delphi始めて少ししかたってない厨にはやはり無理なのだろうが
保守
113 :
名前は開発中のものです。:04/05/02 10:22 ID:jvA7QL+W
保守
>>111 susieなんて参考にしたら駄目。
あれは作者も認める失敗策。
115 :
名前は開発中のものです。:04/05/28 11:52 ID:RHmeZuoM
基本的にゲーム内で使われるテクスチャやモデルデータなどは
どういった形で置かれているのでしょうか?
圧縮して鍵をつけておられるのでしょうか。
どなたか教えていただけますか。
基本などない
フリーの一般ゲームは一般的なフォーマットをそのまま使っている事が多い
市販ゲームは独自形式が多いかな(単に適当なゴミヘッダつけてるだけかも)
18禁ゲームは画像を独自形式にする必要ありかと
>>117 >18禁ゲームは画像を独自形式にする必要ありかと
bmpやjpgを抽出するソフトがあるから18禁では独自形式にしないと
すぐ見られちゃうな。
そして見られちゃうゲームが少なくない。
119 :
名前は開発中のものです。:04/06/15 09:25 ID:Qit+XtM0
age
jpgやpngをビットシフト(?)させるだけでも十分なのかい?
解析するやつは何やってもやるんで、ほどほどでいいんでない。
解析時間>攻略時間 になるのがいいんだろうけど
最近はネットでツールが出回るのが問題だよなぁ・・・。
122 :
名前は開発中のものです。:05/03/05 20:09:12 ID:iSU781a/
保守
保守
124 :
名前は開発中のものです。:2005/06/15(水) 15:45:12 ID:G1JAVN4A
保守
∧∧
( 'A `)
(⊃⌒*⌒⊂)
/__ノωヽ__)
_,.>
r "
>>1 \ _
r-''ニl::::/,ニ二 ーー-- __
.,/: :// o l !/ /o l.}: : : : : : :`:ヽ 、
/:,.-ーl { ゙-"ノノl l. ゙ ‐゙ノノ,,,_: : : : : : : : : :ヽ、
ゝ、,,ヽ /;;;;;;;;;;リ゙‐'ー=" _゛ =、: : : : : : : :ヽ、
/ _________`゙ `'-- ヾ_____--⌒ `-: : : : : : : :
...-''"│ ∧ .ヽ. ________ / ____ ---‐‐‐ーー \: : : : :
! / .ヽ ゙,ゝ、 / ________rー''" ̄''ー、 `、: : :
.l./ V `'''ー-、__/__r-‐''"゛  ̄ ̄ \ ゙l: : :
l .,.. -、、 _ ‐''''''''-、 l !: :
| / .| .! `'、 | l: :
l | .l,,ノ | ! !: :
/ '゙‐'''''ヽ、 .,,,.. -''''''''^^'''-、/ l !: :
r―- ..__l___ `´ l / /: :
\ `゙^''''''―- ..______/_/ /: : :
126 :
名前は開発中のものです。:2006/06/12(月) 13:54:07 ID:WiXqYYR1
過疎ー
127 :
名前は開発中のものです。:2007/10/04(木) 19:28:38 ID:9SSXbkbl
あげ
jk
129 :
名前は開発中のものです。:2007/10/20(土) 03:45:43 ID:mMbwj+l/
あーーーーげーーーーろーーーー
ファイル形式とはすこしずれるけど、
RPGのマップデータとかって誰が考えても似たようなものになるよね。
汎用の規格があればエディタを自作とかしなくていいと思うんだけど
だれかやってくれないかな。
>>130 パフォーマンス気にしなくていい場合にはそれでいいと思うんだよ
それこそXMLで作ってもいいと思う
でも、ゲームってパフォーマンスが常に求められるから
メインのプログラムに最適化されたデータ構造にすると思うんだ
そうすると結局汎用ではなくなるのではないか。
スーファミのデータからモンスター画像やマップチップ取り出して
画像ファイルとして保存なんて出来る?
難易度は?
拡張子
bin ext dat 54
プレステだがこれでどうやって見ろと…
136 :
名前は開発中のものです。:2007/11/16(金) 12:49:07 ID:bm3/TuGg
SFCの敵グラならたまに専門サイトで見かけるな
Windowsでシンプルに、構造体の内容をデータファイルとして
読み書きするフォーマットを考えてるんだけど、
みんなこういう場合はアラインメントいくつにしてる?
16バイト?
>>130 汎用なテキストフォーマットと、
それのパーサーが用意されていれば、
最適化したバイナリ作りも楽で良さそうだねぇ。
3DデータのdotXSIみたいな。
>>137 単純にバイナリで読み書きする。
構造体やクラスのサイズが変わったら泣く。
構造体のパディングはコンパイラによって違うから、無理なんじゃねーの?
やってから言え。
やるつもりはないが、やるなら1。ダミー変数でアライメント調節するのを前提で。
さもなくばVCデフォの8か、double無しという条件で4。
あまりアライメントを気にしたことがないので、16を指定する状況が思いつかない。
微妙に話がずれるが、ちょうどデータ構造化のライブラリがオープンソースになっていた。
C++とJavaとPython対応で、ライセンスはApache License 2.0。
Google,自社開発のデータ構造化ツール「Protocol Buffers」を公開
ttp://itpro.nikkeibp.co.jp/article/NEWS/20080709/310437/
test
??????
test
test