1read 100read
2013年07月ゲ製作技術489: ゲームのデータファイルについて語るスレ (148) TOP カテ一覧 スレ一覧 2ch元 削除依頼
ゲームの価値を決定付ける最大条件 (127)
【RPGの】アイテム・ザコ敵・村人の会話【雑品データ】 (122)
【ライブ】こんなギャルゲーがしたい【メーカー】 (158)
面白いホラーゲーム作ってください (103)
3Dゲームエンジン】Unity総合スレッド19 (783)
◆◆フリーの最強3Dツールgmaxを使おう!◆◆ (175)

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


1 :01/11/18 〜 最終レス :2012/04/24
ゲームのデータファイルについて語るスレです
データファイルの種類(画像、BGM、効果音、音声など)は問いません
データファイルのフォーマット、圧縮、プロテクトなど語りましょう

2 :
[ヘッダ2byte][チェックサム2byte][データ2byte]

3 :
とりあえずフォーマットあたりから
ゲームを作るときには当然
データファイルのフォーマットも考えなければなりません
ちなみにいくつかのWINのゲームのデータファイルを見てみると
だいたい下記のような感じになってますね
・ヘッダー情報(識別ID、ファイル内のデータの数など)
 ファイル先頭に(必ずといっていいほど)ある
 特にはじめの4バイトが識別IDになってるものが多い(?)
・データ情報(データの識別名、位置、サイズなど)
 たいてい、ヘッダー情報の後にこれが配列される
 この数はヘッダー情報にある
・実際のデータ
 データ情報の配列の後に来る
 (ヘッダー情報のサイズ+データ情報×配列数の後)
私もゲームのデータファイルはこうしてますが、
他にもよく使われるフォーマットありますか?

4 :
追加
> 特にはじめの4バイトが識別IDになってるものが多い(?)
例えばYSUEのデータファイル(monde.ys2)は
初めの4バイトは"YS2E"が
メモオフ(***.dat)は"lnk"が識別IDとして入ってます

5 :
可変長データのストアにはどんな構造使ってる?
俺はRIFF-WAVEみたいに、
DWORD ID
DWORD size
BYTE data dup(size)
のチャンク構造でやってるけど。

6 :
>3,4
コンパイラが(というかCPUが)32ビットごとに
アクセスしたほうがパフォーマンスがいいから
Cで書くと
struct data
{
  long sign;
  long width;
  long height;
  ...
}
という風に宣言しておくのはよくやるみたい。
CGの横幅なんか2バイトで十分そうでも4バイトとるし。

7 :
ところで、先頭の4バイトの識別子は、
magicが一般的ですか?

8 :
 MAGファイルから直接DirectDrawのサーフェスに
読み込ませてる俺はDQNですか?

9 :
このスレなぁ、今んとこプログラマの好みの問題にみえるべ。

10 :
参考資料
http://www.wotsit.org/

11 :
>10
おお、こんなところ知らなかった。便利だ、感謝。
画像ファイルとかって、皆どうやって扱ってるのかな。
俺はMAGっぽい独自フォーマットで圧縮して、何十枚かまとめて
一つのファイルにしてる。ヘッダにオフセットのサイズの情報を
書いておいて、適宜抜き出してるけど。

12 :
圧縮ならS3TCが扱いやすい。
固定長マンセー

13 :
s/オフセットのサイズ/オフセットとサイズ/

14 :
暗号化だが、
http://info.isl.ntt.co.jp/
のEPOC PSEC Camelliaはどうか。
特にCamellia。

15 :
>>11
俺はMAGそのまんまだ。拡張子もMAG(w
 昔のエロゲなんかでMAGのヘッダ潰して拡張子変えただけ
ってのもあったらしいが。

16 :
オレは画像にはPNG使ってる
データはアーカイブにして、すべてを一つにまとめてる。
データのフォーマットは
struct header {
u32l sign;
u32l size;
u32l crc32;
};
あとは簡単な暗号化を施したカタログ情報と、
その後に圧縮データが続く。

17 :
MAGフォーマットってフリーの規格なの?
俺もほぼパクリで使ってるけど、なんかそのまま使うと怖いような。

18 :
マルチペイントのマニュアルには
同人ソフトなどでMAGフォーマットのデータを使ったりしても
いいですよ。みたいな事が書いてあった。

19 :
MAGフォーマットですか・・・
知りませんでした・・・
ちなみにMAGフォーマット検索してたら
こんなページ見つけました
〜 圧縮法入門 〜
http://www.ingnet.or.jp/~kojif/mu/comp/index.htm

20 :
追加
http://www.gavo.t.u-tokyo.ac.jp/~hosoyama/report/ex2b6.html

21 :
鮪の前身であるMAKIフォーマットが完全なフリーをコンセプトに
開発されたものだから、当然MAGも自由に使えます。
適度な圧縮率と展開の速さ&容易さで今でも便利なMAG萌え。

22 :
ついでに、MAGの仕様は「MAGBIBLE」で検索かけると見つかると思われ。

23 :
>>14
おお国産ですな。暗号化はAESしかしらないですなぁ
ブロック長より鍵長のほうが重要だと思うんですが AES 互換を全面に出した
ということですかな。Rijndaelより高速で256bit-keyが使えるなら使いたい。。
問題は Optimize されたレベルでより高速かということですが。。。

24 :
メッセージデータは当然圧縮なり暗号化なりするだろうけど…1byteずらして
ごまかすってのはダメ?(w
というかゲームデータを隠すのに128bit暗号も使わないて。

25 :
>>23
そういうのってすごい気になるけど、データの鍵は
プログラムがもってるわけ?
鍵とデータを一緒に配布するって馬鹿くせえとおもったが・・・

26 :
どの部分が鍵かなんて逆アセでもしないと解らないと思うけど。

27 :
逆汗すりゃわかるんでしょ。

28 :
圧縮の方の技術だけど、
ブロックソート後のデータもほとんど暗号と変わらんよ。
ゲームに使うなら十分でしょ

29 :
http://www.interq.or.jp/www-user/enra/rina/
こんなのどう?

30 :
たかがゲームデータ抜きたさに逆汗するヴァカがいるか!

31 :
とりあえず貼っとくか。
http://www.jisyo.com/viewer/faq/mag_tech.htm
MAG仕様書(原文) もちろん日本語ね。

32 :
>>30
結構いる

33 :
>>29 作者がドキュン

34 :
>>29 waveletにはちょっと興味あるけど。

35 :
解析を楽しむページ
ttp://ku-www.ss.titech.ac.jp/~yatsushi/Ryze.html
参考までに。

36 :
基本的に、解析クン一人にでも負けたらツールばら撒かれて終わりだからなあ(藁

37 :
>>25
鍵とデータが一緒になきゃ復号できないじゃん。
勘違いしてるのかもしれないけどこれはゲームの話で、実際に暗号を
使う場面では利用者がそれぞれに鍵を持っているので一緒も糞もない。

38 :
TIM2ってどうよ?

39 :
>38 PS2の開発なんてやったことも機会もなさそうだしなぁ…
PCで使う意義もないし。

40 :
Camelliaのコードをみましたが、8bitASIC系に特化されてて
16,32bitの最適化ソースが公開されていないようですね。
最適化ソースが無いのでRijndaelには速度で勝てないでしょう。残念ながら。
Feistel回数が比較して多いのとFeistelとSBOXの手間が他の方式と比べて
煩雑です。Feistelを何回か回すだけでも簡単な暗号系になりますから
それでもいいんですけどね。

41 :
>>37
そりゃそうだ。
しかしどんなに強力な暗号化を使っても、鍵と一緒に配布されてるんじゃなあ(藁

42 :
たかがゲーム(失礼)のデータを、そこまで暗号化しなくても
と思うのは、俺だけか?

43 :
俺もそう思う。どうせ>>35のリンク先のようなレベルのにかかったら
何やったって解析されてしまうんだから無駄無駄。
シェアウェアのクラック問題にも似てるけど。

44 :
>>42
同感。
複雑な暗号化は速度的にも不利なうえに鍵添付じゃあ、その鍵で
暗号化を解除してくださいとクラッカーに言ってるようなもの。
暗号化にかける時間があったら他のことやったほうがよい。

45 :
>>43
あのリンク先程度じゃ、変形算術圧縮とか、TripleDES掛けただけでも解析できなくなるだろ

46 :
まぁしばしばルーチンの解析なんかしないで、ルーチンごと
ブッこぬいて使ったりするけどね。

47 :
複雑になればなるほど、所詮手動の解析では手間がかかる。
つまり、複雑度を限りなくあげてやればよい。

48 :
結局、複合化後のデータを抜き出すようなコード書けば
意味無いんじゃないの?
ネトゲなんかで課金がからむと真面目にやったほうがいいんだろうが、
普通のオフラインゲームであんまり気張ってもなぁ。

49 :
暗号化アルゴリズムをどう複雑にしたって、たとえば
bool decrypt(byte *out, byte *in, int len);
みたいな関数の入り口見つけられたら、そこからそのまま
ひっこぬかれておしまい。
アルゴリズムではなくてプログラムを複雑にすると
今度はプログラムが単に汚くなる。

50 :
>>49 かぶった。結婚する?(ワラ

51 :
こういう暗号化は、暗号化アルゴリズムをいかに
複雑にして解読を防ぐかじゃなくて、復号ルーチンを
どうリバースエンジニアリングから守るかだよ。

52 :
皆さんソフトにリバースエンジニアリングを防ぐ建設的な手法を使って
いらっしゃいますか?(結局理論的には解析可能だから対策をしないと
いうのはとても簡単なことですが…)
>>51
>暗号化アルゴリズムをいかに複雑にして解読を防ぐかじゃなくて
おおむね同意します。でも暗号アルゴリズムなんてXORでもない限り
複雑なものを導入しても大してコストはかからないですよ。感覚としては
XORをかけるならAESかけるのもさして違いはないです。

53 :
>XORでもない限り
すみません "s/XORでもない限り/"

54 :
XORとAESってそうとう違うような・・・

55 :
どうせ鍵を同梱するなら、XORでももっと凝った暗号でも
防御力は一緒だと思ってたんだけど、違うの?

56 :
>>55
鍵と暗号済みのデータがあれば、解読できるわけ?

57 :
ゲームを普通に起動して、
メモリ上に展開された解読済みデータを
ReadProcessMemory で抜き取るとか。

58 :
>>49
グローバルなレジストフラグをプログラム全体に散りばめておいて、
レジストチェックルーチンの中でそのフラグを直接操作する。
こうすることで、レジストチェックルーチンをスキップしただけでは
動作しないようになる。
あとはひたすらチェックルーチンを冗長に複雑にする。
例えば、チェックルーチンは仮想マシンコードで実装する。
これによって直接の逆アセンブラは防げる。
あとは、そのルーチンを圧縮して、展開コードを仮想マシンで書いて
インタプリタで動かして、無駄なコードをつけまくって、ひたすら頑張る。
一度このシステムを作れば、プログラムにフラグを生めこむだけなので再利用はきくよ。

59 :
なんか話がいつのまにかレジストチェックルーチンの話に
すりかわってますぜ旦那・・・

60 :
みんなサウンドやBGMのコーデックに何使ってる?

61 :
>>59
暗号化も鍵を隠すという点ではにたようなものでしょうが。

62 :
>>60
OggVorbis

63 :
暗号の鍵を暗号化する?w まぁがんばれや
ネットゲーの場合はときどきサーバからあたらしい
アルゴリズムの復号化DLLが送られてくる、とかで
結構なんとかなるかな。

64 :
>>60
漏れもOggVorbis使ってる

65 :
普通のゲームの場合、暗号化されたデータと鍵と復号ルーチンを全部配布してるわけで、
その辺が普通の暗号解読とは違う。
個人的にはあんまりむきになっても仕方ないと思ってるんだけど

66 :
鍵と金庫を一緒にユーザにしてんのに、
南京錠だろうがIDカードだろうが同じことだと思う今日この頃。
シェアウェアなら、パスワードにデータの解除キー混ぜたり
できるかもしらんけどどのみち気休めでんな。

67 :
s/してんのに/渡してんのに/

68 :
age

69 :
OggVorbis 重くない?
これ入れてから FPS が激減しちゃったんだけど・・。

70 :
MP3 2%, OGG 5%, APE 15%, MPC 1%, AAC 15% (Celeron450MHz@Winamp における負荷調べ)
どこぞから拾ってきた参考資料
多少は重いかも

71 :
www.din.or.jp/~glit/TheOddStage/Progs/audioplayer/
こんなのがある。CPU使用率調べ。

72 :
>>71
やっぱ、mp3もoggも遅いマシンだと負荷は馬鹿にならないなー。

73 :
いやそのページのPenIIIマシンが遅いという気はないんだが。にんともかんとも

74 :
OggVorbis RC3 早くでないかな・・・。

75 :
>74
でまして。

76 :
OggVorbis RC3 すごく音がいいぞ

77 :
>>29,33
去年の話でなんですけど、閉鎖ということでご勘弁を。

78 :
>>76
160kbpsとか?

79 :
プレイ中のゲームの変数改竄方法と対策について語り合ってるスレはないですか?

80 :
プレイ中のゲームの変数改竄方法と対策について語り合ってるスレはないですか?

81 :
>プレイ中のゲームの変数改竄方法と対策について語り合ってるスレはないですか?
プログラムコードを書き換えることで、変数改竄をするパターンが
多いです。なので、これに対する対策は、全てのアプリケーションデータを
プログラムコード全領域をキーとする暗号をかけてしまうことです。
こうすれば、プログラムコードを変化させようものならば、
アプリケーションデータも解凍時に支障が起きます。
プログラムコードが変更するたびにデータも作成しなければならないという
点がデメリットと、絶対に常駐するコード領域をキーにするというのが
必要条件です。
もっとも気休め程度の暗号なのですが。

82 :
>>81
結局、コード書き換えされればいつかは改造されるのか。
オフラインなら良いかもしれないんだけど、ネットゲーだと致命的だよな。
課金とか絡んでくるし。
チートキャラだらけのネトゲに金払うなんてバカバカしいってことで
ゲームの存続にもかかわってくるから結構重要な問題かと…

83 :
プレイ中にプログラムを切り替えてターゲットゲームの変数の増減を検索して
何の値であるか推定し、書き換えるアプリがありますね。
プロセスの切替時の各パラメータチェックサムの変化で書き換えを検出
できそうですが、いずれ高度な書き換えソフトが出ないとも...

84 :
折れは男らしく全部ビットマップ
ダブルキュリックで中身が見える親切設計だ折れもユーザーも大ハッピー。まいったか

85 :
ネットだと結局、改竄してもらっては困るデータ(能力値等)をサーバーに、
改竄してもどうでもいいデータ(テクスチャ)を置いて、完全にクライアント
とサーバーを分割するしかない。 というか、それでオケな気もする。

86 :
 

87 :
>84
まいった。
アナタ最強でつ。

88 :
おお、このスレまだあったんだなぁ・・・(涙

89 :
ねぇ3Dのデータ扱うのに「これ使っとけヽ(`Д´)ノゴルァ!!」って感じの
フォーマット教えて下さい……

90 :
自作

91 :
xsi

92 :
いややっぱしtmd使っとけ

93 :
いやrokだろう

94 :
>91>92>93
ありがとうございます、試してみます。
でもみんな>90みたいに自作の独自フォーマット使ってたら(((( ;゜Д゜))))ガクガクブルブル

95 :
マジレスすると世間では基本的に自作フォーマットだ。がんがれ

96 :
>>66
個別に違う鍵を渡すなら漏洩元を特定でるるから無意味でもないのでは?

97 :
保守あげ

98 :
            o.
            /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ /
           /   このスレは見苦しく.  /
           /  終了いたしました    /
          / ありがとうございました  /
          /                /
         /    モララーより     /
         / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/
  ∧_∧  /                /∧_∧
 ( ・∀・) /                /(・∀・ )
 (    )つ               ⊂(    )
 | | |                   | | |
 (__)_)                  (_(__)

99 :
データは全部変数に代入してコンパイラすればいいんではないか
というのはだめか?

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
LOVE ON FIGHTを作りませんか? (126)
HSPで出来るのか・・・ (123)
MMORPG製作プロジェクト(仮) (117)
Delphiでアクションゲームが作りたい!! Part2 (172)
(178)
【ボーン】スキンメッシュ勉強スレ【デフォーム】 (181)
--log9.info------------------
内村コメディハウス (210)
不可思議探偵団 (608)
美少女ヌードル (119)
お笑いさぁ〜ん Part2 (470)
日本有線大賞 (182)
キングオブチェアー (704)
その顔が見てみたい (527)
R-1ぐらんぷり2011 (639)
知りたがり! Part4 (451)
よゐこ部 7時間目 (474)
なかよしテレビ★2 (296)
ジャイケルマクソン (710)
【テレ朝】冒険JAPAN!関ジャニ∞MAP (222)
MUSIC FAIR #1 (123)
内村オフモード (118)
アイドルちん Part2 (868)
--log55.com------------------
【野球】セ・リーグG7-4DB[5/23] 亀井先制打に大城・今村・田中俊適時打4回6点!8回田中俊1発巨人勝利 8・回好機逸しDe連勝止まる
【サッカー】森保ジャパン、キリンチャレンジ杯に臨む23人を発表…久保建英が初招集!★4
【テレビ】芸能界に“坂上忍アレルギー” 『バイキング』も共演NG続出
【芸能】海老蔵 「白い巨塔」は財前役の「田宮さん唐沢さん岡田さん 皆さま素晴らしい」
【漫画】 「かわいいお姉ちゃん大好き!」で50年、弓月光の軌跡辿る原画展が明日開幕 2019/05/23
【テレビ】小倉智昭「介護職員が入居者に暴行するのはよくあること。密室のことだから立証が難しい」 “失礼極まりない発言”と批判殺到
【芸能】ナタリー・ポートマン、モービーとの交際を「事実確認もなく意図的なものを感じる」と否定。モービーは反論
【音楽】LUNA SEAのタイ・バンコク公演が中止…河村隆一「残念です」