やさしいウディタ講座30:ゲームオーバー画面を自作してみよう

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

今回は戦闘不能になった後などで表示する、ゲームオーバー画面の作り方について解説します。

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

ウディタのサンプルゲームでゲームオーバーになると…

ウディタのサンプルゲームには戦闘イベントがありますけど、主人公パーティーがやられるとゲームオーバーになったようで…なりません。

ゲームオーバー状態になったら、ウディタ制作者さんが予め用意している「専用のコモンイベント」が呼び出されます。


※ウディタのサンプルゲームDataに用意されている、コモンイベント213「ゲームオーバーイベント」の中身。文章の表示コマンドしかない内容だとわかります。

あくまでもサンプルゲームであるためか、そのままの状態で引き続きプレイできるようなイベントの中身になっているんですね。

ゲームオーバーになったけどならない理由はコレ。

それを普通のゲームのように、「ゲームオーバーになったら専用のゲームオーバー画面を表示させるイベントに仕上げよう」というのが、今回の講座内容です。

上の画像のようなゲームオーバー画面を作ってみます。

「コモンイベント」が便利

ゲームオーバーイベントを作るために、「コモンイベント」を活用します。

戦闘不能だけがゲームオーバーの条件になるとは言えませんよね?ゲーム内容によって、あらゆるシーンで発生する可能性があります。

そのマップでしか発生しない「マップイベント」を利用するよりも、どこのマップからでも呼び出せる「コモンイベント」が最適というわけです。

戦闘不能後のゲームオーバーイベントを作る手順

ゲームオーバー画面の作り方に決まりはありません。今回解説する内容はたくさんあるやり方の中の一つ。シンプルな作りにしてみます。

サンプルゲームのDataを使って解説します。

自作のゲームオーバー用コモンイベントを作る

まず、「コモンイベント画面」を開きましょう。

元々あるサンプルゲームの「213:ゲームオーバーイベント」は一応残しておきます。

自作のゲームオーバーイベントを作るために、下の方の空いている行をクリックした後、画面右側の「名前」の欄に好きなコモンイベント名をつけて登録。

ここでは「自作GAME OVER」にしました。

「メモ」の欄はゲームに影響しません。自分が管理しやすい内容を入力しておくと良いですね。

起動条件は「呼び出しのみ」にします

他のイベントのコマンドから、もしくはデータベースの設定から、このコモンイベントを指定して発生させるためです。必ず「呼び出しのみ」にしてください。

とりあえずこの状態で保存。一旦コモンイベント画面から離れます。

自作のゲームオーバーイベントをデータベースに登録

  • サンプルゲームのData
  • 空データ基本システム入りのData

上のいずれかのDataでゲーム開発している場合、ウディタが予め用意するコモンイベントを使えば、簡単に戦闘イベントが作れます。

この戦闘イベントでパーティーが全滅するとゲームオーバー扱いになるんですが、その瞬間に発生させたいゲームオーバーイベントの設定を行いましょう。

ユーザーデータベース」を開きます。

タイプ一覧から「17 システム設定」をクリック。

画面右側にシステム基本設定の項目がずらりと並んでいます。上のタブから「ページ2」を選択。

[戦闘]ゲームオーバー時のEv」の項目に注目。

ここでパーティーが全滅した後に発生させる、コモンイベントを指定できます。

プルダウンメニューから先程作った「自作GAME OVER」を設定。終わったら画面下部のOKを押して保存しましょう。

これで自動的にコモンイベント「自作GAME OVER」が呼び出されるようになりました。

ゲームオーバー画面のマップを作る

新規でマップを作ります。

作り方の基本は「やさしいウディタ講座1:マップを作ってみよう」を参考に。

今回の例では画面にマップチップを配置せず、ゲームオーバーの文字を「画像(ピクチャ)」で表示してみます。なのでデフォルトの真っ暗な画面のままで大丈夫。

真ん中辺りをダブルクリックして、マップイベントを設置。

名前は「GAME OVERイベント」にしておきましょうか。起動条件を「自動実行」に変更

とりあえず設定はここまで。セーブして内容を保存します。

コモンイベントにコマンドを入力

  • コモンイベント「自作GAME OVER」
  • マップイベント「GAME OVERイベント」

上の2つのイベントを作りました。

これらの内、コモンイベント「自作GAME OVER」に、戦闘不能からゲームオーバー画面へ移動するための、橋渡し的な役割をしてもらいます

コモンイベント「自作GAME OVER」を開き、大きなコマンド欄のスペースに、必要なイベントコマンドを入力する手順をはじめます。

最初に「パーティー全員を透明にする」コマンドを入れる作業から。

これはゲームオーバー画面で主人公キャラなどの姿を見せないようにするためです。やり方によっては不要なんですけど、今回の方法ではちょろっと画面に出てしまうので、不自然にならないようこのコマンドを入れておきます。

イベントコマンド入力ウィンドウを開き、一覧から「E パーティ画像」を選択。

特殊処理」にチェックを入れ、プルダウンメニューから「パーティ全員を透明にする」を選びます。

最後に入力ボタンを押して完了です。

次に、ゲームオーバーのマップへ移動するコマンドを入力します。

G 場所移動」で、今回作ったゲームオーバー画面のマップを選択してください(「移動先を見ながら指定」が簡単)。マップ内の中央付近を移動先にすれば良いかと思います。

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

画面下部のOKを押し、コモンイベントの内容を保存しましょう。

GAME OVERのマップイベントにコマンドを入力する

今回は「GAME OVER」の文字が書かれた画像ファイルを用意。ウディタのDataフォルダ内「Pictureフォルダ」に、用意した画像ファイルを入れておいてください。

「画像作るのめんどくさい」という人は、下の画像をダウンロードして使っても構いません(右クリック→名前を付けて画像を保存)。ご自由にどうぞ~。

A ピクチャ」で、画像を表示するコマンドの入力作業をします。

ピクチャ番号は「主人公キャラの画像よりも上」に、「選択肢ウィンドウよりも下」に画像を表示するため、1~99999の間の数字を指定してください

とりあえず今回は「10」にしてみました(すごく適当)。

また、当講座ではサンプルゲームのDataを使っていることもあり、画面サイズが320×240の環境でやっています。

画像が2倍に引き伸ばされて表示されるのを考慮し、640ピクセル×480ピクセルのサイズで画像を用意。それを50%に縮小し、キレイに表示させています。

ピクチャの設定方法、画像と画面サイズの関係については「やさしいウディタ講座27:ゲーム画面に好きな画像を表示する」を参考にどうぞ。

処理時間を100フレームに設定。これによってマップが表示されたとき、ぼんやりゆっくりとGAME OVERの文字を表示させることができます。ちょっとした演出です。

GAME OVERの画像が表示された後は、「選択肢ウィンドウ」を表示させます。

選択肢ウィンドウの表示を少し遅らせるため、「H イベント制御」で「ウェイト」を入力。80フレーム程度にしておき、入力ボタンを押して完了。

次に選択肢の入力。分岐は「コンティニュー」と「ゲーム終了」の2種類。「キャンセル不能」をONにして、プレイヤーに必ずいずれかの選択をさせます。

セーブデータがあれば、コンティニューからデータをロードしプレイを再開。

無ければゲーム終了を選んで、ゲーム画面を閉じる感じです。

選択肢のコンティニューを選んだ場合には、イベントコマンド一覧「I コモンイベント」から「コモンイベント14:各種メニュー呼出」を入力。

呼び出すメニューを「-1:ロード画面」にして、セーブデータを選べるようにします。

ゲーム終了を選んだ場合は、「H イベント制御」にある「ゲーム終了」コマンドを入力。

ここまでの作業どおりにやれば、以下のようなコマンド欄になっているはずです。

大丈夫そうならマップイベントの内容をセーブしておきましょう。

選択肢ウィンドウの位置をずらす

試しにテストプレイを起動。敵と戦ってわざと負け、戦闘不能になった後が以下の画面。

無事にゲームオーバー画面へ移動しましたが…。

うーん、選択肢ウィンドウの位置がGAME OVERの文字にかかって見苦しいですね。位置を少しずらしましょう

マップイベント「GAME OVERイベント」を開きます。コマンド欄で文章選択肢の前に位置をずらすコマンドを挿入しましょう。挿入したい行を選択した後、右クリックから挿入ウィンドウを開くことが可能です。

イベントコマンド「3 変数操作」でやります。

システムデータベースにある「6 システム変数名」を操作するので、「Sys」のボタンをクリックし、凹んだ状態に変更。

プルダウンメニューから「Sys3:選択肢ウィンドウ X座標」を選択。

演算子を代入の「=」にしておき、右辺の左側部分に手動で好きな数字を入れ、入力ボタンをクリック。これで選択肢ウィンドウの横軸の配置場所を変更できます。

縦軸を移動させる場合は、プルダウンメニューから「Sys4:選択肢ウィンドウ Y座標」を選択。後はX座標と同じように変数操作し入力するだけ。

コマンド欄はこんな感じ。

文章選択肢の前に入力できていれば大丈夫です。

戦闘で負けてGAME OVER画面をチェック

適当な敵との戦闘イベントを作り、わざと負けてみてください。自動的に上で作ったゲームオーバー画面が出るはず。そうなっていれば成功です!

戦闘イベントの作り方は「やさしいウディタ講座8:敵と戦うイベントを作ってみよう」を参考に。

戦闘以外でゲームオーバーにする場合

戦闘以外のイベントでゲームオーバーになった場合も、自作GAME OVERのコモンイベントをイベントコマンドで呼び出すだけ。勝手にゲームオーバー画面のマップへ移動してくれます。

ただ、今回は少しコマンドを工夫します。

ゲームオーバーになる簡易的なイベントを作る

マップ内にある水たまりのマップチップに乗るとゲームオーバーになる、簡単なイベントを作ってみました。

マップイベント名を「気絶する沼」に、起動条件は「プレイヤー接触」、オプションで「すり抜け」にチェックを入れます。

最初に「1 文章の表示」コマンドで、それっぽい感じのメッセージを画面に表示。後は「I コモンイベント」で自作GAME OVERを呼び出せば良いですね。

トランジションで不自然なウィンドウ表示を回避

ところが上で入力したコマンドだけだと、ゲームオーバーマップへ移動する際、ほんの少しの間ですが文章のウィンドウが不自然に表示されてしまいます

これを回避するやり方を色々やってみて、「トランジション」が有効だったので使ってみたいと思います。

トランジションとは、画面が切り替わる際、暗転やフェードアウトなどの演出をさせたいときに使うコマンドです。

文章の表示コマンドの後に入れます。

H イベント制御」から、「トランジションタイプ指定」にチェックを入れ、瞬間表示で20フレームとし、入力ボタンをクリック。フレーム数が多いほど、ゆっくり時間をかけて暗転します。

最後に「トランジション実行」をクリックして入力。これで終わりです。

「トランジション実行」コマンドの前に「トランジション準備」を入れとくと良いかも知れないんですが、テストプレイしてみたところ、あってもなくても結果は変わらない様子だったので今回は省略しました。もし問題が起きたらトランジション準備も入力し、試してみてください。

コマンド欄が以下の内容になっていればオッケー。

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

気絶する沼に主人公が足を踏み入れた途端、文章ウィンドウが表示されてGAME OVER画面に切り替わるはず。不自然に文章のウィンドウが残らず、とても良い感じに仕上がりました。

トランジションの注意点

先程やったイベントコマンド「トランジションタイプ設定」の内容についてなんですが、ここを変えるとそれ以降に発生する「場所移動コマンド」にも影響が出ます

場所移動コマンドで「トランジションを行う」にした場合、トランジションタイプ設定の内容に従って実行されるんですね。


※イベントコマンド「G 場所移動」の場所移動時オプションで設定できるトランジション。

もし影響が気になるなら、以下の方法を試してみてください。

ゲームオーバーのイベント(ここでは「気絶する沼」が該当)でトランジションが用済みになった後、それ以降に実行する場所移動コマンドの直前に、内容を変更したトランジションタイプ設定のコマンドを入力。

…これで大丈夫かと思います。

ただ自分自身、ウディタのトランジション設定については仕組みがよくわかってないので、上の方法で本当に良いのか自信がありません…。それを踏まえた上でやってみてください。

【重要】タイトル画面に移動させなかった理由

ゲームオーバー画面からタイトル画面に移動する。確かに、こっちの方が見栄えは良さそうです。

 

※前回の「やさしいウディタ講座29:超簡単に自作ゲームのタイトル画面を作成」で作ったタイトル画面です。

ただ、このときに問題になるのが、タイトルからニューゲームを始めるパターン

今回のやり方だと、ゲームオーバーから直接タイトル→ニューゲームをはじめた場合、ゲームオーバーになる直前までのデータが引き継がれます

仲間が増えたり、変数の中身が変わっていたりすると、すべてニューゲームに反映されてしまうんです。バグまみれになる危険大!

これを回避するには、データを初期化する必要があります

パーティーメンバーを初期メンバーにして、ピクチャの表示を元に戻し、通常変数などの変数系もすべて初期状態に戻すんです。

すべてを0にすれば良いわけでなく、例えばデータベースに登録した主人公の能力や装備品があれば、スタート時の数値や装備品になるよう調整しなければならないんですね。

データベースの「タイプの内容設定」で初期値を設定し、イベントコマンドの「4 DB操作」で作業すれば簡単に初期化できる部分もあるんですけど、初期化したいデータが多いほど作業に手間がかかります。

一方、セーブデータのロードを選ぶ方法なら、セーブしたタイミングのプレイデータで再開できますので、初期化作業は不要です

ゲーム終了コマンドも画面を閉じればセーブした後のプレイデータはすべてリセットされるので問題なし。再びゲーム画面を起動し、コンティニューやニューゲームからやれば違和感なくゲームが進みます。

そんな理由から、ニューゲームを選べるタイトル画面へ移動させなかったんです。

ウディタでデータの初期化を難なくできる人は、既に上級者レベルに到達している人です。初心者さんがいきなりそのレベルのことをやると挫折するのがオチなので、簡単なやり方から覚えるのがおすすめです。

こういった仕組みを知った上で、ウディタでゲームを作るならどの程度の規模に仕上げ、変数操作をどうするのか?

最初に計画を立てておくと、ゲーム開発が楽になると思います。

次回の講座は?

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

次回「やさしいウディタ講座31:簡単なイベントを作りコモンイベントを学ぶ」では、今回登場したコモンイベントに焦点を当ててみます。簡単なイベントを通じて、コモンイベントに慣れましょう。

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