📚 NWN2:EE DLGファイル構造解析 - 基礎編
Neverwinter Nights 2: Enhanced Editionのダイアログファイル(.dlg)を解析・翻訳する方のための完全ガイドです。
🎯 概要
NWN2:EE(Neverwinter Nights 2: Enhanced Edition)のDLG(ダイアログ)ファイルは、ゲーム内でのキャラクター間の会話を定義するファイルです。このドキュメントでは、DLGファイルの内部構造と各要素の詳細を説明します。
📁 ファイル基本情報
- ファイル拡張子:
.dlg
- 形式: GFF (Game File Format) v3.2
- エンコーディング: バイナリ形式
- 文字列参照: TLKファイル(dialog.tlk)への参照
🏗️ 全体構造
DLG File ├── Root Struct │ ├── Basic Properties (QuickChat, DelayReply, etc.) │ ├── StartingList (会話開始条件) │ ├── EntryList (NPCの発言) │ ├── ReplyList (プレイヤーの選択肢) │ └── AnimTagList (アニメーション設定)
⚙️ ルート構造の基本プロパティ
フィールド名 | データ型 | 説明 | 例 |
---|---|---|---|
EndConversation |
CResRef | 会話終了時のスクリプト | nw_walk_wp |
QuickChat |
INT | クイックチャット設定 | 0 |
DelayReplyF |
FLOAT | 返答遅延時間 | 0.0 |
UseSpeakerApp |
BYTE | 話者外見使用フラグ | 1 |
MPCutscene |
INT | マルチプレイヤーカットシーン | 1 |
🚀 StartingList(会話開始条件)
会話の開始条件を定義するリスト。各要素は以下の構造を持ちます:
StartingList要素構造
{
"ShowOnce": 0, // 一度だけ表示するか
"IsChild": 0, // 子要素かどうか
"Index": 120, // 参照先エントリのインデックス
"CameraInfo": {...}, // カメラ設定
"ActiveConditiona": [...] // 実行条件
}
実行条件 (ActiveConditiona)
{
"Not": 0, // NOT条件
"And": 1, // AND条件
"Script": "gc_global_int", // 実行スクリプト
"Parameters": [ // パラメータリスト
{
"ParameterType": 2, // パラメータタイプ
"Parameter": "gb_in_scene" // パラメータ値
}
]
}
💬 EntryList(NPCの発言)
NPCが話す内容を定義するメインコンテンツです。
Entry要素構造
{
"node_id": 0, // ノードID(配列インデックス)
"text_strref": 160682, // TLKファイル内のテキスト参照ID
"speaker_resref": "khelgar", // 話者リソース参照
"sound_resref": "gl_khelgar_0000", // 音声ファイル参照
"text": "実際のテキスト内容", // 解決されたテキスト(TLKから取得)
"replies": [...], // プレイヤーの選択肢リスト
"scripts": {} // 実行スクリプト
}
Entryの重要フィールド
フィールド名 | データ型 | 説明 | 例 |
---|---|---|---|
NeedsVO |
BYTE | 音声が必要か | 1 |
Animation |
DWORD | アニメーションID | 0 |
Quest |
CExoString | 関連クエスト | "" |
DelayF |
FLOAT | 表示遅延時間 | 3212836864 |
🗣️ RepliesList(プレイヤーの選択肢)
各Entryに対するプレイヤーの返答選択肢です。
Reply要素構造
{
"reply_text_strref": null, // プレイヤー選択肢のテキスト参照
"next_node_id": 72, // 次のエントリノードID
"reply_text": "実際のテキスト", // 解決されたテキスト
"scripts": {} // 実行スクリプト
}
🔄 会話フロー
基本フロー
- StartingListで会話開始条件をチェック
- 条件に合致したEntryを表示
- プレイヤーがReplyを選択
- Replyの
next_node_id
に従って次のEntryへ移動 - 会話終了まで2-4を繰り返し
条件分岐
- ActiveConditionaによって表示・非表示を制御
- スクリプト実行結果によって動的に変化
- グローバル変数やクエスト状態に基づく分岐
🌐 翻訳における重要なポイント
📖 テキスト参照システム
- text_strref: TLKファイル内のテキストID
- reply_text_strref: プレイヤー選択肢のテキストID
- 実際のテキストはTLKファイルから取得される
👤 話者識別
- Entryレベルの
Speaker
フィールド - グローバルレベルの
VOCharName
フィールド - ファイル名による推定(
gl_khelgar.dlg
→khelgar
)
🎵 音声ファイル連携
- sound_resref: 音声ファイル名
- NWN2インストールディレクトリから音声ファイルを検索
- 翻訳時は音声ファイルも考慮が必要
💡 実用例
📄 サンプルファイル: gl_khelgar.dlg
{
"file_type": "DLG",
"version": "V3.2",
"entries": [
{
"node_id": 0,
"text_strref": 160682,
"speaker_resref": "khelgar",
"sound_resref": "gl_khelgar_0000",
"text": "{Keep it casual, flat, player's going to hear this line a thousand times}All right, go on and ask, then.",
"replies": [
{
"next_node_id": 72,
"reply_text_strref": null
}
]
}
]
}
🔗 関連記事
より詳細な技術仕様については、「NWN2:EE DLGファイル技術仕様 - 開発者編」をご覧ください。
更新日: 2025年7月26日
バージョン: 1.0
作成者: NWN2:EE DLG Translation Tool Contributors
0 件のコメント:
コメントを投稿