アットウィキロゴ

Conversation Tutorial

おそらく会話(Dialog)は、ストーリーのなかで冒険を形作る重要な一要素となっているでしょう。
Dragon Ageでは、会話は、「Lines」のコレクションで、これはインタラクティブなツリー形式の構造で整理されています。
このツリー構造は単純でもあり、複雑でもあります。
また各「Line」は、DragonAgeの世界全体の状態と相互作用している「Line」に付属するコンディションとアクションを保持しています。

このチュートリアルでは、簡単な事から初めて、それから次第に新しい特徴や、会話へ選択肢などを追加したりします。
その後には、会話に映画のような演出を与えるチュートリアルがあります。

クリーチャーの会話作成と設定

Creature Tutorialで、モンスターでいっぱいの小屋の外に立つ「Quest Giver」というクリーチャーを作成しました。

その目的はあなたにそのモンスターを倒しにいってもらうことです。

最初に、「Conversation」リソースを作る必要があります。新しいリソースを作るように、「Conversation」を選択し、その目的を追える様な名前をつけます。
ここでは「conv_quest_giver」としましょう。新しいConversationリソースは「Root」ノード以外は最初は空になっています。
Rootノードには、会話は何も入っていません。会話全体に適用する様々なグローバル設定を保持する単なるコンテナです。

Rootノードを選択すると、会話エディットウインドウ下のタブパネル内でグローバル設定を使用できるようになります。


これらのデフォルト設定は、私たちがここでするような、プレイヤーキャラクター(PC)とNPC間の会話に最適な設定なっています。
「OWNER」は、会話を始めるクリーチャー。この場合はQuest Giverで、「PLAYER」はもしろんプレイヤーのキャラクターのことです。

  • Default NPC Speaker :これは、デフォルトではプレイヤーとの会話相手の選択です。
  • Default NPC Listener :これは、NPCの会話相手のクリーチャーです。これは、NPCが会話するときに誰のほうを向くのかを決めます。
  • Default PC Listener :プレイヤーキャラクターが会話相手の選択をする時に話しかけるクリーチャーです。

これらの設定は、「Line」ごとに上書きされ、二人以上の会話を書くときに必要なものですが、この入門チュートリアルでは、そのようなことはしません。
また、会話の相手として無機物のオブジェクト(Placeableとか)もできますが、それもここでは割愛します。

タブページ内には「Cinematics」を固定するためのチェックボックスが多数あります。これは通常toolsetが、あなたが手動でチューニングをした後に自動的に新しいアニメーションを生成させないようにするために使われます。今のところは心配する必要はありません。

いったんConversationリソースを作成したら、プレイヤーが話しかけてきたときにQuest Giverのクリーチャーが、それを使うように教えてあげなければいけません。
クリーチャーエディターで、Quest Giverを開き、「Conversation」プロパティをデフォルトから「conv_quest_giver」へ変更しましょう。

いくつかの会話の追加


Rootノードに「Line」を追加するためには、右クリックから「Add Line」(Insert Line?)を選択します。また、ツールバーやショートカット「Ctrl+A」でもできるでしょう。

追加されたノードは赤いテキストになります。これは、「non-interactive」(NPCが話す)で、だれが話しているかを示すように「OWNER」とタグがつけられています。
プレイヤーがOWNERと会話を始めた時、これをはじめに言います。

OWNERが何を言うかを決めるために、そのノードを選択して、Dialogeタブに行きテキストを入力しましょう。Dialogueのテキスト入力欄の下の他のオプションについては
また気にする必要はありません。

#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (conv_qb.JPG)

一度クリーチャーがそのライン(Line)を話したら、プレイヤーに返答をすることを思いつかせましょう。
プレイヤーは、Quest Giverに挨拶したり、質問をしたり、無視したりするかもしれません。これらの選択肢を加えるために三回ほど「Insert Line」をします。
これで青いLineが三つ赤の子ノードとして加わりました。これらの各Lineの会話はそれぞれ、プレイヤーができる返答のテキストを加えます。


会話は、プレイヤーの選択に対するNPCの返答や順番に分岐していくプレイヤーの選択肢のツリーによって続いていきます。
プレイヤーが会話の終わりにたどり着くと、探索モードに戻ります。

この分岐パターンのおかげで、会話の容量は急激な割合で増えていきます。すぐに書くのが退屈になるでしょう。
さらに悪いことに会話ツリーには重複しているような、同じようなラインがたくさん出てくるかもしれません。
しかし、これは「Link」によって解決できます。これは、それぞれのラインを一方のほうへジャンプさせたり、会話をループさせたりできます。

この例では、Quest Giverに、最初の選択肢で「Excellent! I have a quest I need performed for me!」と返答させています。
このときに、プレイヤーに最初の選択肢と同じ「Oh?What quests do you have in mind?」としてつなげていきます。
ツリー全体を複製するより、既にある「Oh?~」のラインを選択し、コピーしましょう。(Ctrl+Cか、右クリックからコピー)
それから、新しいOWNERラインを選択し、右クリックから「Paste as Link」を選択します。(Ctrl+Shift+V)

リンクライン(linked line)は、グレーで表示されます。グレーのラインがどこへリンクしているかを知るには、右クリックから「Jump to Target」を選択します。(もしくはダブルクリック)
目的のラインがどこからリンクされているかを知るには、「Find Links」を使います。

これで会話の二つのパスが同じラインへと通じるようになしました。Quest Giverは、プレイヤーに後ろの小屋にモンスターがたくさんいることを教えてくれます。
プレイヤーがクエストを受けた後、会話に選択肢を加えることができます。
そして、戦闘のために小屋に入ったとき、どのようにそこにたどり着いたかによって、多くのストーリーがあるでしょう。

プロットを通してのクエストの追跡


私たちは今プレイヤーにクエストを与える場所の仕組みを知ったので、その進捗について追いかける方法を知りたいでしょう。
NeverWinterNightsでは、これには直接スクリプトを使用していました。しかし、DragonAgeでは、そのプロセスを簡単にできるような新しいタイプのリソースを紹介します。
「Plot」がそうです。リソースパレットへ行き、新しいPlotリソースに「clear_the_hut」と名前をつけましょう。

Plotは、連続したTrueかFalseの名前付きフラグによって構成されています。
これらのフラグは、プレイヤーの行動の反映として設定される値で、意味のある業績や、進捗を示しています。
各フラグはまた、関連したジャーナルのテキスト(プレイヤーのジャーナル内プロットタイトル下に表示されるテキスト)を持つことができます。
ジャーナルのテキストは通常プレイヤーの情報を保持し続けたり、道中で発見した重要な情報を思い出させるために使われます。

プロットに、ジャーナル内でプロットタイトルとして表示される名前を「Name」プロパティからつけましょう。ここでは、「Clear the hut」とします。
このプロットの過程では、三つの意味のあるランドマーク(目印)があります。
プレイヤーがこのプロットを受けた時、プレイヤーがすべてのモンスターを倒したとき、プレイヤーがQuestGiverに報酬をもらいに報告に戻ったときです。
なので、三つのフラグを作りましょう。

  • QUEST_ACCEPTED
  • MONSTERS_SLAIN
  • REWARD_RECEIVED

プロットエディター上で、右クリックから「Insert」→「Main Flag」を選択して作成するか、ツールバー、もしくはメニューバーから作成できます。


各プロットのフラグを設定するとき、フラグの「Journal Text」を置き換えましょう。

プロットフラグを設定する簡単な方法は、会話中にすることです。プレイヤーがクエストを受けた時、「QUEST_ACCEPTED」を設定したいので、
プレイヤーがクエストを受けるラインを選択して、「Plots and Scripting」のタブをクリックします。
「Action」の区画の中で、Plotの「...」からclear_the_hut_plotを選択します。それから、FlagにQUEST_ACCEPTEDを選択します。

これで、会話がそのラインにきたとき、clear_the_hutのQUEST_ACCEPTEDはTureに設定されます。
また、ジャーナルテキストを表示するためにプレイヤーのジャーナルが更新されます。それから、ラインのアイコンが「A」に変わっています。
これは、会話のラインが関連したActionをもっていることを示しています。

一度クエストを受ければ、Quest Giverが二度目のオファーをするのは無駄です。
もし、プレイヤーがクエストを一部完了せずに、再び受けてしまうと、そのクエストが破綻してしまい予期せぬエラーがゲームに入り込んでしまうでしょう。

なので、会話の最初のラインに戻り、「Condition」の「Plots and Scripting」タブから、以下のように設定しましょう。


これは、「この会話のラインはクエストをまだ受けていないときだけ現れる」、ということを意味しています。
先ほどと同様アイコンが「C」に変わり、Conditionに情報が付属していることを示しています。
他のすべての会話のラインがこのラインに属しているので、クエストは一度しか受けることができません。

しかし、これではクエスト終了後やクエストの途中での会話ができないので、Rootから違うラインを作成し、「Have you slain the monsters yet?」といれます。
Conditionは、またプレイヤー側のラインにも設定できます。この場合、プレイヤーのみQuest Giverにクエストが完了したか教えることができます。
後で、スクリプトを使って、MONSTERS_SLAINのフラグをどのようにしてセットするかを示します。しかし、今はどのようにしてセットするかは重要ではありません。
会話での設定をして、あとで実装しましょう。

「Yes, I have」のラインのConditionから、MONSTERS_SLAINがTrueになっているかどうかを設定します。
続くQuest Giverからの返答でREWARD_RECIEVEDをTrueにします。

プレイヤーが何度も報酬を受け取らないように、「Have you slain the monters yet?」のラインでConditionからREWARD_RECEIVEDがFalseかどうか確認するようにしましょう。
最後にRootからクエスト完了後の会話ラインを足して、もう何もないことを伝えるようにしましょう。


単純なステージ(Simple Stage)


ここまでに、このチュートリアルに目を通したら、会話の仕組みについてすべて理解できるようになるでしょう。
ですが、私たちの作成したNPCの動作についてはまったく望ましいものではありません。静止し、沈黙したままプレイヤーの方を見て単につっ立っているだけです。
カメラアングルにもどこか面白みがありません。そこで、会話に「Stage」を加えることで改善してみましょう。

Stageは、会話中の話し手や聞き手の配置やさまざまなカメラ位置の設定です。
新しいStageのリソースを作り、「hut_exterior_quest_giver」のような感じで意味のある名前にしましょう。空の何もないstageが表示されます。
ステージエディターは、デフォルトでは四つのビューを持っています。もし設定を変えたければ、ToolメニューからOptionの「View Point」から変更できます。

Stageは複雑ですが、今の場合はまだ簡単です。Stage画面内で右クリックから「Insert」→「Place」として、placeオブジェクトを2つ作ります。
二人の人形が出てくるでしょう。これらの人形は、会話に参加するメンバーを意味しています。(プレイヤーとQuest Giverです。)
片方の人形を回転させて、それなりに近くに寄せましょう。

それから、会話で使われるカメラも入れましょう。右クリックから同じように「Camera」を選択します。
カメラの位置決めをして、一方の後ろからもう一方の方を見るようにして、標準的な肩越しの視点にします。
4つのビューのうち、一つのタブを右クリックし、「Camera(s)」から、「camera1」を選択し、カメラビューとすれば、カメラの調整をしやすくなるでしょう。
また「Safe Frame」も選択できます。これは、ゲーム内で見える範囲の境界線を表示します。


各Placeごとにデフォルトのカメラを定義したいでしょう。
これは、この場所で立っているクリーチャーがゲーム中に会話しているのを眺めるときに使われるカメラです。
Placeを選択し、「Defoault Camera」に、camera1を選択します。

もししたければ、追加でカメラを設置することもできます。会話エディターでは、どのカメラをアクティブにするかを選択することができます。
そして、会話のラインの途中でカメラを切り替えたりすることもできます。しかし、私たちにはまだできませんので、現在は単純なStageとなるようにしましょう。
先のチュートリアルでは、より深くStageについてカバーするつもりです。

一度Stageが作成したら、それをエリア内の会話が発生する場所に設置しなければなりません。エリアエディターで、hut_exteriorを開いて、Quest Giverの場所へ行きましょう。
リソースパレットからStageを探し、エリア内に設置します。そうすると人形をカメラがでてくるでしょう。また、ウェイポイントのような赤い旗も出てくると思います。
この目印は、Stageの中央を示していて、エリア内にたくさんStageがある際に区別するのに便利です。
Quest Giverが立っている大体の場所にStageの位置を調整します。正確な場所でなくて良いのですが、すごくずれていると会話の開始時にすこし食い違っているような気がするかもしれません。

Stageが設置されたので、それを使うための会話の設定をしましょう。会話エディターに戻って、Rootノードから「Cinematics」を選択すると、Stageを選択するオプションが
あるでしょう。一度もStageを選択したことがないとドロップダウンリストにないので、「...」からStageのリソースを選択してやります。

Stageが選択されると、二つのPlaceが下のリストに表示されます。この会話では、二人の関係者に割り当てたいので、OWNERとPLAYERとします。


ジェスチャー(Gestures)


会話のRootノードを選択し、「Generate Gestures for Children」をクリックします。(ツールバーか、右クリック、もしくはメニューから)

これは、下位の会話ノード全てに自動的にいくつか対話に適切なしぐさ(Gesture)をランダムに生成し割り当てます。これらのしぐさは、カスタマイズや調整ができますが、
それについては他のチュートリアルになります。

さぁ、最後にクリーチャーたちをもう少し表情豊かにしてみましょう。

Voice-overとFaceFX(Voice-over and FaceFX)


DragonAgeでの会話のすべてのラインには、声が録音されています。それはやる気がなくなる作業に思うでしょう。
一時的な処置として、ゲーム開発中に替わりに基本的なスピーチ合成プログラムをつかって代わりのものを生成することができます。
「Tool」メニューから、「Generate VO」を選択して各ラインに合成音声を加えていきます。

合成音声はとても基本的なものですが、会話のテストをしたり声の録音をせずに他の調整をすることができます。
また、FaceFXを使うことで、顔の表情を生成することもできます。

表情の動きでもっともはっきりとしている要素は、音声と口の同期です。FaceFXは、会話のラインの「実際の音声」から唇の動きを生成します。(会話のテキストからではありません)
そのため、FaceFXを使用する前に音声が必要になります。またFaceFXは、RoboBradと呼ばれる拡張を使って表現から感情的なしぐさも加えます。
各会話のラインでの「Cinematics」タブの「Emotion」フィールドから感情を選択して追加することができます。

一度表情の演技を生成したら、ツールメニューの「Edit FaceFX」を選択して調整することができます。
これは、選択した会話のラインをFaceFXで開きます。このチュートリアルではやりません。詳しくはFaceFXで。

自分で音声をwavファイルとして録音するための方法が必要になるでしょう。(Windowsには基本的な録音プログラムがありますが、より洗練されたものがフリーで使用できます)
wavファイルは、「PCM 24 khz 16 bit mono」の形式に変換して録音されなければなりません。そうしなければ、途中で失敗してエラーメッセージが表示されることになるでしょう。

音声ファイルは、「(インストールパス)\Dragon Age\addins\(モジュールID)]\module\override\toolsetexport\[ラインID]_m.wav」に格納しなければなりません。
toolsetのexportフォルダの下のどこかに置けば見つけてくれるのですが、たぶん会話ごとにフォルダをつくって整頓したいでしょう。

wavファイルのファイル名は、「(ラインID)_m.wav」としなければなりません。「(ラインID)」を会話のラインのIDに置き換えます。
例えば、会話のラインのIDが、「344169」なら、「344169_m.wav」とします。

「generate vo」を、toolsetから選択したとき、toolsetは、初めに適切な名前のファイルがあるかどうかその上のフォルダをチェックします。
wavファイルが存在しなければrobo voが作成し、存在すれば使われます。

作業後に音声の生成がうまくいっているかどうか確かめる方法は、「(インストールパス)\Dragon Age\addins\(モジュール名)\core\override\toolsetexport\(会話名).fsb」に行って
ウィンドウズメディアプレイヤーで再生することです。


最終更新:2010年01月21日 19:43