■FF4を作る #3 イベント処理
今回はかなりツクール的な内容です。(前回も…かな^^;)
イベントの配置、スクリプトの設定
RPGでは、NPCと会話する、家の中に入る、宝箱を開けてアイテムを入手するなどのイベントがあります。
・マップエディタでイベント・スクリプトを編集
イベントはフィールド、ダンジョンなどに配置されるため、前回作ったマップエディタに組み込みます。
上の画像は宿屋の中のマップです。
「スクリプト設定」にチェックを入れると、壁や床などの背景ではなく、イベントを配置するモードに切り替わります。赤い枠で表示されたマスはイベントが配置されているマスで、「店員」はキャラクタータイプのイベントです。本来は店員に話しかけますが、店員とプレイヤーの間にカウンターがあるため、この場合はカウンターのマスに会話イベントを配置します(上の画像の黄色枠のマス)。
イベントを配置したら、イベントに「スクリプト」を設定します。
スクリプトとは、「セリフを表示する」、「キャラクターを移動させる」など一連の動きをまとめたもので、上から順に実行していきます。上の画像は見ただけで何となく予想できるかもしれませんが、宿屋に泊まる時のスクリプトの内容です。画像左の「トリガータイプ」が「調べる」となっているため、カウンターに向かって決定ボタンを押すと宿屋イベントが発生します。
スクリプトに設定した1つ1つの命令は、ゲーム本体のプログラムに「カウンターに話しかけたらウィンドウとセリフを表示して、”はい”を選んだらプレイヤーキャラを移動させて、…」という風に直接書くことでも実現はできますが、スクリプトとして別データに切り離すことで非常に管理しやすくなります。ゲーム本体のプログラム側は、スクリプトを解読して、内容を1行ずつゲームに反映する処理が必要になります。
スクリプトはゲーム本体のプログラム側が解読できればなんでも良いので、書き方に決まりはありません。なので、スクリプトの書き方は筆者がテキトーに決めています。スクリプトの内容については記事の最後に参考までに載せておきます。
・マップ間の移動
イベントには会話の他にマップの移動がありますね。マップ移動もこれまでに紹介したイベントと同様に配置します。
以下はバロン城の外観のマップです。
黄色い枠のマスにマップ移動のイベントを配置してあります。小さい扉や階段も同様です。
城壁に設置された取っ手を調べると大きい扉が開き(非表示&当たり判定OFF)、中へ入る事が出来ます。
黄色い枠のマップ移動イベントのスクリプトはこんな感じです。
マップ移動イベントがあるマスに移動すると、画面がフェードアウトしてマップが切り替わります。
このマップ切り替えの時に、移動先のマップの
といったイベントを実行することでスムーズにマップを切り替えます。
ちなみにスクリプトの「VISIBLE」や「ISHIT_ON」は、バロン城の中に入る際に開いた大扉を元に戻しておく(表示&当たり判定ON)処理です。この処理が無いと一度開いた大扉はずっと開きっぱなしになります(笑)
マップの切り替えはマップの種類、移動先の座標などを資料にしておくと管理しやすくて良いですね。
・イベントスイッチ
イベントはスクリプトによって実行されます。その際にイベントスイッチのON/OFFを切り替えることがあります。イベントスイッチとは俗に言うフラグのことで、例えば勇者が魔王を倒したら「魔王を倒した」というスイッチがONになり、このスイッチがONの状態で故郷に帰ると「大魔王の登場」のイベントが発生する、といった具合に、ゲームの進行に関わる分岐でスイッチが使われます。
開発者がよくやってしまうのが「スイッチをON(OFF)にするのを忘れる」ですね…(; ・`д・´)
これをやってしまうと本来1個限定のアイテムを無限に入手出来たり、一度倒したはずのボスと何度もバトルできてしまう事態になります。超有名タイトルですらやらかしてしまうミスです。怖い。
次回はバトルについて書きたいと思います。
・スクリプトの内容
主な命令はこんな感じです。
これらを組み合わせてイベントを作っています。ご参考までに…m(_ _)m