DAO Conversation Reader(仮) WIP

今のところ致命的な問題には遭遇していないが、正しいデータが取れているのかはテストしきれないので不安なままではある。

dao_reader_wip.jpg

当然ながらデータ量は莫大なので、*キーを押して全部展開しようとすると延々と待つ羽目になる。なので、ルートに相当するノードは無くして一度に開けなくはした。

そうして開きすぎると(数万くらい?).netのツリーがそこまで想定をしていなかったらしくスクロールが途中までしかできなくなるのはどうにもならんか。

下位のノードの子に既に出た上位のノードがある場合は無限ループになるので即打ち切りました。そういうデータがあるのか検証用に大まじめに書くと死ぬほど重かったが、まあ解決。toolsetではどういう挙動をするのか確認していませんが、多分同じようなことをやってるんですかね。

そんなこんなでとりあえずrim以下を全展開する程度には割とまともな速度で動く感じ。

あとは検索機能が無いと話にならんので、それをつけたあたりでアルファ版を出してみます。検索は端折れないのでかなり重そうなんですがね。どうしましょう。

DAO GFF解析

DLGファイルの欲しいデータの取り出しができたと思ったら、既にSDJ氏がエクスポータを公開していたという。

Raw Data Blockは、身に覚えのない値の場合はとにかくオフセットと思って問題無い模様。大体はリストになっている型なんぞを指す。Raw Data Blockの先頭からオフセットするとそれっぽい場所に飛ぶので、それを繰り返す。
構造体の各要素にはオフセットが無いのだが、Field Arrayで出てくるIndexの値を、構造体の先頭からオフセットするとアクセス出来る。

まだデータの少ないケースと多いケースしか試していないので、連休中にまともなのを作って全DLGファイルで試してみないと。RIMの解凍が手作業なのが面倒だが、RIMまで解析するのは多分もっと面倒だからやるしか。恐らく似たような感じで解析できるんだろうけど、圧縮されていたら大変だし。

で、RIMからDLGを取り出す面倒な作業を各人にさせるというのは酷なので、DLGファイルから必要なデータだけを中間ファイルとして出力しておいて、そのファイル群とTLKをSDJ氏のツールで作成したtxtを併せて階層構造で会話をプレビューできるツールを作ろうかと思っていたのだが。
まあとりあえず、特に面倒な問題にぶつからなければ作るだけ作ってみます。気長に。

DAO GFF WIP

http://social.bioware.com/wiki/datoolset/index.php/GFF

を見ながらGFFを読み込むプログラムの作成を試みる。

ヘッダ読み込みOK。構造体配列も問題なし。フィールド配列もおk。

で、肝心の欲しいデータが埋まっているRaw Data Blockを読み込みたいのだが、途端にドキュメントの情報が無くなってしまう。

どこかにデータを参照するためのmimic pointersなるものが埋まっているはずなのだが、上記の難なく読めた部分には存在しなかった。Raw Data Blockの先頭からの逐次読み込みでは、バイナリ見て見当をつけれるデータはサルベージできても、順序よく並んでいなかったのでデータの階層構造は得ることができず使うことができない。となると参照に必要なアドレスはRaw Data Blockに埋まっているはずなのだが、Raw Data Blockの情報は無いし、どうもGFFの中でも各種ファイルタイプ別に割と自由奔放に定義されているような雰囲気なので探すのに骨が折れそう。今のところは見当もつかない。

tlkファイルは構造体配列もフィールド配列も個数が1つで、階層構造もあってないようなものと非常にシンプルなので、力業でもなんとかなりそうなのだが、目的のdlgファイルの階層構造は結構複雑なので応用できなさそうだった。

OfficialのProjectsページにGFFをダンプするツールがアップロードされていたが、これもRaw Data Blockには手を着けていない。やっぱり情報が無くて難しいと言うことなんだろうか。もう一つはconversationを検索する機能をもっているのだが、データベース上のエクスポートされる前のデータを参照しているような感じで、ソースは公開されて無い。残念。

DAO memo

BiowareのEngineを覗くのは初なので今更なのだが、会話の親子関係はdlgファイルにあるっぽいなあ。

本家のdlgはrimファイルで固められているのでこれをtoolsetで開いて解凍する。これを開くとtoolsetでdlgをデータベース上に作ったようなツリー状態では何故か見れないのだが、構造体そのまんまっぽいのはが参照できる。で、確かに親子関係は記されている模様。IDはdlg単位では割とまとまっているものの、IDだけでは親子は判断できない雰囲気だ。

dlgファイルの中の構造体は多分そのまんまなので一部の型のサイズをいくらに定義しているか分かればなんとかなりそうだが、dlgファイルそのものの構造はどうなってるのかな。
自力で調べるよりも海外サイト探した方が楽かもしれない。

(追記)余裕であった。Bioware流石やで。

http://social.bioware.com/wiki/datoolset/index.php/GFF

Dragon Age: Origins JP

進められないということは、いつものように英語のまま進めてクリアして満足してしまう、ということは無くなるので、これを逆手にとって日本語化プロジェクトに参加しました。別段、英語が得意というわけでは無いのですが…やれる範囲で頑張りたいと思います。

よろしくお願いいたします。

Dragon Age: Origins JP wiki

JPMOD Wiki Dragon Age: Origins 日本語化プロジェクト