| ||
[トップ] >> [オーロラ・ツールセット チュートリアル] >> [カットシーンを演出する]
|
|
ここでいう「カットシーン」とは、通常の冒険中に別の場面の様子が挿入されるシーンの事を指しています。 つまりは「カットイン」「カットアウト」を行うシーンのことです。 カットシーンを利用することで、ゲーム内のキャラクターの知り得ない事柄をプレイヤーに伝えたり、キャラクターが見たり聞いたりしたものをより具体的にプレイヤーに観せ、シナリオの補足や物語に関するプレイヤーの理解を促すことができます。 拡張キット第1弾『シャドウ・オブ・アンドレンタイド』でも、カットシーンは様々な場面に使用され、奪われたアーティファクトと古代都市の謎をめぐる物語を盛り上げています。 |
まず、カットシーンで演出する場面のシチュエーションを決定しましょう。
練習ですので、比較的単純なシチュエーションを用意してみました。 ダンジョン内の部屋の前を主人公が通りかかると、画面がカットシーンに切り替わり、オークたちの会話が始まります。
部屋の中では、オークの隊長が「はやくしろ!」と配下のオークたちを怒鳴り、オークたちの視線の先には囚われの冒険者「ハンス」の姿が…。 窮地に立たされた冒険者「ハンス」の様子を見せ、彼を『見捨てる』か『助ける』のか、そして『助ける』のなら『正面から救出する』のか『別の手を考える』か…など、プレイヤーにいろいろと考えさせるように仕向けるわけです。 様々なプレイヤーたちの柔軟な発想に対応するのは大変ですが、いろいろな仕掛けを事前に用意しておいたり、DMクライアントを使用してDMとしてゲームに参加することで、実現できるでしょう。 今回は、そこまで肩に力を入れず、カットシーンを実現する事だけに注目してモジュールを作成していきましょう。 |
![]() タイルセット「地下墓地」を使って、簡単なダンジョン内の部屋を作成していきましょう。 (※練習ですので、簡単なものを作成しましょう) 部屋の中には、オークたちや焚き火、そして囚われの冒険者「ハンス」を配置しましょう。
(2) 囚われの冒険者「ハンス」を救出した場合のセリフを入力しておきましょう。 「ハンス」を選択した状態で右クリックして[会話]を選択してカンバセーション・エディタを起動し、セリフを入力します。 セリフは、
と、しておきます。 ![]() トリガーを踏まずには通路を通る事ができないように、トリガーの範囲を設定しましょう。 スタート地点とカットシーンのスクリプトを開始させるトリガーを設置します。 ※この段階では、まだトリガーには何も設定しないでおきましょう。 |
|||||||||||
カメラ(視点)がたどる地点にウェイポイントを設置していきます。 このように設置したウェイポイントを透明化したキャラクターに辿らせることで、視点を自由に動かすことができるわけです。 まず始めにカットシーンの開始時のカメラ位置を決め、次にオークたちの周りを回るようにカメラ位置を3箇所、最後にハンスの目の前に止まるカメラ位置としてウェイポイントを設定しましょう。
設置した各ウェイポイントにタグ名を設定しましょう。 カットシーンの始まりを"wp_start"として、以下、"wp_001"、"wp_002"、"wp_003"とし、最後のウェイポイントを"wp_return"とします。 |
ここまででカットシーンのための準備は、ほぼ整いました。 ここからは、いよいよスクリプトを使用してカットシーンを演出していきましょう。 カットシーンが始まるまでの手順は「NWスクリプトで演出するカットシーンの原理」で紹介したように、大雑把に分けると3つあります。
細かい解説は後にして、カットシーンのサンプルスクリプトを以下に示します。 使用されている関数の使い方・仕様については、「関数の解説」、及び スクリプトエディタのヘルプをご覧ください。
|
◆ 8〜12行目 カットシーンで各キャラクターが話すセリフをまとめて設定しておきます。 ※「スクリプト・エディタ」では、仕様上、日本語文字(全角文字)は文字化けを起こしてしまいますが動作に問題ありません。 入力は「メモ帳」などに入力したものをコピー&ペーストしてください。 【ツールセット チュートリアル】9 スクリプトのように別の場所に設定したセリフを話すようにすることもできます。 これについては各自挑戦してみてください。 ◆ 56〜74行目 StartCutscene関数 ここでは、カットシーンを始めるための準備を行います。 つまり、ユーザーインターフェイスを消去し、ナレーションを表示、そして新たな場面に視点(主人公)を移動しても違和感が無いように、画面をフェードアウトし、主人公を透明状態に変更します。 NWスクリプトの注意点として、NWスクリプトは実行した関数の完了を待たずに次の処理に移るため、処理を普通に書き並べるだけではその全てがほぼ同時に開始されてしまう、という点があります。 ある程度時間を置いて次の処理に移りたい場合は、DelayCommand関数を使用し、処理の開始を遅延させます。 この際に指定する時間は、「その処理を行う関数が開始された」時からの秒数であることに注意しましょう。 (「DelayCommand(1.5, ActionDoCommand(FadeToBlack(oPC, FADE_SPEED_FAST)));」の解説) ※全てのDelayCommand関数に5秒を指定した場合、5秒毎に次の処理が開始されるのではなく、5秒後に全ての処理が開始されてしまいます。 5秒毎に処理を開始させる場合は、5秒、10秒、15秒、と指定する秒数を5秒毎増やしていきます。 ◆ 78〜139行目 Cutscene001関数 ここでは、カットシーン内で行う処理を記述します。 まず、カメラ(PC)をカットシーン開始位置に移動させた後、画面をフェードインし表示を回復させ、カットシーン開始の処理を行います。(81〜85行目) 次は、カットシーン内のキャラクターの会話や動作など、カットシーンの中身の記述となります。 今回は『オークたちの会話とその会話を聞いたハンスの嘆きをカメラを移動させながら眺めていく』シーンを作成します。 先程カットシーンの準備を行う際には、DelayCommand関数を使用して、各処理の開始時間をずらしましたが、カットシーン内の処理については CutJumpToLocation関数やCutPlayAnimation関数などの「Cut〜」で始まる名前の関数を使用することにしましょう。 これらの関数は、第2パラメータに指定した時間(秒)経過後、処理を実行します。 「Cut〜」で始まる名前の関数は、第1パラメータにカットシーン番号(nCutsceneNumber)、第2パラメータに遅延時間(fDelay)、第3パラメータに対象オブジェクト(oObject)を指定する点が共通しています。 さらに後に続くパラメータの並び方もほぼ同じ並びになっており、時間の見通しが良いのが特徴です。 「Cut〜」で始まる名前の関数は、スクリプトの先頭にある「#include "x1_inc_cutscene"」の記述を追加することで使用可能となります。 各関数の使い方(仕様)はこちらやスクリプト・エディタのヘルプをご参照ください。 ◆ 143〜159行目 ReturnPlayers関数 ここでは、カットシーンの終了するための記述を行います。 カットシーン開始の準備を行ったときと同じように、まず、画面をフェードアウトします。 あとは、主人公の透明状態を解除、カットシーン終了位置への移動、ユーザーインターフェイスの復元(表示)を行い最後に画面をフェードインして、元の画面に戻します。 |
ちょっとその前に
スクリプトを一通り眺めたところで、さっそくモジュールの実行を行いたいところですが、このままではスクリプトが実行されません。 トリガーのイベントにスクリプトを指定して、スクリプトが実行されるように設定しましょう。 まず、上記のスクリプトを"cut_start_001"という名前で保存します。 次に部屋の前の通路に設置したトリガーのプロパティを開き、「スクリプト」項の「OnEnter」イベントに"cut_start_001"を指定します。 これでトリガー領域に主人公が進入すると"cut_start_001"スクリプトが実行されるように、つまり、カットシーンがはじまるようになります。 モジュールに名前をつけて保存し、一度「オーロラ・ツールセット」を終了しましょう。 それでは、作成したモジュールを実行してみましょう。 『ネヴァーウィンター・ナイツ 日本語版』を起動して、[新規]→[その他のモジュール]と選択していき、作成したモジュールを選択してゲームを開始します。
視点の動きやアニメーションタイミングを思い描いた通り指定するのは、はじめはなかなか難しいですが、それぞれの時間や場所を図示するなどして整理しておくことで、指定や調整が行いやすくなります。 このモジュールはひとまず終了ですが、せっかくですので「ハンス」を救出してみましょう。
オークたちのファクションは「カットシーンの舞台の作成」で主人公を襲わないように設定していますので、そのままでは部屋の中に入っても襲い掛かってきません。 上の「ハンス救出」では、ドアを開けると(破壊すると)、オークたちが主人公に襲い掛かってきていますが、上記のようなことを実現するには、ドアが開けられたとき、またはドアが破壊されたときに、オークたちのファクションを主人公に対して敵対関係に変化させるスクリプトを実行します。 このスクリプトは、当ページ下でダウンロードできるサンプルモジュールに「orcattack」という名前で入っていますので、どのような処理を行うのか興味がある方はご覧ください。 (なお、スクリプトはドアの「OnDeath」イベントと「OnOpen」イベントの際に実行するように指定します) |
今回の「チュートリアル: カットシーンを演出する」で作成したモジュールのサンプルをこちらからダウンロードできます。 かなり駆け足でカットシーンについて紹介してきましたので、イマイチよくわからなかった方もいらっしゃると思います。 そんな方は、こちらからモジュール「カットシーンサンプル」をダウンロードしていただき、オーロラ・ツールセットで実際に確認してみてください。 ※チュートリアルで作成するモジュールは、必ずしもこのページからダウンロードできるサンプルのようになっている必要はありません。 いろいろ試してみて自由にモジュールを作成するための練習に使ってみてください。 |
|
ご注意
|
|
ダウンロード & 使用方法
|
ダウンロード
|
※バージョン1.62で作成したモジュールです
|
|
|