RPGツクール2000/バグ・エラー【サイトトップへ戻る】 ■バグ対策(デバッグテクニック) (更新:2020/07/26) バグと言うものは…
どんなにベテランのツクラーが制作していても、大なり小なり何らかのバグが発生します。 バグが発生した時に最も重要な事は「原因を素早く見つけ、素早くバグを直す事」です。 このページでは、デバッグに関するアドバイスを載せています。
■テストプレーはこまめに ある程度イベントを設定しましたら、テストプレーを行いましょう! 「この設定は完璧だ!」 テストプレーを頻繁に行うと作業効率が悪いように思えますが、 たくさんのイベントを設定した後にテストプレーを行ってバグが発生した場合、 どこに原因があるのかを探し出すのに時間がかかってしまう事があります。 特に複雑なイベント処理(自作戦闘システムなど)を設定している時には、 こまめにテストプレーを行った方が良いでしょう。 ▲トップへ戻る▲ ■どこでもセーブ セーブが指定された場所しかできない場合、バグを見つけるごとに 「ゲーム中断 → バグを直す → セーブポイントから再開 → バグが発生した所へ移動」 となり、バグが直らない場合は、何度もバグが発生していた所へ移動する手間が発生します。 しかしバグが発生した近くにセーブポイントを設定したり、 ショートカット移動ができる場所移動を設定したりすると、 あとで削除し忘れて、それが新たなトラブルになってしまう可能性があります。 もしもセーブがどこでもできない状態である場合は、 どこでもセーブができるイベントを設定しておくと良いでしょう。 【どこでもセーブの設定方法を見る】 ▲トップへ戻る▲ ■ちょっとした設定ミスに注意! バグの大半はちょっとした設定ミスによるものが多いです。
ちょっとした設定ミスは、特にイベントをコピー&貼り付けした時によく見られます。 ▲トップへ戻る▲ ■バグの原因元の探し方 定期的に並列処理するや自動的に始まるを多用する場合、 どこにバグの原因元があるのかが分からない事があります。 そのような時には以下のような作業を行うと良いでしょう。 ●まずはバックアップを取ろう! 複雑なイベント設定を行っている場合は、 バグの原因元を探す前にイベントのバックアップを取っておくと良いでしょう。 バックアップを取る事によって、バグを探す時にイベントの追加や削除を行っても、 すぐに元に戻せるようになります。 バックアップは作品データをまるごとバックアップしても良いですが、 マップの場合は、そのマップをコピー&貼り付けしてデバッグ用のマップを作成。 コモンイベントの場合は、コモンイベントをコピー&貼り付けで複製して、バックアップを残す事もできます。 なお、バックアップ元のコモンイベントのイベント開始条件は、全て「呼び出されたときのみ」にしてください。 ●出来る限りイベントを止める! 複数の定期的に並列処理するが動いていると、バグの原因元を見つけるのが難しくなる事があります。 意外とバグとは関係さそうな定期的に並列処理するがバグの原因である事もありますので、 関係無さそうな定期的に並列処理するも出来る限り止めた方が良いでしょう。 ●文章や効果音を活用! テストプレーの時に[F9]を押すと、スイッチや変数の状態を見る事ができます。 しかし定期的に並列処理するや自動的に始まるなどで、 高速にイベントを処理している途中のスイッチや変数の状態を確認するのは難しいと言えます。 このような時には、文章や効果音を活用すると良いでしょう。 基本的な設定は、以下のように設定します。
このように所々に文章の表示を設定する事で、文章を表示している間は、 [F9]を押してスイッチや変数の状態を確認する事ができます。 似たような設定方法として、制御文字を使って以下のような設定方法もあります。
この場合は、[F9]を押さずに調べたい変数の値を4分の1秒だけ文章の表示で表示して、 キー入力を待たずに文章ウィンドウを閉じて、次のイベント処理へと進みます。 文章の表示はウェイトに近い効果があり、文章の表示を実行する事でバグが発生しなくなったり、 逆に新たなバグが発生する事があります。 また文章を表示している間は、ピクチャー関連の処理は実行されなくなります。 状況によっては文章の表示よりも効果音を使った方が良い場合があります。 効果音の設定方法も文章と同様に、所々に効果音の内容を変えて設定します。 効果音の場合は、処理の途中の変数の値を調べる事はできませんが、 イベント処理を止めずに、どのイベントが動いているのかが音で分かります。 デバッグは、細かく文章の表示や効果音の演奏を設定するよりも、 段階的に文章の表示の設定範囲を狭めていく方が効果的です。 最初はイベント実行内容の初めと中間と最後に文章の表示を設定して、 初めと中間の間でエラーが発生したら、さらに初めと中間の間にいくつかの文章の表示を設定して、 徐々に文章の表示の設定範囲を狭めれば、原因元であるイベントコマンドに辿り着けるでしょう。
なお、すぐにバグが発生するのではなく、暫くイベントを処理した後にバグが発生する場合は…
文章が表示されるようにすると良いでしょう。 ●別の変数に値をコピー 変数0001の値を調べたいが、リアルタイム処理なので止める事ができず、 また変数0001の値が頻繁に変わるので、[F9]を押しても正確な値が見れない。 このような時には…
こうする事で変数0001番の値が頻繁に変わっても、 知りたかった所の変数0001番の値が変数0101番の値を見る事で分かります。 ●変数の値を画面上に表示 少々手間がかかりますが、画面上に変数の値を表示するイベントを設定して、 どのように変数の値が変化していくのかを調べる方法があります。 ▼表示例(画面の右上に表示) 文章の表示が設定しにくく、また高速で処理されていて、 [F9]による変数の値を調べるのが困難である時には、有効な設定方法です。 ●時には逆転の発想でバグの原因元を探す! 自作戦闘などの複雑なイベント処理を設定している時に、原因不明なバグが発生した場合、 大量のイベント設定を1つ1つ確認してバグの原因元を見つけ出すのは、かなり手間がかかると思います。 このような時にはYADOの場合は、逆に…
つまり意図的にバグを発生させるとしたら、どのような設定を行えば良いのかを考え、 そのバグを起こす方法と同じ設定が無いかどうかを探し出し、バグの原因元を見つけます。 例えば「主人公が動かないバグ」を意図的に発生させる場合は、以下のような方法が考えられます。
バグを引き起こす設定方法を思いついたら、 その思いついた設定方法と同じ設定方法があるかどうかを調べます。
このように原因不明のバグが発生した時には、 「どうしてバグが発生したのか?」を考えるのではなく、 「どうすればこのようなバグを発生させる事ができるのか?」を考えて、 バグの原因元を探し出す事も重要になります。 YADOTのツクールの仕様のページには、RPGツクール2000のマニュアルには書かれていない隠れた仕様も書かれています。 原因不明なバグが発生した時には、ツクールの仕様も確認した方が良いでしょう。 【ツクールの仕様のページを開く】 ▲トップへ戻る▲ ■注釈の活用 ゲーム制作では、1年以上前に設定したイベントを見直す事があります。 これは「制作期間が長くなったため」と言ったパターンもありますが、それ以外に既に公開している作品で、 公開後に見つかったバグの修正やプレイヤーからの要望などによって、イベント設定を修正する事があります。 単純なイベント設定でしたらすぐに修正などができるかと思いますが、 複雑なイベント設定ではイベントの処理構造を理解するだけでも時間がかかってしまいます。 あまり内容を把握せずに無理にイベントを修正してしまうと、それが原因で新たなバグが発生する場合があります。 そのため、自作戦闘などの複雑なイベント設定を行う時には、 イベントコマンド:注釈を使ってイベント実行内容を見やすくすると作業効率が上がります。 ▼設定例
重要な変数の使い道やピクチャーの使い道などを注釈に書いておくのも良いでしょう。 ▼設定例
注釈はあまりたくさん設定し過ぎるとイベント実行内容が見づらくなるため、 ある程度のグループに分けて設定した方が良いでしょう。 YADOTにある絵合わせパズルの注釈の使い方などは、参考になるかと思います。 ▲トップへ戻る▲ ■スイッチ・変数の設定 スイッチや変数の名前には、何に使っているのかがすぐに分かるような名前を付けた方が良いでしょう。 ▼設定例 スイッチ[0001:オープニング終了] スイッチ[0101:map001の宝箱] 宝箱に設定するスイッチの場合、名前は「宝箱」だけでも良さそうですが、 1年後にその名前を見た時に、どこの宝箱で使われているのかが分かりづらくなります。 そのために「map001の宝箱」のように、どこで使われているスイッチや変数なのかが、 すぐに分かるようにしておいた方が良いでしょう。 名前の付け方だけでなく、 使用するスイッチや変数の番号を10番単位に分けて使用すると、より作業効率が上がります。 ▼設定例 スイッチ0001〜0100番:ゲーム全体で使用 スイッチ0101〜0120番:マップ1で使用 スイッチ0121〜0140番:マップ2で使用 このように使用する場所、使用する目的ごとに、10番単位や20番単位で分けて使用すれば、 「マップ2のトラブルだから、スイッチ0121〜0140番を調べよう」 と言った感じに調べる、スイッチや変数の番号がすぐに分かるようになります。 YADOTでも絵合わせパズルやピクチャー弾丸を飛ばすなどでは、 使用する内容に合わせて変数の番号を10番単位に区切って使用しています。 ▲トップへ戻る▲ ■サンプルを使った時のバグ 他人が作ったサンプルイベントをイベント構造を理解せずにそのままコピーして使い、 それでバグを発生させて、質問掲示板にバグの直し方を聞いてくるケースがあります。 「サンプルでは動いているけど、自分の作品では動かない」 と言った場合は、明らかにイベント構造を理解していない事がバグの原因であると言えます。 サンプルの中には、単に変数の番号を「+200番」などにしても正常には動かないものがあります。 説明書が付属している場合は、まずは説明書を見てみましょう。 そして必ずイベント構造(1つ1つのイベントコマンドの設定の意味)を理解した上でサンプルを利用しましょう。 ▲トップへ戻る▲ ◎関連ページ ●ツクールの仕様 ●主人公の移動ができない |