2012/09/30

シャウトの作り方

新しいシャウトを作ってみました。
ちゃんとドラゴンフォントで表示されて嬉しい♪
やっぱり、シャウトのメニュー画面のドラゴン語って、あらかじめ作られていた画像とかでなく、fontconfig.txtで指定してあるDragon_scriptのフォントで表示されるんですね。

ヘイムスカーを問答無用で黙らせるシャウト「Da・Ma・Re☆」

フスロダをベースにした吹き飛ばし系のシャウトに、
ヘイムスカーの演説シーンをストップするスクリプトを仕込んでいます。


そんなに難しい手順でもないのですが、忘れないうちに新規シャウトの作り方を書いておこうと思います。

まず、「シャウト」というのは、ゲーム中でも「魔法」の選択画面で見ることができるように、CK上でも魔法の一種として扱われています。
シャウトというのは、「魔法」が3つ、「シャウト」というテンプレートに登録されて、一種の「魔法セット」になっている状態……みたいなものです。
そのセットの状態を編集するのが、オブジェクトウィンドウの「Magic/Shout」内にあるShoutオブジェクトです。
Object Windowの「Magic > Shout」
Shoutの編集画面

それでは、新規で「Shout」を作って、中身を設定してみましょう。
まず、このShoutオブジェクトの「ID」を決めます。
「Name」の欄にはこのシャウトの名前……これはゲーム中で表示されるシャウト名になります。メニュー画面を始め、習得する時にも、お気に入りの枠の中でも表示されます。
「Menu Display Object」はメニュー画面で表示されるこのシャウトの見た目(プレビュー)です。これは既存のシャウトや魔法などを参考にして選ぶといいんじゃないかと思います。
また、右下の「Description」は、メニュー画面で表示される、シャウトの説明です。

ここまでの設定項目を見ても分かるように、「Shout」というのは、メニュー画面で見ることのできるシャウトの概要や枠組みを決めているオブジェクトなんですね。
実際に、そのシャウトがどんなを効果を発するか…という詳細については、別のオブジェクトの設定画面の中で調整していくことになります。

Shoutの編集画面では、3つの「ワード」を登録する欄があります。
もちろん、Word1が第一段階、Word2が第二段階、Word3が第三段階のシャウトです。
それぞれ、「Word」と「Spell」、そして「Recovery Time」という設定項目があります。
「Recovery Time」というのは、予想がつくかと思いますが、シャウトを使った時、次に使えるようになるまでの再充填にかかる時間です。

「Word」というのは、シャウトを構成する各単語(ワード)の情報です。
これはObject Windowの「Magic/Word of Power」で登録・編集することのできる、WordOfPowerオブジェクトを選択することで指定します。

Object Windowの「Magic > Word of Power」
Word of Powerの編集画面

ごらんの通り、「Word of Power」は、シャウトを構成するワードのID名と表示名を登録してあるだけの小さなオブジェクトです。
それでは新規のシャウト用に、新たなWordOfPowerを3つ作りましょう。
まずは他のオブジェクトのIDとかぶらないID名をつけます。
次に「Name」の欄ですが、こちらに入力された文字がシャウトのメニュー画面のドラゴン語で表示される部分になりますので、短いアルファベットじゃないと、フォントの関係上うまく枠内に表示されないと思われます。
「Translation」はその下に表示される翻訳名です。こちらは日本語でOK。
これらの設定が済んだら、Shoutの設定画面に戻って、新規で作ったWordOfPowerを、各段階のWord欄で指定してやります。


次に「Spell」の指定ですが、これはシャウトを発した時に何が起こるか……対象にダメージを与えたり、吹っ飛んだり、といった内容を決める箇所で、これはObject Windowの「Magic/Spell」で編集・登録できる、Spellオブジェクトを選択することで指定します。

Object Windowの「Magic > Spell」
Spellの設定画面

こちらは新規でSpellを作ってもよいし、既存のSpellを再利用するのでも構いません。
ただし、Spellの編集画面で設定するTypeの項目を「声の力」にしてあるものでないと、Shout編集画面でのSpellの候補には出てきませんので要注意です。

ちなみに「Spell」というのは、いわゆる魔法です。
このオブジェクトも、Shoutと一緒で、"Spell"というテンプレの枠組みに、魔法効果のオブジェクトなどを詰め込んで、各種セッティングをしているオブジェクトなんですね。
スペルを構成する効果の内容の詳細については、「Magic Effect」というオブジェクトの設定画面で、別途作成することになります。
なんでこんな回りくどい方法で設定するのか……シャウト、というオブジェクトの設定画面で最初から一気に全部設定できるようにしてくれればいいじゃないか、と思うかもしれませんが、こういう回りくどいやり方でオブジェクトを構成していった方が、パーツの再利用ができるので、便利だし効率的なんですよね。
最初は、どのオブジェクトがどのオブジェクトに繋がって設定されているのか、把握するのが大変ですが、オブジェクトを右クリックして出てくる「Use Info」というメニューの情報を頼りにリンクの糸を辿ってゆくと、相互関係が掴めることが多いです。

「Spell」の設定についてや、その効果の内容を決める「Magic Effect」の設定の仕方については、おばちゃんは今のところ、既存のオブジェクトを再利用してるだけで、解説できるほど各種項目を詳しく理解していないので、申し訳ありませんが省略させていただきます。
ちなみに、ヘイムスカー氏の演説を止めるためのスクリプトは、汎用ダメージ効果の「UnspecifiedDamageFFAimed」というMagic Effectを複製して作成した物に追加しています。
(このMagic Effectを、新規シャウトで使うSpellのEffectに組み込んでいるわけです)

Object Windowの「Magic > Magic Effect」
Magic Effectの設定画面

Magic Effectには、右下のPapyrus Scripts欄でスクリプトを追加できます。

Shoutを構成する各WordのSpellの設定が済めば、この段階で新規シャウトとしてゲーム中で使うことができるようになってはいますが、せっかくなのでシャウトを叫ぶ時に再生されるボイスもちゃんと設定しましょう。
シャウトを使用した時に発するボイスの設定は、Questオブジェクトで別途設定します。
ちなみにデフォルトの各シャウトのボイスは、「VoicePowers」というクエストの中で設定されています。
Object Windowの「Character > Quest」
「VoicePowers」QuestのCombatタブ画面


この「VoicePowers」クエストでは、プレイヤーのボイスだけでなく、ドラウグルやソブンガルデの英雄さん達など、シャウトを使うキャラすべてのボイスを統括して設定しています。
このクエストに、新たに作ったシャウトのボイスを追加登録しても良いのですが、デフォルトのオブジェクトを弄るのはできるだけ避けたいので(※デフォルトのオブジェクトは他のModが参照するかもしれないので、できるだけ変更しない方が無難です)、新規でクエストを作ってボイスを追加しましょう。

新規クエストは「VoicePowers」クエストにならって、Priority(優先度)は"5"、「Start Game Enabled」にチェックを入れた状態で作成します。
クエストの作成なんて、難しそう…と思うかもしれませんが、このクエストは4種類のボイスを登録するだけの簡単な設定で済みますので、そんなに気張らなくてもOKです。
あ、ちなみに新規でQuestオブジェクトを作る際は、最初のDataタブでIDやNameなどを設定した後、一度OKを押して設定画面を閉じ、念のためにその段階で一度espを保存してくださいね。Questオブジェクト内の各種データは、一度そうやって確定してやらないと、設定できません。
おそらく、Questで使われるボイス等は、espの名前のフォルダに、クエストのIDに紐づいたファイル名で格納されることになるため、編集中のespとQuestがきちんと決まっていないと編集できないようになっているんでしょうね。

さて、シャウトのボイスの設定ですが、これはQuestの「Combat」タブで設定します。
「Combat」タブというのは、キャラクターが戦闘状態にある時に発するセリフ等を設定する一覧画面です。
例えば攻撃が当たった時の呻きや、パワーアタックする時の気合の入った声、フレンドリーファイヤーを食らった時のセリフ、敵を挑発する時のセリフや、逃げる時の悲鳴、死に際の負け惜しみ(?)のセリフなど、戦闘シーンにおけるありとあらゆる状況下で発するセリフを設定し、管理することができます。

まずはこのCombatタブ画面の「Topics」欄でNew Topicを作成してください。
すると「Select Topic」というウィンドウが出てきます。これはその新規作成するTopicが戦闘時のどんな状況下で発生するか、という起動スイッチの指定です。
この起動スイッチは、シャウトに関連するものとしては4種類あります。

(A)VoicePowerStartShort……シャウト第一段階目のみが発動した時のスタート時
(B)VoicePowerStartLong……シャウトが第二、第三に続く際のスタート時
(C)VoicePowerEndShort……シャウトが第二段階で止まる時の終了時
(D)VoicePowerEndLong……シャウトが第三段階目まで発動する際の終了時

各状況の説明としてはこんな感じなのですが、これじゃわかりにくいので、フスロダこと「揺るぎ無き力」の例で見てみましょう。

「揺るぎ無き力」の場合
(A)VoicePowerStartShort……「ファス!」
(B)VoicePowerStartLong……「ファス…」
(C)VoicePowerEndShort……「ロ!」
(D)VoicePowerEndLong……「ロ… ダ!」

ゲーム中でパワーボタンをちょびっと押して、フスロダの第一段階のみを使用すると、(A)の「ファス!」というボイスのみが再生されます。
第二段階までいくと、(B)+(C)の組み合わせになって「ファス…ロ!」となります。
ボタンを長押ししてきっちり第三段階までいくと、(B)+(D)の組み合わせになって「ファス…ロ…ダ!」になるというわけです。
ようするに、「Start」と「End」の組み合わせでボイス再生のバリエーションが変わるわけです。
そんなわけで、この構成を踏まえたセリフを各Topicに登録していきます。


Topicを作成すると、赤枠の「Subtype」欄に、選択した起動スイッチのタイプが表示されます。
今回はシャウト関連の4種類の起動スイッチについて、それぞれTopicを設定することになりますので、Topic欄には4つのTopicが並ぶことになります。
右側のTopic Text欄は、どうせゲーム中では表示されないテキストなので、大元の「VoicePowers」クエストにならって適当につけてます。
その下の「Info」の欄が、実際にその状況下で発することになるセリフの一覧です。
ここに新しくInfoを追加して、各Topicで発するセリフ&ボイスを設定していきましょう。
ちなみに今回作ったシャウトでは、ウルフリック首長のボイスの中から、「やめろ!」というボイスと「死ね!」というのと、「死ね!このクズ!」というボイスをチョイスして使ってます。
第一段階で「やめろ!」
第二段階で「やめろ!死ね!」
第三段階で「やめろ!死ね!このクズ!」
…とまあ、こんな感じで再生されるように。
聞き苦しいセリフばっかりですが、他に適当なのがなくて……;
どうでもいいですが、戦闘中のウルフリック首長はめちゃくちゃ口が悪いです。
「イヌめ!死ね!」とか「おまえを殺してやる!」とか……あんなに素敵な声で、いかにも名士ですって顔してるのに……キレると人格が豹変するタイプなのかしら。

Topic Infoの設定画面


さて、4種類のシャウト関連の各状況下で登録したTopicのInfoは、そのセリフが発生する時の条件を設定してやらなければなりません。
でないと、シャウトを使う時、すべてのキャラでそのセリフが発生してしまいますので……
その条件設定はTopic Info編集画面の「Conditions」で設定します。
(上記画像の赤枠の部分)
まずは、「新規作成したシャウトを装備している時」という条件を新規追加しましょう。
Condition Functionで「GetEquippedShout」を選び、新規シャウトのIDを選択して条件を「==1」にします。これで新規作成したシャウトを使った時だけ発生するようになりました。
続いて、条件にボイスタイプを指定します。
本当は「プレイヤー」がシャウトを使った時、などという指定にしたいところなのですが、そうするとプレイヤーキャラになりうるすべてのボイスタイプについて、音声ファイルを用意しなくてはならなくなります。
他人に配布するModでしたら、そういった準備も必要でしょうが、今回は個人で楽しむためのものなので、自分のプレイヤーキャラが使用しているボイスタイプだけを指定しちゃいましょう。
おばちゃんのプレイヤーキャラであるウルフリック首長はノルド男で、ボイスタイプは「MaleEvenToned」を使用しています。(もっとも、プレイヤーとして使用するセリフのファイルはウルフリック首長のボイスをリネームして上書きしちゃってますが)
なので、「GetIsVoiceType」で「MaleEvenToned==1」という条件を追加します。
するとEdit Responseの設定画面で、セルフに付随する音声ファイルの格納場所やファイル名が自動的に割り振られます。
Edit Responseの設定画面


ボイスタイプを条件指定したことで、Edit ResponseのAudio枠のVoiceTypeの欄には指定したボイスタイプと、音声ファイルの格納先のパスが表示されるようになります。
クエストで使用される各ボイスファイルの格納先は「Data/Sound/Voice/xxxx.esp/MaleEvenToned」…という風に、「Data/Sound/Voice」の中に、まず、そのModのesp名のフォルダが出来て、さらにその中に各ボイスタイプのフォルダが作られ、自動的に付けられたファイル名(赤枠の部分)で保存されるような仕組みになっています。
これらの音声関連のファイルは、espの名称に基づいたパスやクエストのIDに基づいた名前が、データを呼び出す時の目印になっているため、自分で好きな場所に保存し直したり名前を勝手に変えたりすることはできません。
クエストのボイスを登録した後で、作ったModのespの名前を変えたりすると、ボイスが再生されなくなってしまうので要注意です。

ちなみにAudio枠の下の方にある「Record」ボタンを押すと、PCに接続したマイクを使ってその場でボイスを録音できます。
そして「Save」ファイルを押すと、録音した音声がwavファイル形式の音声データとして保存される…筈なのですが、CKが1.6にバージョンアップしてからというもの、おばちゃんの環境下ではどうもwavファイルの録音機能や再生機能がうまく働きません。
1.5バージョンではちゃんと録音できて、ゲーム内で再生もできていたのですが……
まあ、でもfuzファイルなら再生に問題はありませんので、音声データはfuzファイルに変換したものを使用します。
fuzファイルというのは、音声ファイル(xwm)と口パクの動きであるリップファイル(lip)が一緒になったファイルで、ゲームのデータのbsaファイルを解凍すると、サウンドやボイスのデータはすべてこのfuzという拡張子のファイルになっています。
ですから、既存のNPCのボイスを再利用する際は、特に変換作業は要りません。
(使いたいセリフをチョイスしてデータを探し出すのが面倒なんですが……)
新規シャウトのボイスとして用意したfuzファイルを、赤枠の部分のファイル名にリネームした上で、格納先のボイスタイプのフォルダにきちんと置けば、音声ファイルのセットはこれで完了です。

↑こんな風に4種類のTopic Infoのセリフ(responce)用のボイスデータを所定のフォルダ内に、指定されたファイル名で置けばOK。


それでは実際に作成したシャウトがゲーム上でちゃんと動作するか、テストしましょう。
作成したシャウトをゲーム中で使うには、まずそのシャウトをプレイヤーが習得しなければなりません。
これはコンソールで入手してもいいのですが、ゲーム中でタイプするのは面倒なので、今回は適当な場所にアクティベーター(スイッチみたいなもの)を置いて、そのアクティベーターにシャウトを習得するスクリプトをくっつけようと思います。


この石碑のアクティベーターは、おばちゃんがしょっちゅうお世話になっている、便利なオブジェクトです。Object Windowの「WorldObjects > Activator」のカテゴリの中に、「WETempActivator」というID名で登録されています。
クリックすると、アクティベートするというだけの、何の動きも面白味もない単純なスイッチなんですが、ちょっとしたスクリプトをテストするにはもってこいのアイテムなんです。
今回はそれをブリーズホームの入り口付近に置きました。
(そのままだとデカくて邪魔なのでスケールを0.5にしてます)
そしてこの石碑アクティベータのReferenceに下記のようなスクリプトをくっつけます。
Scriptname obaTestShoutActivator extends ObjectReference
  WordOfPower Property MyWord1 Auto
  WordOfPower Property MyWord2 Auto
  WordOfPower Property MyWord3 Auto

Event OnActivate(ObjectReference akActionRef)
  game.teachWord(MyWord1)
  game.teachWord(MyWord2)
  game.teachWord(MyWord3)
  game.UnlockWord(MyWord1)
  game.UnlockWord(MyWord2)
  game.UnlockWord(MyWord3)
  Debug.MessageBox("シャウトを覚えた")
EndEvent
スクリプトの解説までやってしまうと長くなりすぎるので、詳細については割愛しますが、上記のスクリプトは、石碑がアクティベートされた時に、指定したシャウトのワードをプレイヤーがそれぞれ習得し、同時にアンロックまでされるという内容になっています。
このスクリプトを付けた後、「MyWord1」「MyWord2」「MyWord3」の各プロパティに、新規作成したシャウトのWordOfPowerオブジェクトを指定してやります。
これでテストプレイの準備が整いました。
それでは、作ったModを読み込んでゲームを起動しましょう。


よしよし、ちゃんとアクティベーターは稼動してますね。
さて、新規シャウトを無事に習得したら、ちょいとひとっ走り、ヘイムスカー氏の前まで走っていって、黙れ☆シャウトの試し打ちをしてみましょう。

ちなみに新規作成したシャウトは、フスロダをベースに作成しているので、当てた相手に少なからずダメージが入ってしまいます。
そうなるとデフォルト状態のヘイムスカー氏は敵対状態になってしまい、スクリプトのおかげで演説がストップしたのか、それとも戦闘モードになったからなのか、わからなくなってしまうので、最初にコンソールを使ってフォロワー状態にしておきます。
これで3発までは誤射しても笑って許してくれる状態になりますので、思う存分シャウトをぶつけてやれます。


ちゃんと「やめろ!死ね!このクズ!」という罵声も再生されたし、ヘイムスカー氏の演説も止まって、フォロワーとしてちゃんとプレイヤーに付いてくるようになりました。
タロス像の近くにいると、再び演説シーンのスイッチが入ってしまって、また性懲りも無くスピーチが始まってしまうことがありますが、その時はまた一喝してやればいいです。

ふう……もっと手短にまとめられると思ったんだけど、また長くなってしまいました。
これでもいろんなところを端折ったんですけど、手順の説明って、難しいものですね。

0 件のコメント:

コメントを投稿