忍者ブログ

方向音痴のSkyrim

PCゲーム「Skyrim」の雑多なCKいじり日記

セリフ用Questの作成【セリフの管理】

自作フォロワーや、本来ならフォロワーにならないボイスタイプのNPCをフォロワー化した場合、それ用のModを導入しない限り、雇用中の彼らは非常に物静か。話しかけてもデフォルトの「うん?」とか「何か用か?」程度しか答えてくれません。
セリフが設定されていないから仕方ないのですが、できればそれぞれのNPCにあった応答を用意してあげたいものです。

フォロワーの台詞に限らずNPC達のセリフはすべて、Questオブジェクトで管理されています。
全てのセリフ(Topic Info または Info)は各々のTopicに登録されています。Topicは用途や話題ごとに同種のセリフをまとめる役目を持っています。

セリフにはだいたい以下の2種類があります。

1.特定のタイミングで再生されるセリフ ※タイミングの種類ごとにTopicで管理
話せばそれでおしまいな一言セリフです。あらかじめ決められたタイミングのTopicを選んで、そこに一言セリフを登録していく形になります。
「Topicが選ばれる」→「Topicに登録されたセリフ(Info)を上から順に条件判定」→「最初に条件のあったものを再生」という理解で扱えば分かりやすいかと思われます。実際の処理はもっと複雑で効率的な方法がとられているそうです。

Misc
非戦闘時のセリフ全般。近づいたときや話しかけたときに言う「Hello Topic」、会話が終わったときに言う「Goodbye Topic」、独り言や暇なときに言う「Idle Topic」、その他隠密状態のプレイヤーを見つけたときのセリフ、死体を見つけたときのセリフなど。

Combat
戦闘中のセリフ全般。挑発の「Taunt Topic」、攻撃の掛け声「Attack Topic」「Bash Topic」、防御時の「Block Topic」、その他降参のセリフ、(プレイヤーの)降参を受け入れるセリフ、断末魔など。一部犯罪関連で、戦闘突入直前に使ってそうなセリフもあります。

Detection
何かを見つけた時、敵を探している時見失った時のセリフ全般。非戦闘時、戦闘時の中間の状態に当たるようです。索敵中の「AlertIdle Topic」、警戒を解く直前の「LostIdle Topic」、敵に気づいたときの「NormalToAlert Topic」など他にも状況によって多数の項目に分類されています。

Favors
主にフォロワーに「手伝ってもらおうかな」と頼んだときの応答。指示に対する同意の「Agree Topic」、拒否の「Refuse Topic」、指示を終了するときの「ExitFavorState Topic」など。

2.特定の話題に関するセリフ ※任意の話題ごとにTopicで管理
Player Dialogue
上記の一言セリフとは扱いが異なります。プレイヤー用の選択肢つきセリフを主に扱い、会話を作成できるほか、任意のタイミング(ScriptやAI Package経由で呼び出す)で言わせたいセリフを設定するのにも使います。
Player Dialogueの構造を図示したのが「Dialogue Views」になります。既存の会話を参照する際、全てのPlayer DialogueがDialogue Viewsに図示されているとは限らないので注意が必要です。
会話の流れ等を把握しやすいため、会話を自作するときはDialogue View内にて作成することが多いかと思います。

一塊の話題はDialogue Branchで管理され、下位に具体的な会話内容であるTopicが1個以上存在します。Branchは用途によって「Normal(青)」「Top-Level(オレンジ)」「Blocking(萌黄)」の3種類あります。背景色で種類を見分けられます。
Topicはプレイヤーの選択肢1個分をそれぞれ担当し(選択肢を表示しないこともできる)、下位に選択肢に対する受け答えのセリフ、Infoを1個以上持っています。たとえば話しかけたとき3つの選択肢が出てきたら、その時点での会話は3つのTopicで構成されているということになります。Topic同士は会話の流れに従って、同BranchのTopicや他のBranchのTopicとリンクしています。
また選択肢の有無にかかわらず、シナリオ上の重要な会話などもここで管理することが多いです。

他には「Scene」で使われる台詞などがあります。

また、CK wikiのチュートリアル「Advanced Dialogue」にて、会話やセリフに関する設定が簡潔にまとめられています。


Info、Topic、Branchについて確認したところで、実例を見ていきましょう。

最初に、比較的簡単に扱える「特定のタイミングで再生されるセリフ」についてみていきます。
ゲーム中の基本的なセリフをつかさどっているのは、こちらの「DialogueGeneric」というQuestです。


下欄の「Quest Dialogue Conditions」にあるとおり、このQuestがつかさどるのは死霊術や召喚魔法などで操られていない一般的なボイスタイプ用のセリフです。



たとえば戦闘中のセリフ。「Combat」を見るとずらっと聞きなれたセリフが並んでいます。
ノルドボイス専用のセリフや、敵がウェアウルフのときに言うセリフなど、声や種族に応じたセリフが登録されています。
プレイヤーの声もここで設定されています。プレイヤーの声は一般的なボイスタイプが割り当てられています。ゲーム中しゃべることがないのでどんな声か分かりにくいのですが、戦闘時の掛け声、ダメージを受けた声、弓を引く時の声、息継ぎなどなどがあります。

「DialogueGeneric」のPriorityは「0」。そのため、これよりPriorityの高い他Questで設定されているセリフの再生条件がすべてFalseになると、このQuestに登録されたセリフを言うようになります。
たとえばホワイトランでナゼームにしつこく何度も話しかけると、彼らしい嫌味なセリフが尽きて「MaleCondescending」の一般的なセリフ、「はいはい、忙しいんだが」や「話せ」くらいしか言わなくなってしまいます。この一般的なセリフが「DialogueGeneric」に登録されているものです。


ではナゼームをナゼームたらしめているセリフはどこにあるかというとこちら。


「DialogueWhiterun」というPriority「30」のQuestです。「DialogueGeneric」よりPriorityが高いので、条件さえ整っていればこちらのセリフが優先的に選ばれます。



ホワイトランに住む全ての人の台詞がここで管理されています。衛兵の一般的なセリフは別Questにまとめられていますが、ホワイトラン地方の各ロケーションに関するご当地ネタはこのQuestにセリフがあります。各NPCに個性与えているQuestです。
ほとんどのセリフには「Hours until reset」というセリフがリセットされる時間が設定されています。「Flags」という列のほとんどに"O(0.50)"というのがありますが、これはそのセリフを言ったら30分(0.5時間)経つまで同じセリフを繰り返さないという意味です。
ナゼームは固有のセリフを3つ持っており、それぞれ30分がリセット時間になっています。そのため30分以内に3回話しかけると有効なセリフがなくなり、より低いPriorityのQuestから条件に合うセリフが選び出されます。結果、「DialogueGeneric」に登録されたセリフを再生します。「DialogueGeneric」に登録されたHelloのセリフは「Hours until reset」がゼロに設定されているので、何度でも同じセリフを繰り返せるようになっています。実際には各ボイス3つくらいの汎用セリフをランダムにまわしています。

エオルンド・グレイ・メーンには「Hours until reset」がゼロ、RandomとRandom Endにチェックの入った「どうしてまだこっちを見ている」というセリフがあります。Random Endは他のRandomなセリフを全て言い終わった後に言う設定ですが、彼のセリフには他にRandomなものはないので、このセリフが出たら打ち止めです。これ以降彼に話しかけても「DialogueGeneric」の「Hello」のセリフすら再生されず、リセット時間が過ぎて他の会話が再び可能になるまで、無言でダイアログを出すだけになります。話すのが苦手な彼らしいです。


余談ですが「DialogueWhiterun」は住人のセリフだけでなく、町での役割なども管理しています。

「Quest Alias」タブを覗くとこんな感じ。
現在の首長のほか、各店の主人、主人が死んだら後を引き継ぐNPC、そのほか何らかの理由でAliasが適用されているNPCなど、町が町として機能する管理も行われています。
他の町や村の「Dialogue~」というQuestも、同様のつくりになっています。
セリフを含め、NPCに個性を与えるためのQuestは優先度「30」あたりに設定するのがいいというのが分かります。

他にもDialogue系のQuestはたくさんあります。プレイヤーとの友好関係に関する「DialogueRelationshipGeneric(Priority:40)」、一般フォロワー雇用時セリフなどの「DialogueFavorGeneric(Priority: 0)」、傭兵専用「HirelingQuest(Priority: 40)」、ユニークボイス専用「DialogueGenericUniqueVoices(Priority: 0)」、シャウト音声用「VoicePowers(Priority: 5)」。ドラウグルなどの敵専用セリフQuestもあります。

召喚魔法で操られているNPCの台詞はPriority「5」の「DialogueGenericCommanded」で管理されています。


「Quest Dialogue Conditions」を見ると、一般的なNPCのボイスタイプのみに適用されるQuestなのが分かります。「IsCommandedActor==1」にもなっているので、バニラであれば死霊術で操られているNPCに限定されるでしょう。

このように、NPCのセリフは各QuestでそれぞれのPriorityによって階層的に管理されています。
「Hello」や「Idle」など特定のタイミングで再生されるセリフについては、だいたい以下のようになります。
 
セリフは現在稼働中のQuestからのみピックアップされ、各セリフの設定にもよりますがPriorityの高いQuestのセリフから優先的にConditionが判定されます。
上の例を「Hello」のセリフだとすると、Benduに話しかけたら、最初は必ず「B1」を言います。次に話しかけると、「B2」~「G2」まで全部ランダムの設定があるので、これらをランダムに返します。ランダムでもPriorityの高いセリフが先に話されることが多いです。
リセット時間が設定されているセリフを全て言い終わったら「G1」か「G2」をランダムに繰り返すだけになります。
一方、もし「W2」にRandomEndのチェックが入って「Hours until reset」もゼロだったなら、下位の「G1」「G2」は再生されなくなります。

QuestのPriorityはセリフの優先順位に直結するので、自作のセリフ用QuestのPriorityを設定する際は意識的に最適な値を探す必要があります。セリフの用途に応じて、Priorityの異なる複数のセリフ用Questを用意することもあるでしょう。
既存のボイスタイプでセリフを考える時は特に、「DialogueGeneric」などバニラのセリフ用QuestのPriorityを考慮しなければなりません。ちらっと先述しましたが、Priority「30」辺りにしておけばバニラNPCと同等のセリフ構造になります。



あらかた把握できたところで、改めてフォロワーとして雇用中のNPCのおしゃべりを確認してみます。


雇用中のNPCのセリフはPriority「50」の「DialogueFollower」にあります。ちなみに闇の一党、セラーナ、テルドリン・セロは他の専用Questがあり、そちらで雇用中の主な台詞が管理されています。
Idle時のセリフを見てみると、エランドゥル、ムジョル、傭兵達が群を抜いて固有セリフが多いです。「DialogueFollower」のIdleのセリフについているScriptは、1時間に一人だけ話させるためだけのものなので必須ではありません。
この「DialogueFollower」がカバーしていないボイスタイプのフォロワーや一部のカスタムフォロワーは、セリフが存在しないために雇用中のフォロワーらしいおしゃべりが一切できないことになっています。

ということで、任意のNPCもしくはボイスタイプにセリフを追加してみましょう。
一言セリフについては「DialogueFollower」に直接セリフを登録する必要はありません。彼らにセリフを設定するには、Priority「51」のセリフ用Questを自作し、「CurrentFollowerFaction」に加入していることを条件としたInfoを設定してやればよいことになります(Priority50でもいいですが、Modなので確実に優先実行できるPriority51の方が扱いやすいです)。


次へ
PR

コメント

1. 台詞付きフォロワー

【セリフの管理】についての記事を拝読させていただきました!!

勿論、物静かな雰囲気のフォロワーは、大好きです。無言の威厳…何事にも動じない精神を感じさせる所がありますよね(´∀`)
でも、おしゃべり好きな雰囲気のキャラは、もっと好きです!自作のフォロワーは、少し無口すぎるので…UNIさんの『台詞関連の製作』の新しい取り組みには、個人的にものすごく興味があります!!

今までの私の製作では、“バニラ既存の基本構造を真似た台詞の追加”しか行えませんでした。それというのも…「台詞の設定項目」にかなり不明な点が多すぎるため、CKwikiの内容を読んでも…分からなかったからです。UNIさんがまとめてくださった記事を読み進めていけば、私でも一から新しい台詞を設定できそうで、嬉しくなりました(^^)

>「Hours until reset」というセリフがリセットされる時間が設定されています。
以前から、「台詞を言うタイミングや頻度は、どこで決定されているのか?」が、非常に気になっていました。最初に近づいたり話しかけたりした時には、まだ語れる台詞を持っているようですが、NPCも徐々に話すネタが無くなって行くらしく…一度言ったことは、しばらく話してくれなくなったりする現象を、不思議に思っていました。自分は結構、NPCに積極的に話しかけて反応を見たり、その人の台詞の一言一言をじっくり“読み飛ばさずに聞きたい派”なので、「ぐだぐだと一日中話してるのにも飽きたよ」と、ファルカスにたしなめられることも、しばしばです。

>Priorityの高いQuestのセリフから優先的にConditionが判定されます。
アシスの部下として、新規のフォロワー2名を追加した際に、個性付けのために“自作の台詞”の追加をしましたが、「台詞同士の優先度」や「Questとの相互関係」については、あまり理解せずに作成していました。Questに関することは、ずっと未知の領域だったので、ブレイズとの“掛け持ちAI”を考え始めてから、ようやく最近になって…意識が回るようになってきた感じです。『台詞の参照順チャート』がとても見やすく、理解の助けとなりました!! 記事を参考にさせていただきながら、フォロワーの台詞の方も見直しを図り、細かな調整をしていこうと思っております。

>【特定の話題に関するセリフ】
“シンディング”にも、「狩りに行って来い。」などの、セラーナさんのような…特徴的な「会話の選択肢」が設定されていましたね!! 「PlayerDialogue」は、実はまだ製作に使用したことが無いので、いつか試してみたい項目です。結構どの対話を見ても、「PapyrusFragment」が必ずと言っていいほど多用されているというイメージがあり…やや敬遠しがちでした(汗)

>ナゼームをナゼームたらしめているセリフ
「DialogueWhiterun」をはじめとする、“各ホールドのDialogue用Quest”は…Actorの台詞設定に欠かせないQuestなのですね。あれがストップしてしまうと、「雲地区には頻繁に行くのか…?」などを言わずに、ナゼームが「話せ。」などとしか言わない、無個性な人物になってしまうとは…。「DialogueGeneric」など、個別のActorというより「VoiceType」に共通する台詞は、Actorの「UseInfo」には示されていない部分に設定の源があるようなので、その他の“特徴的な台詞を管理しているQuestの捜索”と“自作した台詞の優先度を決める作業”が、大変そうな印象です。私はいつも最終的に、“脳筋的解決方法”に頼ってしまうので…UNIさんがもしコツを発見されたら、是非教えていただきたいです。

台詞の音声ファイルはNifファイル等に比べると、そんなに容量が重くなさそうなので、手間を惜しまなければ…たくさん追加しても、大丈夫そうですよね! UNIさんの「フォロワー関連」のModに、オリジナルな音声が追加されたらと思うと、今からとても楽しみです!!

追伸
自分の製作で行った台詞の設定と直面している問題、その他にプレイ中に見かけた疑問がいくつかあります。

・QuestSceneの会話
リフテン滞在時に、気になったのですが…ヘルガの宿屋では、「誰かと誰かの会話のシーン」が豊富に設定されているはずなのに、次から次へと会話が再生される時もあれば、誰も一言もしゃべらなくなって、「ムシャムシャ…」と食事を摂っている音だけが、響いているだけなどということもあり…その理由を知りたいです。やはり、何かのQuestの優先度に会話が上書きされてしまっているのでしょうか…。
それから…すごく長い事、同胞団でプレイしているのですが…CKで見ると『ブリルとヴィグナー』にも会話シーンが用意されているのに、二人が話している姿を一度も見かけたことが無い…という謎があります。“鉄の心臓ゲーム”とは、一体??

・シャウトの掛け声
自作したシャウトの発動時に、「シャアッー!!」みたいな、新規の「叫び声」を登録してみました。音声の再生は上手くいきますが…何故か“字幕だけがずっと残り続ける問題”があります。UNIさんの「Procedure:【Shout】」の記事と、「台詞関係」の記事を読みながら、原因について探ってみようと思いますが…。もしも、同じような問題にお気づきの際は、是非教えていただきたいです!! Actorに話しかければ、新しい会話と音声によって、残っていた字幕は消えますが…なんとなく歯切れが悪い感じです(^_^;)

Re:台詞付きフォロワー

ファル粕さん、記事読んでくださってありがとうございます!
セリフはまともに考え出すと、「ん?」と分からなくなることが結構多かったので今回自分なりにまとめてみることにしました。
しかし先ほどCK wikiのチュートリアルを読み直していたら、自分の知りたかったことが簡単にまとめて書いてあって、大反省中です(>_<;) wikiのクエストを作るチュートリアルは、CKを初めて触る人用かと思っていたんですが、実際にはある程度詳しくなってはじめて腑に落ちるような情報も盛り沢山という素晴らしいものです。最初にやった時はチュートリアルの手順を追うだけで精一杯だったので、記憶に残ってなかったみたいです……。
CK wikiのチュートリアルページを紹介させていただきつつ、せっかくなので記事の続き自体も書いてみようと思います。次は「Player Dialogue」ですね。

デフォルトのNPC達は、ベースとなる無個性なセリフ集である「DialogueGeneric」の上に個性を追加する個人別セリフ集「Dialogue(自分の町や所属の名前)」の二つが常時適用されているようです。クエストに出演している時はその時だけクエスト専用のセリフを言うことはありますが、基本は「Dialogue(自分の町や所属の名前)」のみを考慮に入れて自作セリフを用意する、というだけでも大丈夫そうに思えます。

>CKで見ると『ブリルとヴィグナー』にも会話シーンが用意されているのに、
用意されていますが、設定が足りなくてSceneが開始しない状態になっているようです。ホワイトランには同じ理由で開始しないNPC同士の会話が結構いっぱいありました(^^; 単なる設定ミスっぽかったり、土壇場でNPCやストーリーの設定が変わってSceneの会話がそぐわなくなったのかなというのもあったり。「音声があるのにもったいない」感がいっぱいです。この辺りを修正して会話を復活させてくれるModも結構あるようですよ。
Sceneの設定画面で上の方に「Begin on quest start」と「Stop quest on end」のチェック欄があるので、両方にチェックを入れます。ゲームをロードしたら、そのSceneが設定されているQuestをコンソールから「StopQuest」でストップしてください(恐らくこれまでのプレイでSceneが設定されたクエストが無意味にRunningの状態になっていると思われるので)。全部で3つくらいあったかと思います
ヴィグナーとブリルがジョルバスクルにいる時に待っていれば、そのうちクエストが始まってそれと同時にSceneが再生され、二人が話し出します。気難しいご隠居とそのお付の遠慮ない会話が楽しいです。
NPC同士の会話用Sceneも連載の最後辺りで作ろうと考えています。

>字幕だけがずっと残り続ける問題
音声を自作したことがないのでよく分からないのですが、バニラのセリフでも時々戦闘中のセリフ字幕が残り続けることはありますね。ソルスセイムで寝た直後に発生する石柱での強制労働時も、ミラークのセリフの字幕が出ている時にプレイヤーがアニメーションを抜けると、かなりの確率で字幕が残ります。プレイ環境によるのかもしれませんが、いずれの字幕もいったんゲームをロードし直さないと消えてくれません;

Author

UNI
Skyrimで遊ぶのも、CKで改造するのも好きなファンタジー好きです。
戦闘苦手で難易度は基本EASY、慣れてもNORMAL程度。 アンデッド恐怖症なので、ノルド遺跡探索が辛い……。

ブログ内検索

最新コメント

[11/12 fighf]
[11/11 AllicebeLype]
[11/11 コング]
[11/10 chomechome-X]
[11/05 UNPおじさん]