やさしいウディタ講座12:ループを使ってイベント内容を繰り返す

無料のゲーム開発ツール「ウディタ(WOLF RPGエディター)」の基本的な使い方を、初心者さん向けに紹介するこの企画。

前回「やさしいウディタ講座11:条件分岐&変数で複数イベントを変える」では、前々回講座10で紹介した条件分岐の応用として、複数イベントの内容を一気に切り替えるやり方を解説しました。

今回は、ループ(繰り返し)の使い方についてです。自動でぐるぐるコマンドを実行させるのに便利な機能なんですよ。

「やさしいウディタ講座」- もくじ
現在公開中の講座をまとめたページ。「ウディタのことがよくわからない」「簡単な機能から覚えたい」などの初心者さんは、初期の講座から読むのがおすすめです。
>>WOLF RPGエディター|公式サイト
公式サイトにはウディタの使い方を詳しく解説している、マニュアルやガイドが公開されています。ウディタを学ぶ際の、必須となる教科書です。ぜひ参考にしましょう。

ウディタのループ(繰り返し)とは?

特定範囲内のコマンドを、繰り返し実行する命令のことです。

ウディタでイベントを作る場合、その多くでコマンド欄を埋めていきますよね?文章だったり、変数操作だったり、条件分岐だったり…。

これらコマンドですが、上から順番に実行されるのがウディタのルール

ウディタ コマンド

最後のコマンドまで実行したら、そこでイベントは終了します。

しかし、ループの中に入れたコマンドは違う動きをします。ループ間を何度も繰り返し続けるんです。ループから外に出れば終了、外に出なければずっとそのまま。そんな風にコマンドを実行します。

文章による説明だけだと、わかりにくいかもしれませんね。というわけで、実際にループを利用したイベントを作ってみましょう!

この講座を参考にする前に

このやさしいウディタ講座では「サンプルゲームのData」を使って解説しています。基本的に「空データ基本システム入りData」でやっても大丈夫ですが、後者のDataにはグラフィックなどの素材があまり入っていません。講座の解説どおりにできない場合も考えられます。もし素材が足りなければサンプルゲームのDataフォルダ内にあるものをコピーし、同名のフォルダ内に入れておけば対応可能です。

ループで花の画像を「自動切り替え」し続けるイベントを作ろう

「マップ」と「マップイベント」を用意

ループを使うために、マップとマップイベントを作る準備から。

今回は前々回の講座「やさしいウディタ講座10:条件分岐の基本!イベント内容を振り分ける」で作った、「花」と「魔法使い」のマップイベントを使いまわそうと思います。近くの魔法使いに話しかける度に、白い花→黄色い花へと画像が変化するイベントでした。

ウディタ ゲーム画面

ウディタ ゲーム画面

なので、まず前々回の講座を見て、同じものを作っておいてください

前々回の応用編である、前回講座「やさしいウディタ講座11:条件分岐&変数で複数イベントを変える」のマップイベントを使用しても構いません。

ウディタ ゲーム画面

面倒くさいなー」という人のために。前々回講座で作った、マップイベントの内容を以下に載せておきます。ウディタの使い方を多少なりともわかっている人なら、以下の内容を見るだけでもすぐに作れるでしょう。

ウディタ マップイベント画面

花のマップイベント【ページ1】

ウディタ マップイベント画面

花のマップイベント【ページ2】

ウディタ マップイベント画面

魔法使いのマップイベント

ウディタ コマンド

魔法使いのマップイベント【コマンド欄】

作業が終わったら試しにテストプレイして、イベントがきちんと動くかどうか確認してください。

テストプレイのために主人公キャラの初期位置をこのマップにする場合、「やさしいウディタ講座2:人を配置・看板を調べるイベントの作り方 – 主人公キャラを自作マップ上で操作できるようにする」を参考に、作業してみてください。

コマンド欄にループを入力する

魔法使いに決定キー(Enter)で話しかけると、花の画像がコロコロ変わります。

この処理ですが、マップイベント「魔法使い」のコマンド欄に入力した「条件分岐(変数)~分岐終了」でコントロールしているからです。

ウディタ コマンド

これを囲うように、ループのコマンドを入力するのが今回の目的です。

一番下の空白行にカーソルを合わせ、コマンド欄をダブルクリック。もしくは「コマンド入力ウィンドウ表示」ボタンを押し、コマンド入力画面を開きます。

ウディタ コマンド

左側の一覧から「H イベント制御」を選択。

ウディタ イベントコマンド入力画面

画面右側の上部分に、「ループ(繰り返し)」のボタンが見つかります。これをクリック。

ウディタ イベント制御 ループ(繰り返し)

マップイベントのコマンド欄へ、即座に入力されるはずです。

ウディタ コマンド

ループの中に必要なコマンドを入力する

条件分岐で囲まれたコマンド全体を、ループの中へ入れます

条件分岐(変数):…」の部分をクリックすると条件分岐コマンドの他、分岐後の変数操作コマンドも、いっぺんに選択状態になるはず。

この状態でマウスを右クリックし、「切り取り」を選択。内容が消えてしまうのが怖い場合には「コピー」でも構いません。

ウディタ コマンド 右クリック

続いて、「ループ開始~◇ループここまで」の間にある空白行をクリック。マウスを右クリックし、「貼り付け」を選択。先程切り取った内容が、そっくりそのまま表示されます。

コピーした場合には貼り付け作業が成功した後、コピー元の内容は邪魔になるので削除してください。

ウディタ コマンド

上のようになっていればオッケー。

最初の文章コマンドはループの外に置いておきます。魔法使いに決定キー(Enter)で話しかけたとき、1回だけセリフを言わせるためです。

作業はたったのこれだけ。セーブしてテストプレイしてみましょう。

テストプレイで確認すると…あれれ?

主人公キャラを操作し、魔法使いに決定キー(Enter)で話しかけます。

ウディタ ゲーム画面

あれっ!?画面に変な文章が出てきました

ウディタ ゲーム画面 エラー

『1フレームあたりの処理が500000個を越えました! イベント7 (コモン-1) 10行』

は?何だそれ…。

おまけにゲームが進みません。バグなんでしょうか?

このままではどうにもならないので、ゲーム画面を閉じてください。

エラーになった理由と対処方法

ゲームが進まなくなったのはループが原因。ループコマンドの実行処理が、ウディタの限界を超えてしまったからなんです。

1フレームの処理は50万個が限度

「1フレームあたり」というのは、fpsのことです。60fpsが一般的で、1秒間に約60回の高速処理でゲームの画像を画面に表示しています(パラパラ漫画みたいな感じ)。1秒間60分の1回のことを、1フレームと呼んでいます。

これなんですが、ウディタの場合、1フレームの間に行える処理は50万個が限界。

ループコマンドを入れると、その間は高速で大量に処理し続けます。この処理が多すぎて1フレームあたり50万個を超えるケースが度々起こり、エラーが発生しやすいというわけです

※詳しくは、ウディタ公式のパーフェクトガイド「【「1フレームあたりの処理が500000個を超えました!」と出てきた】」が参考になります。

ループ処理のエラーは「ウェイト」で回避

ループのエラーを防ぐのは簡単。

ウェイト」というコマンドを使うだけです。

ウェイトは待機を意味します。英語の「wait」と同じ。

フレーム単位で待機させる数を指定できます。ウェイトの間は処理をお休みするため、1フレームあたりの処理数が50万個以下に抑えやすくなるってことです。

ところでこのウェイト、「間を置く」演出にもよく使われるんですよ。

  • 歩いているキャラをほんの一瞬停止させた後、振り向かせる。
  • 寒いセリフを言わせた後、気まずそうな間を作る。

なんてことができます。

ウェイトのコマンドを入力してみよう

では先程のエラーを無くすために、ウェイトを入力して対処してみましょう!

エラーの原因である「ループ開始~◇ループここまで」の間に、ウェイトを入れます

コマンド入力の画面を出したら、画面左の一覧から「H イベント制御」を選択。

イベント制御画面の右側、「オプション設定が必要な制御コマンド」の部分にある、「ウェイト」をチェックしましょう。

ウディタ イベント制御 ウェイト

フレーム数はお好きなように。

ちなみに今回入力するウェイトは、ループのエラー対策だけが目的ではありません。花の画像の切り替え速度にも関係するんです

小さな数字なら高速で画像が切り替わります。大きな数字を入れるほど、画像の切り替わりはゆっくりです。

この辺の感覚についてはテストプレイで確かめるのが一番。実際のゲーム画面で処理速度を見ながら、ウェイトのフレーム数を微調整してみてください。

作業が終わったら入力ボタンをクリック。これでコマンド欄への入力が完成。

以下の内容になっていればまず大丈夫です。

ウディタ コマンド

セーブしてテストプレイしてみてください。

魔法使いに話しかけてもエラーが出ず、自動で花の画像が白い花→黄色い花へと、何度も繰り返し切り替わると思います。

確認できたら、ウディタのゲーム画面を閉じましょう。

ループさせる回数を決める

ループが終わらない…

白い花→黄色い花へのループが完成しましたね!しかし気になる点が

ループの実行中、主人公キャラを操作できなくなっていると思います。また、花の画像もずーっと繰り返し切り替わるばかりで、終わりません

ウディタ ゲーム画面

これなんですが、無限ループ状態になっているのが原因です。

ただ単にループコマンドを入れただけなので、魔法使いに話しかけた後、バカの一つ覚えみたいにウディタがコマンドを実行し続けます。

ループの止め方には色んな方法があるんですけど、ループさせる回数をはじめに決めてしまうのも一つの手段です。

この方法は簡単なのがメリット。ウディタ初心者さんでも理解しやすいと思います。

ループを「回数付きループ」に変更

マップイベント「魔法使い」のコマンド欄、一番下の空白行をダブルクリックして、コマンド入力画面を開きます。

ウディタ コマンド

H イベント制御」を選択。

回数付きループ」にチェックを入れ、繰り返したい数字を入れてください。終わったら入力ボタンをクリック。

ウディタ イベント制御 回数付きループ

続いて、コマンド欄での作業です。

ループの間に入れてある「条件分岐」「変数操作」「ウェイト」のコマンドを切り取り。「回数付きループ(数字)回~◇ループここまで」の中へ貼り付けます。

ウディタ コマンド

前のループコマンドは不要なので、選択したらDeleteキー、もしくは右クリックの「削除」で消します

以下のようなコマンド内容になっていれば大丈夫。

ウディタ コマンド

作業を終えたらセーブし、テストプレイで確認。

魔法使いに話しかけましょう。

花の画像が交互に変わるまではループと同じですが、回数付きループで指定した数だけ画像が切り替わったらそこで止まり、イベントが終了するはずです。

イベント終了後は、主人公キャラを自由に操作できます。

ウディタ ゲーム画面

次回の講座は?

やさしいウディタ講座12はここまで。

次回「やさしいウディタ講座13:ループの「中断」と「開始へ戻る」の使い方」は、ループ(繰り返し)コマンドの続き。今回紹介しなかった「ループ中断」と「ループ開始へ戻る」のコマンドについて解説します。

本当は今回の講座で一緒に紹介する予定でしたが、詰め込みすぎになるので分けることにしました。

ちなみに次の次「やさしいウディタ講座14」でも、ループの使い方を紹介する予定です。今回の講座で作ったマップイベントを再利用するつもりなので、消さずに残しておくのがおすすめ。マップイベントを作る手間が省けますよ。

「やさしいウディタ講座」- もくじ
※全講座の目次ページはコチラ。