【RPGツクールMV】追跡イベントを比較してみる

最近ツール系を試したり、プラグインを遊んでみたりしていたらプロジェクトの量が大変なことになってきたので軽く整理する。
用済みのテスト用の奴を消したりまとめたりしていたらかなり前に触ったっきりの追跡系プラグインをテストしたプロジェクトが出てきた。
そういえば最近何か追加があったのかな?
などと検索してみると自分の書いた古い記事が出てくる。
割と初期にまとめたもので画像の類は一切なし。
せっかく作ったプロジェクトに関してもほとんど触れていなかった。
なんだか少しもったいない気がしてきたのでそれを掘り返すついでにいろいろ追加して、追跡系イベント、プラグインのまとめとして改めて比較してみることにした。

前にまとめたものに関してはこちら。

クールのプラグインを試し中

今回は前に扱ったイベント追跡系プラグインである

YEP_EventChasePlayer
SmartPath

の二つに加えて、デフォルト機能で作れる追跡イベント二つを用意したのでこれら四つを実際に動かしてみた感じを比較していきたい。

また、プラグインに関してはツクールMVのユーザー登録を行えば無料でダウンロードすることが出来る。
ただ規約に関してはそれぞれ細かくあるようなので要確認。

RPGツクールMV公式『プラグイン無料ダウンロード』ページ

追跡イベントとは?

ツクール系RPGで一時期よく目にしたのが追跡系ゲーム。
見るからに怪しい洋館とかで謎の生き物に追いかけられて触られたらゲームオーバーという感じのあれ。
追跡イベントは、そういった主人公を追いかけてきたり、逃げ出したりするイベントをまとめたもの。

イベントページ自律移動

基本機能としてイベントページで設定することが出来るため、
難しいことを考えずとも画像の左側中段にある『自律移動』の枠からタイプ「近づく」を選択すれば一応完成する。
これが今回の中で一番簡単なパターン。
この設定をされたイベントは同じマップに入った瞬間からプレイヤーを追いかけてくるようになる。
上記イベントではイベント発生トリガーを「イベントから接触」に変更し、イベント内容に会話後、ゲームオーバーの処理を入れることで、

追いかけられる
触られる
ゲームオーバー

という逃げゲーの基本を再現している。

しかしながらこの機能にも問題がないわけではない。
詳しい内容に関しては後述するが、現状だといわゆる鬼ごっこ的なイベントに使う際にはいくつか物足りない点がある。
そこで自作イベント、あるいはプラグインの力を借りて追跡イベントを作っていこうという流れ。

具体的にどう変わっていくのかという点を、
最初に

 デフォルトで作れる追跡イベント

続いて
デフォルト機能で実現できる

 デフォルト追跡

最後に
プラグインを導入することで実現できる追跡イベント二種。

 SmartPath

 YEP_EventChasePlayer

の順番で実際にツクールで動かしてみたものを見ていきたい。

基本部分

テストマップ説明

今回テストのために用意したのはこのようなマップ。
テーブルなどの小物類で通常配置される四角の物体に加えてL字、凹凸の大きいX字のポイントを作成し、どの程度引っかかるのか試していきたい。

頭上表記のイベント

また、イベントごとの判別がつきやすいように
DTextPicture
という文字を画像に変換して表示できるプラグインを利用して、各イベントの名前が頭上表示されるようにした。
こういう細かいところで使えるのが本当にありがたい。

デフォルト機能で作れる追跡イベント

まずはデフォルト機能で作れる追跡イベントから。
内容としてはデフォルト追跡のほうが簡単なのだが、挙動自体のシンプルさはこちらのほうが上なので先に紹介する。

デフォルト機能で作れる追跡イベント解説

こちらは先頭で紹介したデフォルト追跡の移動タイプを変更してカスタムにしたもの。
中身としては

移動速度の変更
プレイヤーに近づく

を何回も繰り返すという形。
挙動としては移動速度を変更しながらプレイヤーに近づいていくというもの。
正直テストだけなら『プレイヤーに近づく』を1行入れて繰り返しにしておけば完成なのだが、せっかくなので可変速機能を取り入れてみた形。

テストプレイデフォルト機能作成移動経路

テストプレイを始めて見ると速攻で溝に引っかかる。
「プレイヤーに近づく」の挙動では、イベントのプレイヤー間にある障害物を一切考慮に入れないため、最短距離を進もうとする。

テストプレイデフォルト機能作成見つめあい

間に障害物がある限り迂回することもないので、こちら側にいる限りはやりたい放題。
見つめあうことも可能。

テストプレイデフォルト機能作成最短距離計算参考資料

移動に関しても最短距離のみを求めているため、
上記のようななだらかそうに見える道も引っかかる。
この辺りに関しては後述のデフォルト追跡にも当てはまる難点。
この機能を使って追いかけっこイベントを作る際にはマップ作成時に引っかかるポイントをなるべく減らすなど工夫する必要がある。

デフォルト追跡

デフォルト追跡のイベント

続いて、先ほども例に出したデフォルト追跡。
イベントの中身に関しても最初に触れた通り、自律移動を設定するだけで、作れてしまう手軽さが魅力。
他に設定できる項目としては

移動速度 :イベントの移動速度の設定、1マスを移動する速さ
移動頻度 :イベントの移動頻度の設定、移動1マス毎の間隔

などがある。
他にも並行処理イベントなどを利用してこれらの速度を変更したりすることもできなくはない。

テストプレイデフォルト追跡移動経路

基本的な追跡方法としては「プレイヤーに近づく」を活用した追跡イベントと大差ないので袋小路には弱い。

テストプレイデフォルト追跡脱出

が、こちらは移動中たまにランダム方向に1マス進むといった感じの処理が付け加えられているようで、それを用いて、引っかかりから脱出する、いわゆるハマり防止の対策が行われている。
ただ、これに関しては引っかかった場合、あるマスに一定以上いた場合などという条件付けが一切ないので追いかけている途中なのに、急に方向転換するなど不自然な挙動を起こすこともある。

テストプレイデフォルト追跡ハマり

あくまで1マスのみの挙動なので、L字のようなポイントでは普通に引っかかる。
上記の画像では赤で囲ったL字の部分を往復するような挙動になる。
ただ引っかかりにくさとしては最初の自作したものと比較すると意外に向上しており、本格的な追いかけっこをしないRPGのミニゲームなどに使う分には十分な機能を備えているともいえる。

SmartPath

ここからはプラグインを用いた追跡イベント。
まずはSmartPathについて。
このプラグインは正確に言うと、経路探索の拡張プラグインで、
本来の活用法としては固定された二点間を最適な経路で結んで移動するというもの。
追跡イベント作成に関しては、並行処理イベントを用いてプレイヤーとイベントの座標を取得、その数値を目標点にして経路探索という流れを繰り返すことで追跡イベントっぽく作るというもの。

スマートパスイベント本体

動かすイベント本体。
並行処理イベントのほうに移動ルートなどは含まれているので非常にシンプル。

スマートパスイベントプレイヤー座標取得

並行処理イベントの一つ目。
こちらではプレイヤーとイベントの座標を変数に格納、その後X軸の距離、y軸の距離を計算し、それを足し合わせることでマップ上で何マス離れているのかを計算している。

スマートパスイベント経路決定

並行処理イベントの二個目。
一つ目で計算した数値を用いて、イベントとの距離が一定より近ければ移動開始、離れたら一時停止、その後特定の位置に戻る。
という流れで構成した。
SmartPathの適応自体は、プラグインを有効にしてコマンド入力するだけでOK。
今回利用したのは、

SmartPath      3         -1
(コマンド)(対象のイベントID)(プレイヤーキャラを目標)

SmartPath      3         cancel
(コマンド)(対象のイベントID)  (移動を中止)

SmartPath      3         3 6
(コマンド)(対象のイベントID)(マップ座標3,6に移動)

の三種類。

テストプレイSmartPath初期位置

初期位置をデフォルトだと引っかかる隙間の位置に設定してテストスタート。

テストプレイSmartPath移動経路

距離が近いのでスタートと同時に反応し追跡開始、障害物を回りこんでくれる。

テストプレイSmartPath変数内部

変数の中身を確認。
この場合、プレイヤーとイベントの距離が6以上になっているので、イベントは設定どおりX座標3、Y座標6の位置にいる。

テストプレイSmartPath帰宅ルート

設定された座標に戻る際にも回り込んだうえで規定の位置まで最短距離で戻ってくれる。

元が移動のみのプラグインであるため、追跡イベントとして使用するにはそれなりの準備が必要だが、逆を言うとイベントの本体の方は自由が利くので自分なりのアレンジを入れたり、独自の理論を立ててみたりする拡張があるという見方もありかと。
経路に関しては問題なし。
L字のような大回りとなる道も問題なく迂回してくれる。

YEP_EventChasePlayer

YEP_EventChasePlayerイベント

最後はYEP_EventChasePlayer。
こちらのほうはSmartPathと異なり最初から追跡イベント用に作られているプラグイン。
画像のように移動ルート内にスクリプトを入れることで有効化できる。
プラグインをONにして、
『this._chaseRange = 5』
の一行で追跡イベントとして機能する。
魅力的なのが、プラグインそのものにいくつかパラメータが設定されているため、プラグインのほうでいわゆるデフォルト設定を行うことが出来るという点。
設定可能なのは以下の項目。

追跡時間
プレイヤー認識ありなし(ありだと死角が出来る)
吹き出しの出る間隔
発見された時に出る吹き出しの種類(デフォルトの番号順で数値を指定)
発見された時になるSE
発見された時に起動するコモンイベント(ID指定)
見失った後に元の位置に戻るか
見失った後にその場に待機する時間

これらはパラメータの設定以外でもイベント単位で設定することもできる。
他にイベントのほうにのみ、設定できる項目としては、

イベントの移動速度
発見された時のSEのより細かい設定(ピッチ、パン)

などがある。

これらに適当に値を入れてみるだけでも独自っぽい追跡イベントが作れてしまうというのが最大の魅力。

テストプレイYEP_EventChasePlayer待機状態

始めるとイベントは待機状態となっている。
移動ルートではプラグインの設定以外にも方向の向き変えも入れているため、普段はその場で待機して四方を回転しながら監視、プレイヤーが視覚に入った瞬間追いかけ始めるというイベント内容。
プラグインによる追跡が始まった場合、移動ルート内に設定された項目を無視するようになるので、ウェイト、移動などを入れても問題なく追跡してくれるのがありがたい。
見失った後の原点に戻る仕組みを合わせれば、追跡前はランダム移動したり、一定の場所を巡回する警備員的な動き、それを引き寄せて、元の位置に戻る前に抜ける、なんてイベントも作れそう。

テストプレイYEP_EventChasePlayer発見

当たり判定は扇状となっており、斜めの距離でも一定まで近づくと発見される。
壁、障害物などの判定はないので壁越しでも普通に発見されてしまうのはご愛嬌。

テストプレイYEP_EventChasePlayerL字、待機

デフォルトが引っかかっていたL字の地点に配置してみた。

テストプレイYEP_EventChasePlayerL字発見

範囲に入ったので移動開始。

テストプレイYEP_EventChasePlayer回り込み

回り込んで最短距離で接近してきます。
これはつんだ。
このほか段々の部分でも引っかかることなく追尾してくれました。
このあたりの点は前に比べた時も感じたのですが、どちらもかなり高度な出来になっているのでどちらが上なのかは正直見分けがつかない。

テストプレイ全乗っけ始まり

比較するという名目ではあるものの当然両立してみるのもあり。
放たれる獣たち。

テストプレイ全乗っけお終い

ぬわー。
組み合わせてみると、的確に追いかけてくるプラグイン組が追い詰めてきて、追いかけ方が少し適当なデフォルト組が退路を塞いでくるという思ったよりエグイ状態に。
この散らばり方を見てそういう感じが少しでも伝われば幸いです。

以上となります。
機能としては当然プラグインの二種に軍配が上がりますが、デフォルトのほうのカスタマイズ性のありそうな動きにも少し可能性という魅力を感じてしまうようなラインナップでした。

おまけ

サンプルマップでシンボルエンカウントを作ってみた。

おまけシンボルエンカウントイベント

モンスターのイベントと移動ルート。
発見前はランダムに移動するタイプで構成。
ちなみに二ページ目には場所移動からのリポップ、三ページ目には点滅から追跡再開というイベントを組んでいます。

おまけテストプレイ待機

敵を発見、こちらに気づいていないのでゆったりと飛行していますが・・・。

おまけテストプレイ追跡

発見すると急加速、こちらを追いかけてきます。

おまけテストプレイ移動

ある程度距離を離すと元の位置へ移動。
たまには気分を変えてシンボルエンカウントなんていうのも楽しそうですね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA