RPGツクール2000/バグ・エラー【サイトトップへ戻る】 ■処理落ちに関するページ (更新:2020/07/26)
このような場合に考えられる原因とその対策について紹介します。 なお、主人公が全く動かせない時には、以下のページをご覧ください。
■処理落ちに関する基礎 処理落ちは主に以下のような状況の時に処理落ちしやすくなります。
処理落ちは使用するパソコンの処理能力などによっても処理落ち度が異なります。 そのため、下記の■重い処理落ちが発生するに書かれている通りに行っても、 見た目では処理落ちが感じられない可能性があります。 処理落ち対策は、多くのプレイヤーに快適なゲームをプレイして頂くための対策であり、 制作しているパソコンではスムーズに動いていても、出来る限り処理落ちしそうな設定は避けた方が良いでしょう。 なお、処理落ち状態と言うものを確認したい場合は、以下のマップイベントを作成してください。
パソコンの処理能力によっては、もう少し「BGMの演奏」を増やさないと処理落ちが確認できないかもしれません。 ▲トップへ戻る▲ ■重い処理落ちが発生する ゲームのプレイが困難になるほどの重い処理落ちが発生する、その原因と処理落ちの対策方法を紹介します。 ■ピクチャーの連続表示を行っている 定期的に並列処理するの中で…
このような場合は、1回だけイベントが実行するように設定すると良いでしょう。 ▼設定例
複数のピクチャー画像を順番に表示していくアニメーションを行いたい時には、 予め必要な画像を透明度「100%」で表示しておき、 ピクチャーの移動を使って表示させたい画像を透明度「0%」にして表示し、 ピクチャーを消す時にはピクチャーの移動を使って透明度「100%」にして消去します。 ▼設定例
■半透明のピクチャーを表示 半透明(透明度[1〜99%])のピクチャーを表示させると、処理落ちが発生しやすくなります。 複数のピクチャー画像を半透明にして重ねて表示するような設定は、なるべく控えた方が良いでしょう。 ■BGMの演奏を連続的に実行している 定期的に並列処理するの中で常に…
このような場合は、1回だけ実行する設定にすると良いでしょう。 ▼設定例
■ラベル、繰り返し処理を使っている 定期的に並列処理するの中でラベルの設定や繰り返し処理を使ってループ処理を作った場合、 そのループしている間にウェイトの設定が無いと処理落ちが発生します。 繰り返している処理の中に…
▼設定例(自作のキー待ち処理)
ウェイトを設定すると、ループ処理の処理速度は遅くなります。 ピクチャーの移動などにあるウェイトの設定でも、通常のウェイトの設定と同様の効果が得られます。 ■指定動作の全実行を連続的に実行している 定期的に並列処理するの中で指定動作の全実行を連続的に実行させると、処理落ちが発生する事があります。 定期的に並列処理するでキャラクターの動作指定を実行させる時には、 指定動作の全実行の代わりにウェイトを設定した方が良いでしょう。 ■イベントの一時消去を実行したマップイベントを呼び出した時 イベントの一時消去によって消えているマップイベントのページをイベントの呼び出しで呼び出して実行すると、 マップイベントに設定されているイベント実行内容の処理速度が遅くなります。 遅くなる時間はイベントコマンド(◆の表示)1つを処理する度に、 「60分の1秒(ウェイト:0.0秒)」の時間がかかります。 条件分岐の場合は通過するだけで「60分の2秒」。 条件分岐の中を通過する場合は「60分の3秒+中のイベントコマンド」の時間が遅くなります。 このバグの対策は以下のものがあります。 マップイベントにはそのコモンイベントをイベントの呼び出しで呼び出す設定だけを置く。 ▲トップへ戻る▲ ■処理負担を軽減させるテクニック 処理負担を軽減させるテクニックを紹介します。 イベント設定に慣れていない方は、無理に行う必要はありませんが、 巨大なイベント実行内容を動かしているなど、処理落ちが気になる方は実行してみてください。 ■一括の活用 ツクールの処理では、イベントコマンドを1つ1つ処理していきますので、 イベントコマンドの数が多ければ多いほど、処理落ちの問題が発生しやすくなります。 スイッチの操作や変数の操作では、一括と言う設定方法があります。 例えば…
一括で処理した方が処理負担が軽減されます。 同様に主人公の現在位置を取得する時には…
但し、マップIDを取得するだけの設定の時や、複数の変数に一括でX座標を代入するような設定の場合は、 現在の場所を記憶を使わずに変数の操作を使った方が良いです。 ■1回のイベントコマンドの処理数を減らす 1回の処理(60分の1秒単位の処理)でのイベントコマンドの処理数が少なくなれば、 当然ながら処理負担は軽減されます。 例えば、主人公がいるマスの地形IDとイベントIDを調べて、 地形ID=1番&イベントID=0の時に効果音を鳴らすイベントを設定する時には、 定期的に並列処理するの中には、以下のように設定します。
一見上記の設定でも問題の無い設定のように見えますが、 この設定では地形IDの取得結果(地形ID1番であるかどうか)に関係なく、 必ずイベントIDを調べる設定になっています。 イベントIDの情報は…
なお、地形IDとイベントIDを取得する変数の番号を同じ番号にしてもイベント処理は問題なく処理されます。
同じ変数番号にするのは、使用する変数番号を少しでも減らしたいと言ったこだわり派の方の設定方法であり、 無理に同じ変数番号で設定する必要はありません。 ■定期的に並列処理するは出来る限り1つにする 自作システム(自作戦闘)を作る方の中には、 1つの定期的に並列処理するにまとめられるようなイベント実行内容を小分けにして、 複数の定期的に並列処理するでイベントを処理する方がいます。 一見小分けした方が処理効率が良いように思えますが、実際には複数の定期的に並列処理するに小分けしても、 1回の処理(60分の1秒単位の処理)の合計のイベントコマンドの数が変わらなければ、処理負担は変わりません。 逆に定期的に並列処理するの数が増える事で処理負担が増します。 定期的に並列処理するの設定は、出来る限り1つの定期的に並列処理するにまとめた方が良いでしょう。 ■イベントの呼び出しで処理を分けても速くならない!? 定期的に並列処理するのイベントの中で、 常にイベントの呼び出しで他のイベントを呼び出している設定を行う方がいます。 見た目は処理を分けた方が処理効率が良いように見えますが、 1回の処理(60分の1秒単位の処理)のイベントコマンドの処理数は変わらない上、 イベントの呼び出しの処理が加わってしまい、処理負担が増してしまいます。 このような時には、以下のように1つにまとめた方が良いです。 なお。コモンイベントに大量のイベントコマンドを設定した複数の定期的に並列処理するを実行すると、 セーブデータの容量が増大し、セーブ画面(ロード画面)を開くのが遅くなる問題が発生する事があります。 このような場合は、定期的に並列処理するを「呼び出されたときのみ」に変えて、 定期的に並列処理するを設定した別のコモンイベントから呼び出して実行すると、 大量のイベントコマンドを設定した定期的に並列処理するのイベント情報がセーブデータには保存されなくなります。 ■高速で処理する必要の無いものにウェイトを設定 高速で処理する必要が無い定期的に並列処理するには、 出来る限り「ウェイト:0.0秒」を設定しておくと良いでしょう。 例えばマップイベントの目の前に主人公がいるかどうかを監視する監視イベントを作った場合、 主人公を監視する処理は60分の1秒単位で高速に処理する必要があるように思えます。 しかし標準速の主人公が1マスを進む時間は「60分の8秒」なので、 監視イベントが60分の1秒単位で主人公がいるかどうかを監視すると、 主人公が1マスを進む間に、主人公がいるかどうかを8回確認している事になります。 そのため、監視イベントの定期的に並列処理するに「ウェイト:0.0秒」を設定して、 主人公を監視する処理速度を半分(60分の2秒単位)に変えても、 主人公が1マスを進む間に主人公がいるかどうかを4回確認する事になるので、 「ウェイト:0.0秒」を設定しても十分に監視イベントとしての処理能力があります。 【監視イベントのページを開く】 ウェイトの設定とは少々異なりますが、例えば、2つの監視イベントの処理を1つにまとめて…
この場合、主人公のX座標が9以下の時には監視イベントAのみが動き、 X座標が10以上の時には監視イベントBのみが動きます。 このように主人公から離れた監視イベントの処理を止めておく設定も、処理負担の軽減に繋がります。 ■時には逆転な発想で乗り切る! 監視イベントで前方3×3のマスを調べる敵キャラを10体設定した場合、 ウェイトなどの設定が無ければ、60分の1秒ごとに90マスの主人公の有無を調べる事になります。 一見改善の余地が無いように思えますが、しかしよく考えてみれば、 敵イベントから3マス先に主人公がいるとしたら、 主人公から3マス先に敵イベントがいると言う事になります。 つまり主人公の周り4方向(36マス)に敵キャラがいるかどうかを調べれば、 敵キャラ1体ごとに主人公を監視する設定は必要無くなります。 但し、敵キャラごとに監視する範囲が異なるなど、 同じ1つのシステムでは処理できない場合は、この方法では対応できない事もあります。 ■無用な「それ以外の場合」は設定しない 制作者によっては、条件分岐を設定する時に…
一見「それ以外の場合」は有っても無くても変わらないように思えますが、もしも「それ以外の場合」がある場合は、 「それ以外の場合」の中にイベントコマンドが設定されているかどうかを調べる処理が発生するため、 若干の処理負担になります。 ■無意味な注釈は設定しない 注釈はイベント実行内容に設定しても、ゲーム画面には全く反映されませんが、一応イベントの処理上では…
必要な注釈までを無理に消すほどの事ではないですが、あまりに無意味な注釈の設定するのはお勧めできません。 ▲トップへ戻る▲ ◎関連ページ ●主人公が動かなくなった ●ツクールの仕様に関するページ |