アフィリエイト広告を利用しています
検索
言葉を集めて世界を旅するRPG「地図の時間〜言葉集めの冒険譚〜」
timeofmapworks_logo_2020.png
ハートフルRPG「地図の時間」

地図の時間スピンオフRPG「影泥棒と魔法の手記」

リソース管理ダンジョンRPG「琥珀の道具士」

現代SFRPG「重力ルーペ/探求リバーブ」

ドラマティックRPG「バンドワゴン」

ビジュアルノベル「日向と香水」

ノベル×ADV「ストーリーテラー」 title1_2.png
カテゴリ
プロフィール/制作環境(3)
制作記(1)
ニュース(ツクールMV)(222)
技術情報(ツクールMV)(203)
JavaScript/スクリプト(ツクールMV)(9)
プラグイン情報(ツクールMV)(11)
素材情報(ツクールMV)(15)
アップデート情報(ツクールMV)(45)
トラブル&解決情報(ツクールMV)(18)
ツクール製作品(ツクールMV)(42)
関連情報(ツクールフェス)(2)
投稿イベント情報(ツクールMV)(4)
関連情報(ラノゲツクールMV)(9)
Benchmark MV(個人作品:試作)(1)
manurpg(個人作品:試作)(2)
ブックモービル(個人作品)(10)
重力ルーペ(個人作品)(11)
そして魔女に会う(個人作品)(7)
バンドワゴン(個人作品)(1)
地図の時間(個人作品)(14)
日向と香水(個人作品)(3)
ストーリーテラー(個人作品)(1)
嘘つきのノブレスオブリージュ(2)
お役立ちツール/素材サイト(創作全般)(12)
創作アイディア(創作全般)(7)
保存用コラム(創作全般)(10)
コラム(144)
オススメ作品(8)
当ブログへのお問い合わせ(contact me)(2)
琥珀の道具士(3)
最果てのギルド(1)
読書メモ(1)
Steam展開ノウハウ(21)
RPGツクールMZ(3)
地図の時間〜名前探しの物語(1)
プラグイン情報(ツクールMZ)(1)
技術情報(ツクールMZ)(13)
国内展開ノウハウ(1)
素材情報(ツクールMZ)(4)
AI(8)
RPG Maker Unite(2)
DAW(1)
翻訳(1)
リンク集

2018年04月30日

実験:スイッチの判定処理について

◆実験:スイッチの判定処理について

スイッチの判定処理について負荷の少ない方法を調べたときの話です。
取り組み上、プラグイン、スクリプトを使用しない前提で書いている記事なので、コラム的にご覧ください。
対策は結論がでているので、記事末尾の参考記事をぜひ。


同一マップ限定で何かの処理をスイッチONで開始(例.エンカウント0、光源処理、宝箱ポップ、BGM変更)マップ切り替え時にスイッチをOFFにして初期化をするということをやっていました。

座標1.1にこんなイベントを設置するといった具合ですね。
◆スイッチの操作:#0341 test1 = OFF
◆イベントの一時消去
トリガー:自動実行

たった1つならまだしも複数の処理(スイッチ)をON→OFFにする必要が生じた場合、次の2通りが一般的ではないでしょうか。

@一斉OFF
◆スイッチの操作:#0341..0350 = OFF
◆イベントの一時消去

A条件分岐でONの場合のみOFF
◆条件分岐:test1がON
◆スイッチの操作:#0341 test1 = OFF

:分岐終了
◆条件分岐:test2がON
◆スイッチの操作:#0342 test2 = OFF

:分岐終了
…以下続く
◆イベントの一時消去

この場合、どちらが処理負荷が低いのか試してみました。

20180430_7.jpg

20180430_8.jpg

結論としては、マップ切り替え時にはマップ初期化処理でイベントチェックが走るため変わらないとのことでした(ご回答くださったしぐれん様に感謝です)。

テストプレイ中にメニュー画面の切り替えをすると更新内容を即反映できるのは、この処理のためだったのですね。

逆に言うと、画面を切り替えない(メニュー画面の呼び出しのようなシーン遷移含む)
スイッチOFF時の判定なら、条件分岐の分軽くなる可能性はありますが、その場面はおそらく限定的。
それならば実装作業のコストを考えてパターン@で管理した方が早いという話でした。

予備知識として以下ご参考まで。
・スイッチON/OFF、変数の変化は同一MAP内の全イベントチェックを走らせる
1.スイッチ=Game_Switches Classの変更、Game_Variables Classの変更がsetValue() で格納される
2.1の度にGame_Map Classの refresh() =更新処理処理が走る

・スイッチ、変数の値を直接指定することで全イベントチェックを回避することは可能
-具体的には $gameVariables._data や $gameSwithes._data の値を変更する

解説や取り組まれた好例は次の記事が参考になります。

並列処理でスイッチや変数を操作すると重くなる【ツクールMV】(パラドレ様)
https://paradre.com/%E4%B8%A6%E5%88%97%E5%87%A6%E7%90%86%E3%81%A7%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81%E3%82%84%E5%A4%89%E6%95%B0%E3%82%92%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8B%E3%81%A8%E9%87%8D%E3%81%8F%E3%81%AA%E3%82%8B

【ツクールMV Tips】ゲーム動作軽量化に潜むsetValueと$gameMap.refresh()の罠(terunon様)
http://ch.nicovideo.jp/terunon/blomaga/ar988845
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/7605034
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック