RPGツクール2000/初心者【サイトトップへ戻る】
■「自動的に始まる」と「定期的に並列処理する」の違い
(更新:2022/03/29)


イベント開始条件にある自動的に始まる定期的に並列処理するの違いを説明します。



自動的に始まる定期的に並列処理するは、
両方とも何もキーを押さなくても自動的にイベントが実行されると言った共通点がありますが、
それぞれに長所と短所があり、使用状況に合わせて使い分けます。

ショートカット
■自動的に始まるの特徴
■定期的に並列処理するの特徴
■使い分け
■1回だけ実行させる
■イベント処理は1つずつ行われる
■定期的に並列処理するの処理落ち対策について
■セーブデータへの保存について
■補足


  
■自動的に始まるの特徴

自動的に始まるを実行すると、基本的に主人公の操作はできなくなります。



定期的に並列処理する以外の「決定キーが押されたとき」などが実行している間は、
自動的に始まるは実行できません。



イベント出現条件の条件がイベント処理の途中で満たさなくなっても、
イベント実行内容の最後までイベント処理が実行されます。

また別のマップへ移動しても、
前のマップから実行しているイベントのイベント実行内容の最後まで実行されます。



自動的に始まる定期的に並列処理するが一緒に動いている場合で、
自動的に始まるが実行している間は定期的に並列処理するは実行されませんが、
自動的に始まるの中で文章の表示ウェイトなどを実行して処理が止まっている間は、
定期的に並列処理するが実行されます。



イベントコマンド:文章オプション変更にて、
ウェイト中に他のイベントを移動させる」のオプションを設定している時には、
自動的に始まるを実行している間でもマップイベントの移動が実行されます。

但し「イベントから触れたとき」は実行されません。



マップイベントで自動的に始まるを設定した場合、
設定内容によっては自動的に始まるでも主人公の移動が可能になる場合があります。

例えば…
■マップイベント

イベント開始条件:自動的に始まる

◆キャラクターの動作指定:このイベント,右に移動
の場合は、主人公の移動が可能になります。

但し動作指定に移動処理が無い場合イベントコマンド:キャラクターの動作指定のあとに、
イベントコマンド:指定動作の全実行がある場合は、主人公の移動はできません。


▲トップへ戻る▲


  
■定期的に並列処理するの特徴

定期的に並列処理するは実行している間も、主人公の移動やマップイベントの実行などができます。



複数の定期的に並列処理するを実行している時には、
1つの定期的に並列処理するの処理が終わった時、
または文章の表示ウェイトなどで処理が止まっている時に、
別の定期的に並列処理するが実行します。

但し他の定期的に並列処理するにも文章の表示があったり、
ピクチャーを操作するイベントコマンドがある場合は、
その定期的に並列処理するも一時停止します。

なおメニュー画面や戦闘画面を表示している時には、
全ての定期的に並列処理するが一時停止します。



イベント出現条件を満たさなくなると、
イベント実行内容の途中でもウェイトなどを実行した時にイベント処理が中断します。



コモンイベント定期的に並列処理するで、
出現条件スイッチがOFFになってイベント処理が中断した場合、
再び出現条件スイッチがONにするとイベント処理が中断した所から処理が再開されます。



定期的に並列処理するは様々な隠れた仕様があり、
下手に使うと処理落ちやバグなどが発生しやすくなります。
【ツクールの仕様のページを開く】


▲トップへ戻る▲


  
■使い分け

基本的に…
主人公の操作(移動やメニュー表示)ができない自動的に始まる
主人公の操作(移動やメニュー表示)ができる定期的に並列処理する
と言った使い分けをします。



■オープニングイベント

自動的に始まるを使います。

自動的に始まるを使う事により、主人公の操作ができなくなるので、
オープニング実行中にプレイヤーの操作で主人公を移動させたり、
メニュー画面を表示させたりする事ができなくなります。

なお、オープニングイベントのような1回しか使わないイベントは、
コモンイベントではなく、マップイベントに設定した方が良いでしょう。



■取り消しキーやShiftキーを押したら自作メニューを表示する

定期的に並列処理するを使います。

自作メニューを表示している時に主人公の移動ができないようにする時には…
◆キャラクターの動作指定:主人公,一時停止(動作を繰り返す:ON)
を実行します。
指定動作の全解除で再び移動ができるようになります。

定期的に並列処理する自動的に始まるの両方を使った設定方法もあります。

☆定期的に並列処理する
◆条件分岐:スイッチ[0001:自作メニュー起動]がON
 ◆イベント処理の中断
 ◆
:分岐終了
◆キー入力の処理:[0001:キー入力](オプション:ON)
◆スイッチの操作:[0001:自作メニュー起動]をONにする
☆自動的に始まる(出現条件スイッチ:[0001:自作メニュー起動])
◆〜自作メニューの処理〜

※自作メニューを閉じたらスイッチ0001番をOFF。

別のマップへ移動して自作メニューを表示するような時には、このような処理で作ります。

なお、定期的に並列処理する自動的に始まるの場合は、
主人公の動きを止める「一時停止」の設定は不要になります。



■時間や歩数をカウント

定期的に並列処理するを使います。

画面上に時間や歩数などをピクチャで表示するイベントや、
朝昼夕夜で画面の色を変化させるイベントを作る場合も定期的に並列処理するを使います。

【歩くと実行するイベントの作り方を見る】
【時間イベントの作り方を見る】



■自作戦闘(自作システム)

プレイヤーが主人公を操作して戦闘を行う場合(アクションRPGなど)は、
定期的に並列処理するを使います。

プレイヤーが主人公を操作しないで戦闘を行う場合(自作フロントビューなど)は、
自動的に始まるを使います。


▲トップへ戻る▲


  
■1回だけ実行させる

自動的に始まる定期的に並列処理するイベント出現条件が満たされている限り、
何度でも実行されます。



オープニングイベントなどの1回しか実行されないイベントを設定する場合は、
イベント出現条件を設定しないと、何度もオープニングイベントが実行するバグが発生します。

基本的な設定は以下のようにマップイベントに2ページを設定して処理します。

▼1ページ目の設定


▼2ページ目の設定


ゲーム開始時は全てのスイッチがOFFの状態であるため、
上の設定の場合は、まずは1ページ目が実行されます。

そして1ページ目の最後にある…
◆スイッチの操作:[0001:オープニング終了]をONにする
によって、2ページ目が出現します。

マップイベントには、
ページ番号の大きいページのみが出現する(実行する)と言った仕様があるため、
2ページ目が出現し続けている限り、再び1ページ目が実行される事はありません。

【オープニングイベントの作り方を見る】


▲トップへ戻る▲


  
■イベント処理は1つずつ行われる

自動的に始まる定期的に並列処理するを同時に実行した場合、
または複数の定期的に並列処理するを同時に実行した場合、
イベントは1つずつ順番に処理されています。

例えば…
定期的に並列処理するA 定期的に並列処理するB
 ◆変数の操作:[0001]加算,1
 ◆変数の操作:[0001]加算,1
 ◆変数の操作:[0001]加算,1
 ◆
 ◆変数の操作:[0002]加算,1
 ◆変数の操作:[0002]加算,1
 ◆変数の操作:[0002]加算,1 
 ◆
と言った処理を同時に実行した場合は…
定期的に並列処理するA 定期的に並列処理するB
◆変数の操作:[0001]加算,1
◆変数の操作:[0001]加算,1
◆変数の操作:[0001]加算,1
 ◆
◆変数の操作:[0002]加算,1
◆変数の操作:[0002]加算,1
◆変数の操作:[0002]加算,1
 ◆
と言った順番に処理されます。

途中にウェイトが挟まる場合は…
定期的に並列処理するA 定期的に並列処理するB
◆変数の操作:[0001]加算,1
◆変数の操作:[0001]加算,1
◆ウェイト:0.0秒
◆変数の操作:[0001]加算,1
 ◆
◆変数の操作:[0002]加算,1
◆変数の操作:[0002]加算,1
◆変数の操作:[0002]加算,1
 ◆
と言った順番に処理されます。

なお、定期的に並列処理するAのウェイトの時間が長い場合は、
定期的に並列処理するAの処理が止まっている間は、
定期的に並列処理するBの処理が何度も実行されます。


▲トップへ戻る▲


  
■定期的に並列処理するの処理落ち対策について

定期的に並列処理する処理落ちが発生しやすく、
特に複数の定期的に並列処理するが同時に動いていたり、
1つの定期的に並列処理するに大量のイベントコマンドが設定されている場合は、
処理落ちが発生しやすくなります。

処理落ちはゲームを動かすパソコンの処理能力なども関係してくるため、
ゲームを制作しているパソコンでは処理落ちが目立たなくても、
プレイヤーのパソコンでは処理落ちが目立つ事があります。



基本的に60分の1秒単位で処理する必要が無い定期的に並列処理するには…
◆ウェイト:0.0秒
を設定しておくと良いでしょう。

以下はウェイトを設定した方が良い場合と設定しない方が良い場合の一例です。

処理内容 ウェイト 補足
移動歩数をカウント 1マス移動したら変数の値を1増やす処理の場合、
移動速度が最高速の「4倍速」だったとしても、
「60分の2秒」で1マスを移動するので、
「ウェイト:0.0秒」を設定して30分の1秒単位にしても、
問題無く移動歩数をカウントする事ができます。
時間経過を処理 時間が経つと「朝→昼→夕→夜」と変わるような処理の場合、
「ウェイト:0.0秒」を設定して
30分の1単位で時間を処理しても特に問題は無いでしょう。
ダッシュ処理 × ウェイトがあるとキー入力の反応が鈍くなります。
また設定次第では「主人公から触れたとき」が実行されない
バグが発生する可能性があります。
レース処理 × レースゲームのゴール判定にウェイトを設定すると、
対戦キャラとの微妙な勝ち負けを判定するのが難しくなります。
30分の1秒単位でクリア時間をカウントすると、
細かいクリア時間を測定する事ができません。
リプレイ機能を付ける場合は、
60分の1秒単位でキー入力の保存を行わないと、
正しいリプレイが再生できなくなる可能性があります。



ウェイトを設定する以外の処理落ち対策として、
既に実行していて二重に実行する必要が無いイベントコマンドに関しては、
出来る限り二重に実行しないように設定するのも有効的な対策になります。

特に「ピクチャーの表示」のような処理落ちが発生しやすいイベントコマンドに関しては、例えば…
◆変数の操作:[0001:マップID:現在]代入,主人公のマップID
◆条件分岐:変数[0001:マップID:現在]がV[0002]以外
 ◆変数の操作:[0002:マップID:地図表示]代入,主人公のマップID
 ◆ピクチャーの表示:1,世界地図(275,205)
 ◆
:分岐終了
と言ったように、別のマップへ移動した時に一度だけ実行するようにすれば、
処理落ちの軽減に繋がります。


▲トップへ戻る▲


  
■セーブデータへの保存について

何らかのイベントが実行している時にセーブを実行すると、
実行中のイベント情報がセーブデータに保存されます。

定期的に並列処理する以外の自動的に始まる決定キーが押されたときの場合は、
イベント処理が終了すると、セーブデータにはイベント情報が保存されなくなりますが、
定期的に並列処理するの場合は、イベント出現条件を満たさなくなったあとでも、
セーブデータには定期的に並列処理するのイベント情報が保存されます。

そのため、大量のイベントコマンドを設定した複数の定期的に並列処理するを実行すると、
セーブデータの容量が大きくなり、セーブ画面(ロード画面)を開くのが遅くなる可能性があります。
【セーブ画面(ロード画面)が開くのが遅い時の対策方法を見る】


▲トップへ戻る▲


  
■補足

一度処理が終了して、再びイベント実行内容の一番上から実行されるまでは、
約60分の1秒の時間がかかります。

自動的に始まる定期的に並列処理するを同時に実行した時には、
定期的に並列処理するの方が先に実行されます。


▲トップへ戻る▲



◎関連ページ

●ツクールの仕様
●オープニングを作る

YADOTトップ  このサイトは何?  気紛れな空間へ戻る  メール