ページ 12

マップの設定のBGS自動演奏を途中から消す方法

Posted: 2025年2月11日(火) 01:45
by まさゆ
掲題の件で質問があります。

マップの設定から「BGS自動演奏」の設定が出来ますが、イベントの最中に消したいと思っています。
イベントコマンドの「BGSの演奏>(なし)」や「BGSのフェードアウト」を使っても消えません。
マップの設定から設定したBGSは消すことが出来ないのでしょうか?
何かしら方法がありましたら教えてください。

ご確認よろしくお願い致します。

Re: マップの設定のBGS自動演奏を途中から消す方法

Posted: 2025年2月11日(火) 02:43
by いづみ
私の方法ですが、マップ設定のBGMやBGSではなくイベントとして設定しおくと任意のタイミングで音楽の再生を行うことができます。
たとえば、街に入ったときイベント「〇〇町に入った」がONになると音楽が流れ出すようにする方法です。
これを並列処理で行います。
そして、なにか音楽を消したいイベントが発生したときにイベント「〇〇町に入った」をOFFにすると、並列処理で実行されていたイベントが失われ、音楽を消すことができます。
イベント中に任意のBGMやBGSを流し、イベント終了時にイベント「〇〇町に入った」をONにすることで、複雑な処理をせずともエリアごとのBGMやBGSを自由に操れるようになります。
意図的に音量を変化させるときも、同じ要領でイベントを用意してやることでBGMの音量やフェードアウト操作できます。

画像を参考にしてください

Re: マップの設定のBGS自動演奏を途中から消す方法

Posted: 2025年2月11日(火) 09:29
by まさゆ
いづみ様、
ご返信ありがとうございます!
私も昔作ってたゲームはイベントでBGMやBGSを鳴らしていたのですが、あるときからマップの設定から音楽を鳴らせると知って、こっちで設定する方が楽だなーと思ってマップの設定を活用していました。
でも、えええー、マップの設定で設定した音楽を制御出来ないなんて・・。(これって軽いバグというか配慮不足とというか・・)
今作ってるゲームを改修するのも結構手間だし、もしマップの設定から設定した音楽を制御する方法はないかと思っています。なければ改修です。

Re: マップの設定のBGS自動演奏を途中から消す方法

Posted: 2025年2月11日(火) 12:27
by いづみ
ついさっきツイッターを巡回していたらタイムリーに対応できるプラグインを作られた方がいらっしゃいました。

https://x.com/knt1951/status/1888872054403076101

ツイッターアカウントを持っていない場合、↓のURLをご利用ください
https://drive.google.com/file/d/1J5WjCo ... AxCVC/view


効果のほどは未確認ですので、ご確認いただければと思います

Re: マップの設定のBGS自動演奏を途中から消す方法

Posted: 2025年2月11日(火) 12:58
by ecf5DTTzl6h6lJj02
こんにちは。
いづみ さんが書きました:ついさっきツイッターを巡回していたらタイムリーに対応できるプラグインを作られた方がいらっしゃいました。

https://x.com/knt1951/status/1888872054403076101

ツイッターアカウントを持っていない場合、↓のURLをご利用ください
https://drive.google.com/file/d/1J5WjCo ... AxCVC/view


効果のほどは未確認ですので、ご確認いただければと思います
こちらのプラグインですが、
イベントコマンドやマップの自動演奏の設定で、BGSを鳴らした後、他のマップに移動した際に、
自動演奏が設定されていないマップで、メモ欄に <BGS継続> という記述がされていない場合には、
BGSをストップさせるという仕様のプラグインのようです。
今回の質問内容とは微妙に合致していないです。

で、本来の質問内容である、
マップの自動演奏で設定したBGSをイベントコマンドで停止できない、という件に関してですが、
こちらの環境で確認する限りでは、
イベントコマンドで BGS のフェードアウトや、BGSの演奏で (なし) を設定して、
BGSを停止させることができているので、
イベント内容になにか正しくBGSを停止させられない要因があるか、
使用しているプラグインによって、BGSが正しく停止させられない状況にあるかではないかと思います。

イベント内容や、使用しているプラグインに関する情報を、
スクリーンショットなどで見せて頂けないでしょうか。

Re: マップの設定のBGS自動演奏を途中から消す方法

Posted: 2025年2月11日(火) 13:59
by まさゆ
いづみ様、ecf5DTTzl6h6lJj02様、
返信ありがとうございます。
Projectを新規作成して試した所、ecf5DTTzl6h6lJj02様の仰る通り、マップの設定で設定したBGSをイベントコマンド(演奏なし、フェードアウト共に)で消すことが出来ました。
それで、現在制作中のゲームで確認した所、イベントコマンドで消せる箇所と消せない箇所がありました。
同じ様に処理を書いているのに何故このようなことが発生しているか謎です。。
ちょっと更に処理を見てみます。
取り急ぎお礼まで。

Re: マップの設定のBGS自動演奏を途中から消す方法

Posted: 2025年2月11日(火) 15:28
by まさゆ
確認したこと。

本ゲームではプラグイン「BGS並行演奏(トリアコンタン様作) - ParallelBgs.js」(1.1.1 2021/03/06)
https://plugin-mz.fungamemake.com/archi ... e_vignette
を利用しており、本プラグインをOFFにしたところ、問題なくBGSを消せました。
ただ、本ゲームではParallelBgs.jsがどうしても必要になるので、外すことは出来ません。

それで、問題となっているBGSを消せない箇所のソースを、試しに下記のように変更したところ、BGSが消えるようになりました。
ーーーーーーーーーーーーーーーーーーーーーーーー
◆BGSのフェードアウト:3秒

  ↓↓↓

◆プラグインコマンド:ParallelBgs, ライン変更
:         :ライン番号 = 1
◆BGSのフェードアウト:3秒
ーーーーーーーーーーーーーーーーーーーーーーーー

ただ、腑に落ちないのは、ニューゲームからゲームを開始して問題のあるイベントに到達するまで、一度もParallelBgsを使用していないことです。
なので、ライン番号 = 1にBGSが格納されているはずはないのに、ライン番号 = 1を指定してBGSフェードアウトをするとBGSが消えるのは理解出来ません。

ということで、現状納得は出来ていないのですが・・、一旦は上記の処理で対応を図ることにしました。

Re: マップの設定のBGS自動演奏を途中から消す方法

Posted: 2025年2月11日(火) 15:55
by ecf5DTTzl6h6lJj02
まさゆ さんが書きました:確認したこと。

本ゲームではプラグイン「BGS並行演奏(トリアコンタン様作) - ParallelBgs.js」(1.1.1 2021/03/06)
https://plugin-mz.fungamemake.com/archi ... e_vignette
を利用しており、本プラグインをOFFにしたところ、問題なくBGSを消せました。
ただ、本ゲームではParallelBgs.jsがどうしても必要になるので、外すことは出来ません。

それで、問題となっているBGSを消せない箇所のソースを、試しに下記のように変更したところ、BGSが消えるようになりました。
ーーーーーーーーーーーーーーーーーーーーーーーー
◆BGSのフェードアウト:3秒

  ↓↓↓

◆プラグインコマンド:ParallelBgs, ライン変更
:         :ライン番号 = 1
◆BGSのフェードアウト:3秒
ーーーーーーーーーーーーーーーーーーーーーーーー

ただ、腑に落ちないのは、ニューゲームからゲームを開始して問題のあるイベントに到達するまで、一度もParallelBgsを使用していないことです。
なので、ライン番号 = 1にBGSが格納されているはずはないのに、ライン番号 = 1を指定してBGSフェードアウトをするとBGSが消えるのは理解出来ません。

ということで、現状納得は出来ていないのですが・・、一旦は上記の処理で対応を図ることにしました。
前回の記事を描いた後に、
そういえば、BGSを複数同時演奏できるプラグインがあったような…
これを使用している場合は、どの番号のBGSを停止するかきちんと指定しないと
イベントコマンドで停止できないことがあり得るな。
と思い出したのですが、これが原因でしたか。

このプラグインですが、ヘルプに
なお、マップで指定するオート演奏のBGSはラインが[1]で固定になります
とある通り、
マップでBGSの自動演奏を設定した場合、BGSはライン 1 で演奏される仕様となっているようです。

プラグインのヘルプに書かれている内容にはよく注意をしてください。

Re: マップの設定のBGS自動演奏を途中から消す方法

Posted: 2025年2月11日(火) 17:40
by まさゆ
ecf5DTTzl6h6lJj02様、返信ありがとうございます。
確かに見落としていました。
今まで作ってきたゲームは、ParallelBgsを使用する場面でマップの設定からのBGS自動演奏をやっていなかったので、そういった仕様を気にする必要がありませんでした。

ただ、依然として納得がいっていないのが、先に報告させてもらった「イベントコマンドで消せる箇所と消せない箇所がありました」の通り、ライン番号 = 1を指定しないでもBGS自動演奏が消せるマップもあることです。
下記のように2つのマップがあり、
・マップA:BGS自動演奏設定あり
・マップB:BGS自動演奏設定あり

1)マップAは、「BGSのフェードアウト」だけでは消音出来ない。
2)マップAは、ライン番号 = 1を指定して「BGSのフェードアウト」すると消音出来た。
3)マップBは、「BGSのフェードアウト」だけで消音出来る。
4)マップBは、ライン番号 = 1を指定して「BGSのフェードアウト」しても消音出来た。

1)、2)、4)は今回仕様を理解したので納得。
でも、3)が納得出来ない。3)の場合は消音出来ないはず。

もう少し自分の制作したイベント処理などをチェックして何か悪さしてないか確認するつもりですが、既に大分ゲーム内容を作り込んでいる状態なので、原因が特定出来ないかもです(現時点で何度も見直しているが分からない・・)。
その場合、2)と4)で処理を統一して、本件クローズしたいと思います。

Re: マップの設定のBGS自動演奏を途中から消す方法

Posted: 2025年2月12日(水) 00:37
by ecf5DTTzl6h6lJj02
こんにちは。
まさゆ さんが書きました:ecf5DTTzl6h6lJj02様、返信ありがとうございます。
確かに見落としていました。
今まで作ってきたゲームは、ParallelBgsを使用する場面でマップの設定からのBGS自動演奏をやっていなかったので、そういった仕様を気にする必要がありませんでした。

ただ、依然として納得がいっていないのが、先に報告させてもらった「イベントコマンドで消せる箇所と消せない箇所がありました」の通り、ライン番号 = 1を指定しないでもBGS自動演奏が消せるマップもあることです。
下記のように2つのマップがあり、
・マップA:BGS自動演奏設定あり
・マップB:BGS自動演奏設定あり

1)マップAは、「BGSのフェードアウト」だけでは消音出来ない。
2)マップAは、ライン番号 = 1を指定して「BGSのフェードアウト」すると消音出来た。
3)マップBは、「BGSのフェードアウト」だけで消音出来る。
4)マップBは、ライン番号 = 1を指定して「BGSのフェードアウト」しても消音出来た。

1)、2)、4)は今回仕様を理解したので納得。
でも、3)が納得出来ない。3)の場合は消音出来ないはず。

もう少し自分の制作したイベント処理などをチェックして何か悪さしてないか確認するつもりですが、既に大分ゲーム内容を作り込んでいる状態なので、原因が特定出来ないかもです(現時点で何度も見直しているが分からない・・)。
その場合、2)と4)で処理を統一して、本件クローズしたいと思います。
こちらで色々と確認してみたのですが、
まさゆさんのおっしゃる、
ライン番号を指定しなくても、BGSのフェードアウトでフェードアウトできる場合とそうでない場合がある、
という状況は再現できませんでした…。

ただ、1つ謝らなければいけないのがありまして、
前回の記事で、
マップのBGS自動演奏はライン番号が 1 に固定されていることに注意してください、
と書いたのですが、私の方に、ちょっと認識不足の点があって、
BGS並行演奏プラグインのプラグインコマンドを一切使用していない状況であれば、
イベントコマンドのBGSの演奏や、BGSのフェードアウトを実行するときに、
ライン 1 番に対して実行するようになっている(プレイ開始時に、BGSのライン番号が 1に設定されている )ので、
プラグインコマンドで、ライン番号を指定していなくてもフェードアウトできるのが、
本来の挙動となっているようです。

なので、BGS並行演奏プラグインのプラグインコマンドで、何もしていないのに、
プラグインコマンドでライン番号を 1 に設定していないとフェードアウト等ができない状況の方が異常で、
何らかの他のプラグインとの競合によって、
操作するライン番号が 1 以外に変更されてしまったか、
マップで自動演奏に設定したBGSがライン 1 以外で演奏されてしまっている、
という可能性が高そうです。

イベントコマンドの 『スクリプト』 で、

コード: 全て選択

console.log(`Line Index: ${AudioManager._bgsLineIndex}`);
AudioManager._currentAllBgs.forEach((value, index) => console.log(`Line ${index}:`, value));
と記述すると、
テストプレイ時に、F8 もしくは F12 キーを押すことで表示できる、
DevTools というウィンドウの Console タブの画面に、
現在、操作するライン番号が何番になっているかと、
BGSの何番のラインで、どのファイルが演奏されているかの情報が出力できるので、
BGSのフェードアウトを行う前などに、実行してみて、おかしくなっていないか確認してみてください。

他にBGMだったり、SEだったりの再生の仕様を変更するようなプラグインがある場合には、
そちらとの競合が疑われますが、
こちらではどのようなプラグインの組み合わせになっているか分かりませんので、
競合の確認(プラグインの ON/OFF の変更や、順序の変更による解消の確認等)は、
ご自身で行っていただくしかありません。
ご容赦ください。

以上、確認してみてください。