【質問】ローグライクのような移動ができるプラグインについて

ググって調べたのですが、見つからないので教えていただきたいです。
ローグライクRPGのような移動が出来るプラグインを、ご存知の方はいないでしょうか?

具体的に挙げますと、
「プレイヤーが一歩移動する」 → 「イベントも一歩移動する」
というような移動です。

プラグインについての情報を御存知の方は、
教えていただけると助かります。
 
プレイヤーが一歩移動するとイベントも一歩移動するプラグインや方法は自分は知りませんが、マウス操作を廃止して、キーボードでの移動操作やトリアコンタン様のピクチャーのボタンを利用したボタン移動方法なら、思いつきます。

・「イベントエディタ」にある条件分岐のボタン[ ]を押している時という命令文
・シンボルエンカウントでも利用されるようなイベントの範囲内と範囲外で反応することができるイベントかプラグイン

などの二つを利用すれば、できるのではないのでしょうか?

もしくは、ツクールMVで距離を計算するプラグイン

https://qiita.com/sakura-crowd/items/a8067e4889c70cd1baa6

これをかなり細く設定し、別のプラグインも併用しながらやれば、もしかしたら、マウス操作でも可能かもしれません。
 
猫二郎さん。
ご返信ありがとうございます。いつもお世話になっております。

自動イベントで選択肢を表示し、
プレイヤーが『上』『下』『左』『右』を選択して移動後に敵イベントも移動・・・。
というシステムをイベントコマンドで試しにツクってみたのですが、
テンポが非常に悪かったのです。

普通に移動できて、こちらが一歩動くとイベントも一歩動く・・・
みたいなプラグインがあったらな~と思って質問してみました。

もう少し調べてみます。
ありがとうございました。
 
自分は単に

・プレイヤー操作用イベント
→イベントは自動実行で、方向キー毎に移動する様にするだけ
スクリーンショット 2018-12-17 20.21.03.png
このイベント内に決定キーやキャンセルキーで何らかのアクションを追加できると思いますが・・・。
スクリプトで決定キーやキャンセルキー、シフトキー以外のボタン設定はできます。ツクマテの方で再々見かけます。

・プレイヤーを認識して行動するイベント
視界内で一歩ずつ前進し、視界外だとランダムに行動するプラグイン又はイベントを作るだけ。

のつもりでしたが・・・。
マウス操作はできませんが、キーボードや何らかのボタン形式だと割と動きます。
 
最後に編集:
自分は単に

・プレイヤー操作用イベント
→イベントは自動実行で、方向キー毎に移動する様にするだけ
View attachment 4530
このイベント内に決定キーやキャンセルキーで何らかのアクションを追加できると思いますが・・・。
スクリプトで決定キーやキャンセルキー、シフトキー以外のボタン設定はできます。ツクマテの方で再々見かけます。

・プレイヤーを認識して行動するイベント
視界内で一歩ずつ前進し、視界外だとランダムに行動するプラグイン又はイベントを作るだけ。

のつもりでしたが・・・。
マウス操作はできませんが、キーボードや何らかのボタン形式だと割と動きます。
その方法をやってみたことがあるのですが、たしか押しっぱなしの時の挙動が問題になった気がします。あと、キーを何回か押したときのタイミングでも狂うことがあった気が。

プレイヤーとイベントの移動にずれが出てきたり、壁なんかで進めないときの認識も組まなきゃいけなかったりと、想像以上に煩雑でした。

なので、この問題はプラグインでないとちょっと厳しいと判断した記憶があります。
 
ツミオ様が今まさに 作ろうか?という話をしてらっしゃいますね。

https://twitter.com/TsumioNtGame/status/1074585588081221632
興味が御有りなら、コンタクトを取ってみてはいかがでしょうか。

お~、本格的なローグライクのプラグインですね!
ただ自分はガチのローグライクをツクろうとしていたわけではないので、
ここまで高性能なものは必要なかったです。
情報、ありがとうございました。
 

エルトン

ユーザー
既に見つけているようですが、自分なりの解法を。

とりあえず5体を動かしてみた。

まずは並列処理用のイベントを適当なところへ、
下以外は1しかフラグをONにしてないが、見やすくするためで実際には各方向に1~5を入れる。
rlw1.PNG

で、敵はこんな感じ。
イベントの1ページには特に何もないコウモリが表示されるだけのイベントです。
rlw2.PNG

ただ移動速度変更とかをしてあげないと、5体が順番に移動していくので1歩にとても時間がかかります。

追記:
移動速度変更してもかなり時間がかかりました!
これはだめですね(オイ

追記2:
これ、別にキー分岐いらなくね?
と思ったらやっぱりいらなかった!これでマウスにも対応だ!
でも追記の問題は解決してないね!
 
最後に編集:

エルトン

ユーザー
改良した。
並列処理にはとりあえずキー条件分岐はいらない。
そして敵とは別にウェイト用のイベント用スイッチを追加。
rlw1.PNG

敵は、移動が自動実行だったのを並列実行に変更。
移動速度を6(4倍)に設定。

そして敵と似たような構成のウェイト用イベントを作成
こちらは自動実行。1ページ目には相変わらず何もないイベント。
rlw2.PNG

これでダッシュしても敵が何体してもスムーズに移動した。
私がためした限りだと、自分や敵の移動の同期がズレる事もなかった。
 
改良した。
並列処理にはとりあえずキー条件分岐はいらない。
そして敵とは別にウェイト用のイベント用スイッチを追加。
View attachment 4535

敵は、移動が自動実行だったのを並列実行に変更。
移動速度を6(4倍)に設定。

そして敵と似たような構成のウェイト用イベントを作成
こちらは自動実行。1ページ目には相変わらず何もないイベント。
View attachment 4536

これでダッシュしても敵が何体してもスムーズに移動した。
私がためした限りだと、自分や敵の移動の同期がズレる事もなかった。

画像まで添付していただき、ありがとうございます!
見つけたプラグインがエラーなどで、どうしようもなくなった時に導入するかもです。
一点、気になったのは戦闘イベントが正常に動作するかです。
自分がイベントでやろうとしたときは敵イベントを『すり抜け』にし、
プレイヤーの位置を取得した変数と敵イベントの変数が合致すれば戦闘開始としていました。
ただ、そうすると敵が移動するときに壁をすり抜けてしまったりと、いろいろ問題があったので。

ご検討下さり、ありがとうございます。
 

エルトン

ユーザー
「すり抜け」を有効にするのではなく、
イベントのプライオリティを「通常キャラの下」「通常キャラの上」のどちらかにすれば問題なく動作します。
方法も座標一致の判定で問題ないかと。

あと敵の「移動ルートの設定」だけど、上記例だと「移動できない場合は飛ばす」が有効になってなかった。
「移動できない場合は飛ばす」をチェックしないと若干挙動がおかしくなるので注意。
 
>イベントのプライオリティを「通常キャラの下」「通常キャラの上」のどちらかにすれば問題なく動作します。

それは盲点でした!
なるほど、確かにその通り!
ありがとうございます!
 

エルトン

ユーザー
もういいだろと自分で思ったが、さらに改良。

改善内容はスイッチの共通化。
動きは変わらないが、使うスイッチが1つになって敵も完全コピペで量産できるようになった。
敵が増やしやすくなって制作効率がUPだ!

まず歩数を監視する並列処理でONにするスイッチを1個に変更。
rlw1.PNG

ウェイト用の自動実行イベントでOFFにするスイッチを、その1個のスイッチに変更。
あとウェイトを9に変更。8でもいいけど、7だとNG。
敵の移動処理などを増やす場合はウェイトを適時調整する。
rlw2.PNG

敵イベントの1ページ目、プライオリティは通常より上に設定。
プレイヤーから接触されたら戦闘にする。
rlw3.PNG
2ページの実行条件を、並列処理でONにした一つのスイッチにする。
今まであってスイッチON操作は削除。
条件分岐スクリプトの内容はプレイヤーとの座標一致の確認。
別にスクリプト使わなくてもできるが、
使わないほうが変数も使わないし、見やすく処理が軽くなる(気がする)
rlw4.PNG

参考までに一応、同座標か調べる条件分岐スクリプト
(this.character(-1).x == this.character(0).x) && (this.character(-1).y == this.character(0).y)
 
もういいだろと自分で思ったが、さらに改良。

改善内容はスイッチの共通化。
動きは変わらないが、使うスイッチが1つになって敵も完全コピペで量産できるようになった。
敵が増やしやすくなって制作効率がUPだ!

まず歩数を監視する並列処理でONにするスイッチを1個に変更。
View attachment 4547

ウェイト用の自動実行イベントでOFFにするスイッチを、その1個のスイッチに変更。
あとウェイトを9に変更。8でもいいけど、7だとNG。
敵の移動処理などを増やす場合はウェイトを適時調整する。
View attachment 4548

敵イベントの1ページ目、プライオリティは通常より上に設定。
プレイヤーから接触されたら戦闘にする。
View attachment 4549
2ページの実行条件を、並列処理でONにした一つのスイッチにする。
今まであってスイッチON操作は削除。
条件分岐スクリプトの内容はプレイヤーとの座標一致の確認。
別にスクリプト使わなくてもできるが、
使わないほうが変数も使わないし、見やすく処理が軽くなる(気がする)
View attachment 4550

参考までに一応、同座標か調べる条件分岐スクリプト
(this.character(-1).x == this.character(0).x) && (this.character(-1).y == this.character(0).y)
条件分岐をプレスキーでなく、歩数にする発想は当時無かったです。その着眼点、凄いです。
確かにそれなら、同期させられますね(試してみたところ内部では先に座標移動が完了し、画像が後から付いてくるような順番っぽいので、プレイヤーとイベントの移動速度を合わせれば見かけ上ほぼ同時に動いているように見えると思われる。もしかしたら、誤差が数フレームあるかもしれないけれど)。

ランダム移動やプレイヤーに近づくだと、ちょっとした障害物があるとき、そこに向かって歩く(見かけ上は止まっている)のをどうにかしたいところですね。そこは、何かプラグインがあったでしょうか(やろうと思えばイベントでも出来るけれど)。
 
もういいだろと自分で思ったが、さらに改良。

改善内容はスイッチの共通化。
動きは変わらないが、使うスイッチが1つになって敵も完全コピペで量産できるようになった。
敵が増やしやすくなって制作効率がUPだ!

まず歩数を監視する並列処理でONにするスイッチを1個に変更。
View attachment 4547

ウェイト用の自動実行イベントでOFFにするスイッチを、その1個のスイッチに変更。
あとウェイトを9に変更。8でもいいけど、7だとNG。
敵の移動処理などを増やす場合はウェイトを適時調整する。
View attachment 4548

敵イベントの1ページ目、プライオリティは通常より上に設定。
プレイヤーから接触されたら戦闘にする。
View attachment 4549
2ページの実行条件を、並列処理でONにした一つのスイッチにする。
今まであってスイッチON操作は削除。
条件分岐スクリプトの内容はプレイヤーとの座標一致の確認。
別にスクリプト使わなくてもできるが、
使わないほうが変数も使わないし、見やすく処理が軽くなる(気がする)
View attachment 4550

参考までに一応、同座標か調べる条件分岐スクリプト
(this.character(-1).x == this.character(0).x) && (this.character(-1).y == this.character(0).y)
バグを見つけました。
プライオリティ下の透明イベントなど、イベントが居る方向には、イベントが移動できないようです。
聖域の巻物みたいなことができますけど、罠イベントを置いても移動できないから、イベントが通行不可になったり罠の場所がばれるということが起きますね・・・。

※追記
透明イベントにすり抜けを入れたら、行けました。罠イベントを作るときは、すり抜けのチェックを忘れないようにしないといけませんね。
 
最後に編集:
うーん、何度も動かしてると、稀に戦闘にならないときがありますね・・・。
スイッチが切れるタイミングなのか、並列処理の敵イベントが走るタイミングなのか・・・。

あと、細かいところですが、敵が動いてないのに戦闘に突入したように見えるのが気になりました。移動処理(ウエイトなし)後にウェイト4-6フレーム程度入れると、接触して戦闘に入るように見えますが、これやると戦闘にならないという現象が起きやすくなるんですよね。

戦闘の処理結果が勝っても負けても同じ処理の場合は、一時消去でいいのですが、勝ったとき、逃げた時、負けた時で処理を分ける場合にスイッチ制御のイベントによってスイッチが切られてるせいか処理されなくなることがあります。

簡便に増やせて良いなと思ったんですが、環境に依存したり、処理が増えたりすると実用に耐えられないかもしれません。凄く惜しいなぁ・・・何とかできないものか・・・。
 
最後に編集:

エルトン

ユーザー
さすがにストッパーがないと不安定だったようですね。
これで直るか試してもらってもいいでしょうか?

変更するのは敵イベントのみです。

まず1ページ目のプレイヤー接触戦闘はいらないし邪魔なので削除してください(画像なし)

2ページ目では移動とセルフスイッチの操作に
rlw1.PNG

3ページで戦闘等の処理を入れてください。
セルフスイッチを元に戻す事と、自動実行であることに注意してください。
rlw2.PNG


ランダム移動やプレイヤーに近づくで壁に邪魔されるのを直接解決するプラグインはわかりませんね。
イベントでどうにかするか、経路探索プラグインを併用するか、やりたい内容次第かな。
個人的には移動しないパターンはパターンでそれでいいかなって思ってます。

追記:
ちなみに前の奴はウェイトイベントのウェイトは短すぎても長すぎてもNGだったんですが、
少なくとも今回の奴は十分なウェイトがあればいい、はず。
だめだった場合はウェイトを長くしてみてください。
カクカクが増えるのでウェイトを長くするも好ましくはないのですが。

追記2:
ちなみにアイコンアニメの表示は、処理に十分な時間がかかりそうなイベントをテスト用にひっつけただけです。当然ですが、このシステムには全く無関係なので消しても問題ありません。
 
さすがにストッパーがないと不安定だったようですね。
これで直るか試してもらってもいいでしょうか?

変更するのは敵イベントのみです。

まず1ページ目のプレイヤー接触戦闘はいらないし邪魔なので削除してください(画像なし)

2ページ目では移動とセルフスイッチの操作に
View attachment 4552

3ページで戦闘等の処理を入れてください。
セルフスイッチを元に戻す事と、自動実行であることに注意してください。
View attachment 4553


ランダム移動やプレイヤーに近づくで壁に邪魔されるのを直接解決するプラグインはわかりませんね。
イベントでどうにかするか、経路探索プラグインを併用するか、やりたい内容次第かな。
個人的には移動しないパターンはパターンでそれでいいかなって思ってます。

追記:
ちなみに前の奴はウェイトイベントのウェイトは短すぎても長すぎてもNGだったんですが、
少なくとも今回の奴は十分なウェイトがあればいい、はず。
だめだった場合はウェイトを長くしてみてください。
カクカクが増えるのでウェイトを長くするも好ましくはないのですが。

追記2:
ちなみにアイコンアニメの表示は、処理に十分な時間がかかりそうなイベントをテスト用にひっつけただけです。当然ですが、このシステムには全く無関係なので消しても問題ありません。
これなら、いけました。マウスでのタッチ操作には対応しなくなりました(自動実行なので、動きを止められる)が、仕方ないですよね。敵イベントの移動ページを並列処理にするとタッチで移動しても止まらなくなりますが、戦闘に入らなくなるので、自動実行にしました。
 
トップ