14.戦闘イベントの作成

長らく、「データベース」上での設定作業が続きましたが、ここからは「マップ」上での「イベント」制作が続いていきます。

まずはせっかく「敵キャラ&味方キャラ」の設定をしましたので、その設定内容を確認するのに一番な「戦闘イベント」を作成していきます。
「戦闘イベント」STEP8で行った「マップ間の移動イベント」と同じような1つの「イベント」として「マップ」上に設置していくことになります。

戦闘BGMの設定

まずは簡単な設定で、戦闘用のBGMを1つ設定します。

「ユーザーデータベース」を開き、「15:システム設定」の2ページ目「[戦闘]基本戦闘BGM」に設定します。
「Fileボタン」を押して、戦闘BGMにするファイルを選択します。「BGM/Battle01_Juno.mid」を指定しました。

ここでは、戦闘に関する表示設定やルール設定などができる項目もありますので、好みで設定してみてください。
「戦闘後のHP・SPの扱い」を全快するように設定すれば、ゲームの難易度を手軽に易しくすることができます。

以上で戦闘BGMの設定は完了しましたので、「OKボタン」を押して保存します。

ちなみに戦闘中に再生される各種効果音を変更したい場合には、「ユーザーデータベース 14:画像/音声基本設定」で指定可能です。
今回はデフォルトのものをそのまま使用します。


次にボス戦用のBGMを別に設定します。
ボス戦用のBGMは「システムデータベース 1:BGMリスト」で登録しておく必要があります。

「システムデータベース」を開くには、メイン画面でシステムデータベースのアイコンを押すか、「表示」>「システムデータベース」を実行します。

「1:BGMリスト」を選択し、データ0のIDを「ボス戦」と入力します。
ファイル名はFileボタンを押して「Battle02_Kagamiyomi.mid」を選択します。
これで完了なので、「OKボタン」を押します。

エンカウント方式について

敵と戦闘を行うイベントを作成する前に、一つ決めなければならないことがあります。
なんらかのストーリー上のイベントシーンでそのまま戦闘になる場合もありますが、そこに辿りつくまでの障害となる雑魚敵達との戦闘をどのような形で開始されるようにするかです。

毎回イベントシーンのようにある一定のポイントにいくと雑魚敵が現れて、戦闘が開始されるというのもありですが、一般のRPGでは大きく2種類の雑魚戦を開始する手法があります。

「シンボルエンカウント」「ランダムエンカウント」と呼ばれるものです。
「エンカウント」とはWikipediaによると「遭遇する」という意味の英単語 “encounter” に由来している和製英語だそうですが、ゲームでは「敵と遭遇する」という捉え方になります。

シンボルエンカウント

「シンボルエンカウント」はマップ上を敵キャラ(シンボル)が歩き回っているのが、視覚的にわかるようにし、その歩き回っている敵キャラとプレイヤーキャラが接触することにより、戦闘が開始されるものです。

敵がマップ上で確認できるため、プレイヤーが戦闘するかしないかマップ上で判断できますし、戦闘になった場合の気持ちの準備ができます。代表例は「ロマンシング・サガシリーズ」や「ファイナルファンタジー12・13」などでしょうか。

ランダムエンカウント

「ランダムエンカウント」はマップ上で敵キャラがいるかいないかはわからず、プレイヤーキャラが一歩一歩歩くたびだったり、時間ごとだったりで、戦闘になるかならないかを乱数などで判定して、戦闘を行う判定になった場合に戦闘が開始されるものです。

敵が見えないため、マップ移動中でいつ戦闘になるかというスリルがあります。代表例はやはり「ドラゴンクエストシリーズ1~7」などでしょうか。

ゲーム内でのエンカウント方式の統一

2つの「エンカウント」方法にはそれぞれ特徴があり、場合によって使い分けられればと思うところもありますが、制作上の手間を避ける意味・プレイヤーの混乱を避ける意味でも、ゲーム内で適用する雑魚敵戦闘での「エンカウント」方法を統一しなければいけません。

次の段階ではそれぞれの「エンカウント」方法の作り方を実践していきますので、自分が制作する上でどちらがいいかなど考えていただければと思います。

シンボルエンカウント

マップ上に敵キャラを配置し、その歩き回っている敵キャラとプレイヤーキャラが接触することにより、戦闘が開始されるタイプになります。

「シンボルエンカウント」ではいくつか考えなければならないことがあります。

  • マップ上を歩きまわる敵キャラの移動の仕方をどうするか。
  • マップ上での敵の配置バランスをどうするか。
  • 戦闘で味方が逃走・勝利した場合にマップ上に敵キャラの再配置をするかしないか。

今回は下記のようにしていきます。

  • 敵キャラの移動の仕方は「プレーヤー接近」(イベントがプレイヤーに向かって移動してきます)という移動のさせ方があるので、これを使用。
    凝った作り方をすれば、通常はその場にじっとしてて、プレイヤーキャラが近づくと、急接近してくるなんていう動きも作れたりします。
  • マップ上の配置バランスについては、マップごとに考えることですので、今回試作してみる段階では決めませんが、ある程度プレイヤーの操作で降り切って逃げられるくらいのバランスを心がけるのが良いと思います。
  • 戦闘後の敵キャラの再配置は、再配置せずに一時的に消去するようにします。戦闘を続けていくと、マップ上の敵キャラがいなくなってしまいますが、マップを切り替えることで元に戻ります。

それでは、さっそく「シンボルエンカウント」「戦闘イベント」を作っていきましょう。

「マップエディタ」で森マップを開き、「イベントレイヤー」を選択し、適当なスペースに敵キャラのイベントを配置します。
今回は森の入り口付近にしてみました。

「イベントエディタ」で各項目を設定していきます。

  • 名前は「敵テスト」。
  • 画像は「[Monster]Wolf_pochi」。
  • 移動ルートは「プレーヤー接近」。
  • 移動速度は「1」。
    今回は遅めにしてみます。
  • 移動頻度は「毎フレーム」。
    これ以外の設定だと、移動するたびに立ち止まってしまうので、追いかけてくるような演出のためにも「毎フレーム」にします。
  • 起動条件は「イベント接触」。
  • 接触範囲拡張は場合によっては少し大きくしたほうが良いかもしれません。ただし大きくしすぎると、ゲームの難易度が高くなるので、バランス調整が必要になります。今回は「X:0,Y:0」のままで。

次は右側の「イベントコマンド入力エリア」にイベントコマンドを挿入していきます。
「コモンイベント」を選択し、「イベントの挿入」でプルダウンメニューから「コモン28:バトルの発生」を選択します。

  • 敵グループ番号で出現させたい敵グループを選択します。「森の狼×1」にしてみます。
    「ユーザーデータベース 13:敵グループ」設定の内容が反映されます。
  • 逃走可能は「逃走可能」。
  • 敗北時処理は「ゲームオーバーEvへ」。
    これは後ほど説明します。
  • 戦闘BGMは「デフォルトBGM」。
    「システムデータベース 1:BGMリスト」で設定したものを使用することもできます。ボス戦などは別のBGMにしたりなど。

これで、戦闘を開始するイベントの設定ができました。
設定ができたら、下の「入力」ボタンを押します。

続けて、戦闘イベント終了後にマップ上の敵キャラが消える処理を加えます。
「イベント処理」を選択し、「イベントの一時消去」対象を「このイベント」、フェードを「10」フレームに設定します。
敵キャラが少しゆっくりと消えていくようになります。

設定ができたら、下の「入力」ボタンを押します。

「イベントコマンド入力エリア」には以上の2つのイベント処理が入力されました。
これだけで戦闘を行う敵のイベントは完成です。

さっそくテストプレイをしてみましょう。
敵キャラを配置したイベントから少し離れた場所を右クリックして、「ゲーム開始位置に設定」しましょう。敵に近づいていくとどうなるか見ていきます。

テストプレイはメイン画面の右上のアイコンかイベントエディタの右下のボタンから行います。同時にイベント内容を含んだマップのセーブも行われます。

テストプレイしてみるとプレイヤーが敵に近づいていくと、敵キャラが近づいてきて、プレイヤーと接触して「戦闘イベント」が開始されるのが確認できます。

試しに戦闘をしてみたら、狼は強かったためあっさりとやられてしまいました。
この場合はゲームオーバーのイベント処理が実行されます。
下の画面はサンプルゲームのものが実行されている状態です。

弱い敵に変えてもう一度テストしてみましょう。

バトル発生のイベントコマンドをダブルクリックして「敵グループ番号」を修正します。弱い「スライム×1」にして、「OKボタン」を押します。

イベントをセーブして、もう一度テストプレイをします。
まだテストプレイの画面を開いている場合は「セーブ(マップ全体)ボタン」の方を押して、テストプレイ画面でF12キーを押してリセットで、最初からテストプレイをすることができます。

スライムとの戦闘に変わりました。
スライムは弱いので娘1人でも倒せると思います。

敵を倒すと、イベントが消えていきました。
マップを切り替えるためフィールドマップに移動して森に戻ってくると、敵のイベントが復活しています。

「シンボルエンカウント」では、このような敵キャライベントをマップ上に複数配置していけばいいわけです。

敵キャライベントはイベント上で右クリックして「イベントコピー」「イベントペースト」で複製していくことができます。
イベント上で「Cキー」を押してコピー、貼り付けたい場所をクリックして「Vキー」を押して貼付けが手早くできるので、こちらで慣れるのがおすすめです。

イベントを複製してダンジョンの奥に進むにつれて敵が強くなるように出現する「敵グループ」やイベントの「グラフィック」を変えたりとバリエーションを増やしていきましょう。

ランダムエンカウント

マップ上で敵キャラがいるかいないかはわからず、プレイヤーキャラが一歩一歩歩くたびに乱数で判定して、戦闘を行う判定になった場合に戦闘が開始されるタイプになります。

「ランダムエンカウント」で気を使うのは戦闘を行う判定になる確率のバランスになります。いわゆる「エンカウント率」というものです。
あまりにも頻繁に戦闘開始の判定になってしまうと、プレイヤーはストレスを感じて、ゲームプレイのモチベーションを下げてしまう恐れがありますので、ほどほどのバランスというのを見つけていかなければなりません。

それでは、さっそく「ランダムエンカウント」「戦闘イベント」を作っていきましょう。

「マップエディタ」で森マップを開き、「イベントレイヤー」を選択し、適当なスペースにイベントを配置します。
シンボルエンカウントの時と同じ森の入口付近にします。
シンボルエンカウントの時のイベントが残っている場合は削除します。

「イベントエディタ」で各項目を設定していきます。

  • 名前は「敵エリア1」。
  • 起動条件は「プレイヤー接触」。
  • 接触範囲拡張は「X:20,Y:20」。
    とりあえずこのくらいに設定します。

次は右側の「イベントコマンド入力エリア」にイベントコマンドを挿入していきます。
「コモンイベント」を選択し、「イベントの挿入」「コモン37:ランダムエンカウント処理」を選択します。

この処理では、3つの「敵グループ」を設定し、一定の「歩数」を超えた場合に設定した3つの「敵グループ」の中から1つをランダムで選び、「戦闘」を発生させます。

  • 出現歩数は「30」。
    「30歩」以上歩くと、「戦闘」が発生します。
  • 敵グループ1で出現させたい敵グループを選択します。
    「敵グループ」設定の内容が反映されます。
  • 敵グループ2で出現させたい敵グループを選択します。
  • 敵グループ3で出現させたい敵グループを選択します。
    必ず、3グループ設定する必要はないので、場合によって「なし」にしましょう。

これで、戦闘を開始するイベントの設定ができました。
設定ができたら、下の「入力」ボタンを押します。

「イベントコマンド入力エリア」にイベント処理が入力されました。
「ランダムエンカウント」の場合はこれだけ完成です。

さっそくテストプレイをしてみましょう。
ゲーム開始位置はシンブルエンカウントの時のままになっています。
イベントを配置した場所に近づいていきましょう。
しばらく付近を移動させていると、「戦闘イベント」が開始されるのが確認できます。

「マップエディタ」に戻って、「イベントレイヤー」を見てみると、赤い枠線で「イベントエディタ」「接触範囲拡張」で設定した範囲が示されています。
これがイベント(戦闘)が発生する範囲になり、この範囲外では何も起こりません。

ランダムエンカウントでは、このようにイベントの「接触範囲拡張」で範囲を広げていくか、イベント上で右クリックして「イベントコピー」「イベントペースト」で複製していくかして、敵が出現するマップ全体やマップ中の特定エリアで戦闘イベントが発生するようにしていくことになります。

さて、今回の制作ではこちらの「ランダムエンカウント」を採用していきますので、実際のマップに「ランダムエンカウント」のイベントをどんどん設定していきます。

敵グループの出現内容を変えつつ、4つの出現エリアとして、下の画像のようにイベントを配置しました。
画面の上部・下部の隙間や小川など移動できないところ、マップ移動イベントが配置してあるところには、戦闘イベントは配置していません。

イベントの接触範囲の設定は四角形になるため、マップによってはうまく配置しにくいかもしれませんが、そういう場合は細く区切り、四角形をうまく組み合わせてイベントを配置していけば良いと思います。また、接触範囲はマップ外にはみ出ても問題有りません。

この中で「敵エリア2-2」、「敵エリア4-2」は「敵エリア2」、「敵エリア4」が一つのイベントでうまく配置出来なかったので、細かく分割したものになります。

イベントの内容は「敵エリア2」と「敵エリア2-2」、「敵エリア4」と「敵エリア4-2」で同じに設定してあるのですが、今後イベントの内容を変更した場合に両方を変更するのは少し面倒です。
そういった場合に片方だけ修正すれば済むように設定することが出来ます。

「敵エリア2-2」の場合はイベントコマンドで「コモンイベント」を選択し、「イベントの挿入」で「敵エリア2」を選択し、ページは「1」とします。
イベント選択のプルダウンメニューで「Ev0~」と表記されているものがマップイベントになります。
このようにイベントコマンド「コモンイベント」ではマップイベントを呼び出すこともできます。

ちなみに敵エリアのランダムエンカウント内容はそれぞれこのように設定しました。

「敵エリア1」

  • 出現歩数は「30」。
  • 敵グループ1は「スライム×1」。
  • 敵グループ2は「スライム×2」。
  • 敵グループ3は「なし」。

「敵エリア2、敵エリア2-2」

  • 出現歩数は「30」。
  • 敵グループ1は「スライム×2」。
  • 敵グループ2は「マンドラゴラ×1」。
  • 敵グループ3は「マンドラゴラ×1、スライム×2」。

「敵エリア3」

  • 出現歩数は「30」。
  • 敵グループ1は「マンドラゴラ×1、スライム×2」。
  • 敵グループ2は「蛇×2」。
  • 敵グループ3は「森の狼×1」。

「敵エリア4、敵エリア4-2」

  • 出現歩数は「30」。
  • 敵グループ1は「マンドラゴラ×3」。
  • 敵グループ2は「蛇×3」。
  • 敵グループ3は「森の狼×3」。

敗北イベント

最後に戦闘で味方が敗北した場合の処理を考えていきます。
いくつか考えられますが、3つほど例を上げてみます。

  • ゲームオーバー画面を表示して、タイトル画面に移行。
    ゲームを再開するにはセーブを行ったデータをロードすることになるため、セーブしていなかった場合のプレイヤーの落胆を大きいです。
  • 全回復して特定の場所に移動。
    戦闘で敗北した地点への移動がペナルティとなります。
  • HP1状態でその場に復帰。
    ほぼペナルティはないですが、一度敗北したほどの強敵がいる場所での復帰となるため、回復アイテムや回復能力がない場合は再びの戦闘でまた敗北する可能性が高くなります。

今回は「全回復して特定の場所(今回の設定では自宅)に移動」を採用していきます。

「シンボルエンカウント」の説明で「コモンイベント24:バトルの発生」を設定する際に「敗北時処理」という項目があり「ゲームオーバーEvへ」と設定されていました。
これは戦闘で味方が全滅した際に実行されるイベントを示しています。
この「ゲームオーバーEv(イベント)」「全回復して特定の場所(今回の設定では自宅)に移動」という処理を設定していくことになります。

「ゲームオーバーEv(イベント)」「ユーザーデータベース 17:システム設定」の2ページ目にある「[戦闘]ゲームオーバー時のEv」で任意のコモンイベントを指定することができます。
基本システムではあらかじめ「コモンイベント213:ゲームオーバーイベント」が用意されていますので、このコモンイベントを編集していきます。

いままでは、イベントコマンド「コモンイベント」で呼び出すだけでしたが、今回は「コモンイベント」の中身を編集していきます。と言っても、通常のイベントを「イベントエディタ」で編集するのとそれほど違いはありません。

まずは「コモンイベントエディタ」を開きます。
「コモンイベントエディタ」を表示するには、「ツールバーのアイコン」をクリックするか、「上部メニューの「表示」」から「コモンイベント」を選択することで、表示されます。

びっしりと文字が並んでいてびっくりすると思いますが、余計な箇所を変更してしまわないように注意しながら、左側のリストから「213:ゲームオーバーイベント」を選択します。一番下の方にあるので、スクロールバーで一気に下まで移動させましょう。

右側の「イベントコマンド表示欄」を見ると、デフォルトで文章表示が行われるだけの設定になっています。
これが現在、戦闘で全滅した時に呼び出される「ゲームオーバーEv(イベント)」の内容になります。
ここを「全回復して特定の場所(今回の設定では自宅)に移動」という処理に書き換えていきます。

デフォルトである文章表示処理は不要なので「Deleteキー」「イベントコマンド」を削除します。

新たな「イベントコマンド」を挿入していくため、マップイベントでイベントコマンドを挿入するのと同じように、「イベントコマンド表示欄」の空白部分を「左ダブルクリック」か、下の「イベンドコマンド挿入ウィンドウ表示」を押します。

まずは、戦闘画面からマップ画面に切り替わった直後なので、若干間をとります。
「イベント制御」を選択し、ウェイトを「60フレーム」と入力、下の「入力ボタン」を押します。

次に村マップの自宅のベット横にキャラクターを移動させる処理を入力していきます。

「場所移動」を選択し、対象を「主人公」、移動先を見ながら指定ボタンを押して、「村マップの自宅ベッド横」を指定、場所移動時オプションを「トランジションを行う[暗転有り・遅い]」とします。
設定できたら「入力ボタン」を押します。

あとは、味方全員が復活して、HPとSPが全回復する処理を加えます。
「コモンイベント」を選択し、イベントの挿入「コモン4:回復・ダメージ処理」を選択します。

処理内容は「完全回復」、誰に?は「パーティ全員」とします。
設定ができたら、下の「入力ボタン」を押します。

あとは見映を整えるため、移動先での主人公の向きや仲間の位置などを調整します。

「イベント制御」を選択し、「■キャラ動作指定ボタン」を押します。
これは主人公キャラクターやイベントを移動させたりするのに使用するコマンドです。

主人公の向きを変えるには、「主人公」と選択し、方向転換コマンドで「↓ボタン」を押します。これで主人公に正面を向かせます。
「OKボタン」を押すと、そのままイベントコマンド表示欄に入力されます。

つぎに「パーティ画像」を選択し、特殊処理で「仲間全員を主人公の位置にワープ」とし、「入力ボタン」を押します。
仲間がいて隊列を組んで移動中に「場所移動」を行うとその隊列状態の仲間の位置はそのままで移動されてしまうため、主人公の位置に揃えます。

「イベント入力エリア」は下図のようになっています。
回復の処理はどの位置にあっても構いません。

テストプレイを行うため、このコモンイベントを保存します。
「OKボタン」でも「更新ボタン」でも「テストプレイボタン」でも、それぞれ保存されます。

テストプレイにて、きちんと動作するか確認します。
強い敵がでるエリアまで移動して戦闘で全滅してみました。
無事に村に移動し、全快したのが確認できました。
ちょっと味気ないので、メッセージなど表示しても良かったかもしれませんね。そのあたりのアレンジは自由にやってみてください。

続いて、「STEP15 ストーリーイベントの作成」に進みましょう。

14.戦闘イベントの作成 への6件のコメント

  1. 匿名

    ランダムエンカウントと、ボス戦のみシンボルエンカウントを使っています。
    それぞれシステムとシンボルエンカウントのコモンイベントにてBGMを設定しているのですがどちらも戦闘時に流れません。
    何か解決策に心当たりはありませんでしょうか?

    返信

    1. ぴぽ

      ご質問ありがとうございます。
      以下の項目を確認してみてください。
      ・そのBGMがウディタ上で再生可能なものかどうか確認してみてください。マップ上のイベントでイベントコマンド「サウンド」からBGMを鳴らすようにしてみます。「ファイル名から指定」と「システムDBから指定」の両方を試してみてください。
      ・システムデータベース登録時に再生音量が0%のままではないか確認してみてください。
      ・BGMのファイル名を半角英数のシンプルなものに変更してみてください。日本語などの文字が含まれていた場合に再生されないのかもしれません。
      また、もしウディタを最近リリースされた最新バージョン(1.5系)にしているなら、それ由来の環境依存のバグの可能性もありますので、公式サイトのバグ報告スレッドを利用してみてください。

      返信

      1. 匿名

        返信ありがとうございます!
        マップイベントのサウンドからは無事流れるのですが、その他は改善できませんでした。
        コモンイベントでは何かをいじった記憶はありませんが何かしてしまったのかもしれません…

        また、サポートの方にも書いてしまいました、失礼しました。

        返信

        1. ぴぽ

          サウンドファイル自体には問題なさそうですね。
          一点書き忘れていたのですが、テストプレイで戦闘実行中にF8キーを押すと読み込みデータ画面が表示されます。その画面の左側の「読み込みサウンド」の項目に、再生したいサウンドファイルのファイル名が表示されているか確認してみください。

          あとはおっしゃるように、どこか戦闘時の処理を書き換えてしまったのかもしれませんね。
          コモンイベント「188:X◆戦闘処理」(15行目あたりからがBGMの再生になっています)をウディタの初期状態のものと見比べるか、コピーして上書きするなどしてみてください。

          他に、もし外部のコモンイベントを導入したり、自分で追加しているコモンイベントがあり、起動条件が「並列実行」のものがあるなら、それらを一度削除もしくは起動条件を「呼び出しのみ」に変更してみてください。
          さらにその中に「サウンド」コマンドを実行しているものがあると、それが怪しいかもしれません。

          返信

          1. 匿名

            ありがとうございます。
            前の質問をした後、試しにサンプルデータのコモン188をコピーしてみたら作動したので原因は不明でしたが治りました!
            188を上書きする外部データは読み込んでいないはすなので、何かの拍子で触ってしまっていたんだと思われます。
            ご教示ありがとうございました!!

          2. ぴぽ

            解決してよかったです。トラブルも経験のうちですので、また同じようなことがあれば今回の検証・対処法を活用してみてください。

ぴぽ へ返信する コメントをキャンセル