Dragon Age: Originsの最近のブログ記事

Dragon Age Conversation Reader - version 0.6.1 release.

Download: dao_reader100310.7z (size:550kb以下)

Dragon Age Conversation Reader は、BioWareのゲーム"Dragon Age: Origins"の会話を閲覧する非公式ツール(Unofficial tool)です。
DLGファイルに含まれている会話の前後関係を階層構造である程度再現します。

更新情報

2010/03/10
ver.0.6.1

  • 1.03更新分を追加

Dragon Age Conversation Reader - version 0.6 release.

Download: dao_reader100306.7z (size:550kb以下)

Dragon Age Conversation Reader は、BioWareのゲーム"Dragon Age: Origins"の会話を閲覧する非公式ツール(Unofficial tool)です。
DLGファイルに含まれている会話の前後関係を階層構造である程度再現します。

dao_reader06.jpg

更新情報

2010/03/06
ver.0.6

  • 複数のTLKテキスト読み込みに対応
  • 上記対応によりcoreモジュールへの対応
  • singleplayerモジュールのpatch分を対応
  • singleplayerモジュールでコンバートし損ねていた大量の中間ファイルの追加
  • 検索可能判断の調整

 

 動作環境

  • Windows XP SP3(2000/Vista/7)
  • .Net Framework 2.0 SP1
  • なるべく高速なCPU
  • 35MB以上の空き領域を持つなるべく高速な記憶領域
  • 200MB以上の空き領域を持つなるべく大量のメモリ

詳細は付属のreadme.txtを読んで下さい。

 

補足

  • singleplayerモジュール以外にも対応して、DLCやらExpansionにも対応可能になったと思ったら、DLCのerfはtoolsetで読み込みすら出来なかったでござるの巻。そりゃそうか。Awakeningsは読めるといいなあ。
  • 当然ながらDLG以外にも文字列は参照されているのだが、それを解読しないと前後関係が分からなくて意味不明...という使われ方でもなさそうなので、DLGのみで。
  • フィードバック用にコメントやトラックバックを開けておくと、鬼のようにスパムをぶち込まれるので、何かあればメールかフォーラムあたりにでもどうぞ。
(P.S.) version 0.6.1
http://hotstudio.net/serika/blog/2010/03/dragon-age-conversation-reader-3.html

Dragon Age Conversation Reader - version 0.5 release.

Download: dao_reader091209.7z (size:650kb以下)

Dragon Age Conversation Reader は、BioWareのゲーム"Dragon Age: Origins"の
会話を閲覧する非公式ツール(Unofficial tool)です。
会話の前後関係を階層構造である程度再現します。
現在はsingle playerモジュールの会話のみに対応しています。

dao_reader05.jpg

更新情報

2009/12/09
ver.0.5

  • 最上位の会話ノードが同DLG内の別の会話ツリーで重複する場合、先に出たノードを優先して重複しないようにした。
    (将来的には最上位ノードを優先するかもしれない)
  • ステータスバーのサイズを固定
  • 検索アルゴリズムの改善
  • 「前を検索」を追加
  • 検索範囲の指定を追加
  • 「展開しているノードのみ」の追加
  • 「正規表現を使う」の追加
  • 「終端に到達したら先頭に戻る」の追加
  • 展開、折りたたみのメニュー追加

 

 動作環境

  • Windows XP SP3(2000/Vista/7)
  • .Net Framework 2.0 SP1
  • なるべく高速なCPU
  • 30MB以上の空き領域を持つなるべく高速な記憶領域
  • 200MB以上の空き領域を持つなるべく大量のメモリ
  • singleplayer_en-us.tlkをSDJ氏のツールdao_tlkeditor.exeで出力したテキスト
    または同等のフォーマットで記述されたテキスト({ID}\n<string>\n...)

詳細は付属のreadme.txtを読んで下さい。

 

補足

  • core_en-us.tlkはdesignerdialogs.erf内にdlgがあったので何らかの形で対応する予定です。とはいえ、階層構造は無いに近いのでdlgのファイルの命名程度しか情報は得られ無さそうです。
  • 読み取り専用にしているのは日本での翻訳方法に合わせたためです。
    日本の翻訳プロジェクトではGoogleの翻訳ツールキットを用いて翻訳しているので、個々が直接テキストに編集をしたのでは反映されません。仮に編集可能にしてテキストを編集しても、編集したデータは翻訳プロジェクトには反映されないため、翻訳者にとって混乱を生むのではないかという考えで読み取り専用にしています。
    しかしながら、編集可能にすること自体は可能なので、日本の翻訳プロジェクトで混乱を
    起こさないような方法(例えばチェックボックスを外すまでは編集機能はロックされているなど)
    であれば編集可能にしてもよいかなと考えています。ただ、リビジョン管理のような機能は無く、単純な編集機能のみに留まると思います。

(P.S.) version 0.6
http://hotstudio.net/serika/blog/2010/03/dragon-age-conversation-reader-2.html

一応検索可能になったので、アルファ版リリースしてみます。

Download: dao_reader091124.7z (size:600kb以下)

Dragon Age Conversation Reader は、BioWareのゲーム"Dragon Age: Origins"の会話を閲覧する非公式ツール(Unofficial tool)です。
会話の前後関係を階層構造である程度再現します。
現在はsingle playerモジュールの会話のみに対応しています。

dao_reader_alpha.jpg

 動作環境

  • Windows XP SP3(2000/Vista/7)
  • .Net Framework 2.0 SP1
  • なるべく高速なCPU
  • 30MB以上の空き領域を持つなるべく高速な記憶領域
  • 200MB以上の空き領域を持つなるべく大量のメモリ
  • singleplayer_en-us.tlkをSDJ氏のツールdao_tlkeditor.exeで出力したテキスト
    または同等のフォーマットで記述されたテキスト({ID}\n<string>\n...)

使い方や既知の問題、未実装事項などは付属のreadme.txtを読んで下さい。

(追記)0.5にバージョンアップしました。なんというたらい回し。
http://hotstudio.net/serika/blog/2009/12/dragon-age-conversation-reader-1.html

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

dao_reader_wip.jpg

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

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

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

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

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

(追記)アルファ版でてます。
http://hotstudio.net/serika/blog/2009/11/dragon-age-conversation-reader.html

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

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

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

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

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を検索する機能をもっているのだが、データベース上のエクスポートされる前のデータを参照しているような感じで、ソースは公開されて無い。残念。

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 wiki

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

駄目だ、とにかく設定を変えてもクラッシュする。ドライバも変えまくってみたが駄目だったし、あらゆることは試してみたのでもうこっちではどうにもならん。forum見たら大勢というわけではないが、同じようにrandom crashesに悩まされる人もいる模様。

お陰で殆ど進まなかった。まあCampでひたすらMorriganと話し込んでいた所為もあるが、Lotheringでは進行不能に近い頻度でクラッシュorフリーズするし。

マシンの負担も馬鹿にならんだろうし、しばらく別のゲームでもやるかな。そういえばATIにあわせて作ったといえば、Sourceエンジンへのドライバ対応も酷かった。8800Ultra購入当初のドライバのバージョンでは動いていたのだが、その後の1年くらいは起動直後に死亡するようになっていて、忘れた頃にまともに動くようになっていたなあ。

日本語化の役に立つかなと気晴らしにtlkのIDでツリー状に仕分けしてしてみるツールなんぞを作ってみたりしたのだが、大体の会話の塊は分かるものの、toolsetで確認出来るようなツリー状の会話の前後関係はやっぱり含まれていないような。前後関係が分かると大分翻訳しやすくなるとは思うのだが残念。IDの付け方の法則にもよるんだろうが、恐らくはカットシーンとかの別のファイルに含まれているんだろう。ということは、まずはtoolsetの使い方からか。

とりあえずゲーム本編の方。

ジャーナルから会話ログを参照することは可能なので、一応後から読み返すことができる。

Lotheringに入ってから急にといった感じなのだが、重要そうなNPCやオブジェクトの上にこれ見よがしに"!"をつけるのは止めようよ。ネトゲじゃあるまいし、雰囲気台無しだ。

Morriganが仲間になる。結構面白い。
*Campでお話。
Lotheringへ行く。
追い剥ぎをどうにかする。
*Priestと商人のもめ事をどうにかする。
*迷子の子供をどうにかする。
*TavernでLoghainの部隊連中にいちゃもんつけられる。
*Lelianaが仲間になる。
(*はサブクエストまたは小さなイベント。)

アーカイブ