神無月サスケの波瀾万丈な日常

神無月サスケのツイッター(@ktakaki00)を補完する長文を書きます。

多機能フックローププラグインの紹介とその哲学

多機能フックローププラグインとは?

2017年、僕は、RPGツクールMV用に、マップ上のアクション系プラグイン
「多機能フックローププラグイン」を公開しました。
https://forum.tkool.jp/index.php?threads/851/
簡単に言うと、フックロープなのですが、複数の機能を持ち、
汎用性が高く作られています。
百聞は一見にしかず。こちらに、このプラグインを使用した1分弱の動画がありますので、
まずはご覧になってください。
https://youtu.be/PBEbrzYt3xI

関連プラグイン:ツミオさんのアクションプラグイン

さて、このプラグインのみならず、巷には、
同様の、アクション系プラグインは、それなりに紹介します。
そこでまずはそれらのプラグインの中から、
有名なひとつをピックアップして紹介します。
それを紹介した後で、「それではなぜ、多機能フックロープなのか」という
話をしたいと思います。

ツミオさんのアクションプラグイン

プラグイン】特殊なアクションを実装
https://forum.tkool.jp/index.php?threads/669/
僕がこれを選んだのは、僕が知っている中で、
最も多機能なプラグインだからです。
ゼルダの伝説にあるアクションをそれこそすべて搭載する勢いで
数多くのアクションが設定可能です。
これらの挙動は動画でデモを観られます。
Youtubeの「ツミオチャンネル」
https://www.youtube.com/channel/UCTIxXkDwcTkAiku5WFt6oDQ
こちらでは、アクションプラグイン以外にも、
あなたの興味を惹く多くのプラグインのデモ動画もあるため、
単に「ゼルダの伝説のような、様々なアクションを導入したい」
という方は、ツミオさんのプラグインの方がいいかもしれませんね。
なお、彼はカンパ歓迎と話しているので、
気に入ったらカンパしてあげてほしいな、と思っています。

ツミオさんのプラグインと多機能フックロープ

さて、多機能フックローププラグインに話を戻します。
このプラグインは、フックロープのみであり、
ツミオさんのプラグインと比較して、
機能のバリエーションという意味では、明らかに見劣りします。
しかし、機能を絞りこむ代わりに、ある種の「哲学」を貫いているのです。
すなわち、僕の一貫するポリシー、哲学を理解してくれた人に
使ってもらいたいと思っているのです。

多機能フックロープに込めた「哲学」

ひとつのアイテムが複数の機能を持つのが望ましい

まず、僕がこのプラグインで目指したのは
「道具と言うのは、決まった一つの使い方のみならず、
いろんな使い方が出来るのが理想」というものです。
ゼルダの伝説シリーズを思い出してください。
複数の使い方があるアイテムや、
基本的な使い方は一つだが、特定の場所で思わぬ使い方が出来る……
そんな形で、多彩な使い方が出来るアイテムが多数あります。
僕がこのプラグインで目指したのは、まさにその方向性なのです。

直観的であること

前述の「基本的な使い方は一つだが、特定の場所で思わぬ使い方が出来る」というのは、
要するに、その道具の決められた機能にはなかったけれど、
現実世界の常識に照らし合わせて、「あ、あれでああできないかな」って考えて
試してみたら、それがビンゴだった、そういうことです。
すなわち「(現実世界に照らし合わせて)直観的である」ということです。
考えてみてください。最近の大規模なオープンワールドのゲーム(GTAシリーズを始めとする)は
全てこれに従っていますね。
そして、ゼルダの伝説も、この方向性が、シリーズを追うごとにどんどん進化しているのは、
僕より皆様の方が、詳しいと思います。
このようにゲーム内に説明はないけれど、直観的に試したら、うまくいった……
プレイヤーの期待に最大限応えてあげるのが、いいゲームデザインだといえます。
ただし、これを徹底するには、壮大な人海戦術が必要です。
個人制作では、到底追いつきません。
しかし、出来ることは出来る。多機能フックロープは、3つの機能を持たせました。

多機能フックロープの3つの機能

前述の動画を観ていただいて、もうご存知かもしれませんが、
改めて、このプラグインの3つの機能を紹介します。


1.フックロープの先に杭があった場合、プレイヤーが杭の手前まで移動
 基本。
2.フックロープが接触したイベントを起動
 川を挟んだ先にあるスイッチを操作するなど。
 - サンプルプロジェクトでは、普通に話しかけた場合と、フックロープをぶつけた場合でセリフが変わる人物を配置。
3.フックロープの先に接触したイベントを、目の前に持ってくる(フェッチ)。
 落とし穴を挟んだ先にある宝箱などのアイテムを取ってくる。
 - なお、目の前が通行不可の地形の場合、プレイヤーが一歩後退する仕様。
 - 目の前が通行不可でプレイヤーが後退不可の場合、取ってこられない。
気づかなかった人は、上記を意識して、もう一度動画をご覧ください。

このプラグインを使う際の設定について

では、このプラグインを実際に使ってみることを考えてみます。
実はこのプラグイン、多機能ゆえに、設定が少しだけ、手間がかかります。
詳しいことは、プラグインのヘルプに全て載せていますので、
ここでは、要点をピックアップしてみましょう。

何の設定に手間がかかるのか

なぜ設定に手間がかかるのか。それは「3つの動作が可能」であることの裏返しです。
どのイベント(またはタイル)に、フックロープは反応するのか。
それを設定しないといけませんが、それはすなわち、
「どのイベントがプレイヤーを移動させる杭で、
どのイベントが、イベント起動で、どのイベントが、持ってくることが出来るか」
を設定するということです。
これは主に、イベントのメモで設定しますが、
ひとつひとつ「これはこの動作」とメモに書いていたら、
作業量はとんでもないことになりますね。
そこで、プラグインのオプションで、
「ひとつのイベントに<picket>と書けば、その画像のイベントは全部杭になる」
「この条件を満たすイベントは、全部、デフォルトでフックロープが触れたら起動」
「この条件を満たすイベントは、全部、デフォルトでフックロープでフェッチ可能」
といったことが可能になっています。
具体的には、「なし」「!で始まるイベントのみ」「全て」が選べます。
なお、対象は「イベントに画像が設定されている」「プライオリティが通常キャラと同じ」を
満たすイベントだけです。
こうやってデフォルトを設定すれば、
「例外的にこの機能を持たせる(あるいは持たせない)イベント」にだけ
メモを書くことで済みます。

競合を解決するための優先順位の定義

さて、複数の機能を入れたことにより、一つ課題が出てきました。
それは「機能が競合してしまう」ことです。
ひとつのイベントに複数の機能が設定されても、その中のどれかひとつしか選べません。
また、フックロープを投げた先の範囲内に、複数のイベントがあった場合、
どれに反応すればいいのでしょう。

複数の動作が適用可能なイベントの優先順位

設定により、ひとつのイベントに、複数の機能が割り振られる設定になる状況が考えられます。
しかも、設定の方法をなるべく簡略化したため、
このプラグインでは、結構起こりやすい事象になります。
そんな時のために、複数が設定されていたら、以下の優先順位をとっています。
1(杭)>2(起動)>3(フェッチ)
こうした根拠は、より直感的なものを優先したからです。

「範囲内に複数の候補が存在した場合」

例えば、最大7延びるロープで、杭が4つ先と6つ先にあった場合、どちらに移動するか?
これは、大抵の人は、近い方、と答えるでしょう。
実際、一番近いイベントを重視しています。
しかし、開発の初期では、一番遠い方のイベントを優先していました。
その方が、なんとなく直観的に感じたからです。
ところが、テストプレイした方の全員が「不自然」と言ったため、一番近い方になりました。
いやはや、僕の「直観的」は、少しずれているのかもしれません。

サンプルプロジェクトの中身

なお、上記の動画ですが、サンプルプロジェクトをアップしています。
http://www.moonwhistle.org/tkoolMV/HookRopeTest.zip
RPGツクールMVをお持ちの方で、興味がおありのお方は、お試しください。
そして、プロジェクトをいじって、いろんなギミックを作ってみてください。
ギミックについては、僕の頭ではサンプルプロジェクトの範囲が限界でしたが、
公開することで、皆に面白い使い道を見つけてもらえそうなのでアップした、
ということです。
ぜひ、興味がおありの方は、ダウンロードして、いじって遊んでくだされば幸いです。