【プチコン講座】ボス以外のエネミーの実装とバトルのバランス調整:前編

プチコン

プチコン バトルリザルト

こんにちは。継続の錬金術士なおキーヌです。

ブログ毎日更新は159日目になります。

前回「【プチコン講座】ATB風バトルシステムを構築しよう:後処理編」でバトル終了後の後処理をしました。

一通りのシステム作りは終わったので後はエネミーのバランス調整をして、
最後にボスバトル、つまり普通のバトルとは違う特殊な処理を実装します。

ボスとゲームクリアを実装すればゲーム完成まであともう少しです!

バグを発見したのでお詫び@2019/06/07現在

いつもブログをご閲覧いただき誠にありがとうございます。

前回のコードにバグがありましたので、今回の記事末に記載しているコードで直しています。

  • バトル終了後にフラグ切り替えをイベントシーンではなくマップシーンにしていた
  • エネミーステータスの開始位置が0からになっていた
  • ダメージポップアップが次のバトル開始時に表示されてしまう
  • バトルが終了してもATB風ゲージがリセットされない
  • 経験値獲得が1つ先のデータを参照している
  • その他細かい記述ミス

落ち着き次第講座のコードを修正していきます。

それでは気を取り直してプチコンでRPG作り第27回目を始めましょう。

バランス調整を行う

冒頭でもいいましたが、現在のエネミーのステータスが配列の0から始まっています。

なのでデータを参照するときはデータの先頭にダミーデータを入れるか、
取り出す時に参照をマイナスしてずらすかで対応します。

今回はダミーデータを入れました。

データは後ほど書きます。

それではまずはエネミーのステータスバランスがテキトーすぎるのでバランス調整をしましょう。

初戦のリトルバットは必ず倒さなければ進めません。

そして手前にライフポーションが入った宝箱がありますね。

リトルバット戦+ライフポーションは、いわばバトルチュートリアルみたいなものなので
意外とぎりぎりな戦闘にしても良いかもしれません。

初戦だからすぐ終わる戦闘にしてしまうと、
後にどう戦っていいか判らず疑似的に難易度を上げてしまいます。

なので初戦のリトルバットはギリギリで倒せて、
次にそのままバトルに突入しても2撃ぐらいは耐えられるように調整するのがベストでしょう。

慣れてない人はリトルバット戦でポーションを使わせて、
後に温存していた方がいいと気付かせるのもいいですね。

個人的にゲームのチュートリアルはチュートリアルと気付かせないぐらいがちょうどいいと思います。

最近のゲームはシステムが複雑すぎたりするので強制チュートリアルをやらされることが多いです。

スマホゲーによくありますね。

私がプレイしてすぐやめるのは大抵チュートリアルが冗長すぎるやつですね。

それぐらいしないと苦情が来る世の中なのでしょうか……

持論ですが、ゲームは自らの意思でやってるんであってやらされてる感が出てしまうとダメだと思います。

しかし課金ゲーが流行ってる今、リアルで求められているのはシビアなゲームではないのかもしれません。

異世界転生チートモノが流行ってるのを見るとゲームまで苦労したくないというのが強くなっているのでしょう。

世間を取るか、自分を貫くかは収益や現実的なことを考慮して決めたほうが良いですね。

一概にシビアなゲームが正しいというわけでもないので、
そこはプレイ層に合わせて作るのがベストでしょう。

それではエネミー1体ずつ調整と用意していないイベントの実装をしていきます。

リトルバットの調整

リトルバットはすでに実装済みなのであとはパラメーターの調整ですね。

プレイヤーの初期ダメージ範囲を1〜3だとすると遅くても
5・6回ぐらいの攻撃で倒せるのがちょうど良さそうなのでHPを7ぐらいがベストでしょうか。

攻撃はプレイヤーのHPが20なので3〜6ぐらいの範囲のダメージを受けるとよさそうなので、
プレイヤー防御力2に対してリトルバットの攻撃力は5でしょうか。

これに乱数を1〜3加えれば3〜6のダメージが実装できます。

防御力はダメージが1〜3なのでプレイヤーの攻撃力と同じ3でいいでしょう。

素早さに関してはまだ効果がないのであとで調整します。

経験値はリトルバットを基準にしたいので10にしましょうか。

経験値テーブルもあとで作ります。

……エネミーのステータスを見返してみると1つ余計な値を持っていますね。

せっかくなので特殊攻撃フラグとして使ってみるのもいいかもしれません。

とりあえず一旦はスルーしておきましょう。

以上のことをまとめるとリトルバットのステータスは以下になります。


@ENEMYPARAMS
DATA 1,7,5,3,1,0,10
~~~ 省略 ~~~

ゴブリンのイベント実装と調整

やっとリトルバット以外のモンスターを実装できるようになりました。

特殊攻撃がないので、結局愚直パンチエネミーになっちゃいます。

ゴブリンは攻撃が強めで防御が低めにしたいと思います。

攻撃が高ければ先手必勝で被ダメを少なくして倒すことが出来るようにしましょう。


@EVENT002
DATA 2, 4,2,0,  0,1,1

@ENEMYPARAMS
DATA 1,7,5,3,1,0,10
DATA 1,20,13,2,3,0,20
~~~ 省略 ~~~

マミーのイベント実装と調整

マミーは4つ目のイベントなのでDATAは1つ飛ばして作りましょう。

ゴブリンとは対照的に防御とHPが高く耐久度の高いエネミーがいいですね。

攻撃があまりあがらなかったらコチラを倒せばゴブリンを楽に倒せるようにしたいです。

攻撃は高くないので、ちょっと泥仕合になりますが確実に勝てます。

かといって弱すぎたら面白くないのである程度の攻撃力はもたせましょう。

ゲーム側としてはユーザーにポーションを使わせたら勝ちです。


@EVENT004
DATA 2, 4,4,0,  0,1,1


@ENEMYPARAMS
DATA 1,7,5,3,1,0,10
DATA 1,20,13,2,3,0,20
DATA 0,0,0,0,0,0,0
DATA 1,25,7,8,3,0,30
~~~ 省略 ~~~

スケルトンのイベント実装と調整

スケルトンはボスのゴーストを倒すせいすいをまもっています。

リトルバットを倒してから挑めますがまず勝てません。

ゴブリンとマミーを倒してやっと倒せるといったバランスが良いでしょう。


@EVENT003
DATA 2, 4,3,0,  0,1,1


@ENEMYPARAMS
DATA 1,7,5,3,1,0,10
DATA 1,20,13,2,3,0,20
DATA 1,30,15,8,3,0,40
DATA 1,25,7,8,3,0,30
~~~ 省略 ~~~

ゴーストのイベント実装と調整

ボスの設定ですが、他のエネミーと同じやりかたで大丈夫です。

せいすいがないと倒せないようにするのは別のところで記述するためとりあえず能力設定しておきましょう。


@EVENT005
DATA 2, 4,5,0,  0,1,1


@ENEMYPARAMS
DATA 1,7,5,3,1,0,10
DATA 1,20,13,2,3,0,20
DATA 1,30,15,8,3,0,40
DATA 1,25,7,8,3,0,30
~~~ 省略 ~~~

ここまで調整しながらプレイしてみましたが、かなりシビアなゲームになりました。

初回のリトルバットで攻撃も防御も1しかあがらないとほぼ詰みのクソゲーですね(笑)

プレイヤーの能力の上げ幅を増やすかエネミーを弱体するか、
リトルバット以外のエネミーは倒したらポーションを入手できるようにするかバランスを取らないときついですね。

私はリトルバット以外戦闘終了後にポーションを手に入れるようにしました。

宝箱イベントを流用すれば手に入れられますね。

今回の設定したデータをまとめてみましょう。


@EVENT001
DATA 3, 4,1,0,  2,0,1,  0,1,1

@EVENT002
DATA 3, 4,2,0,  2,0,1,  0,1,1

@EVENT003
DATA 3, 4,3,0,  2,0,1,  0,1,1

@EVENT004
DATA 3, 4,4,0,  2,0,1,  0,1,1

@EVENT005
DATA 3, 4,5,0,  2,0,1,  0,1,1


@ENEMYPARAMS
DATA 1,7,5,3,1,0,10
DATA 1,20,13,2,3,0,20
DATA 1,30,15,8,3,0,40
DATA 1,25,7,8,3,0,30
DATA 1,40,13,10,3,0,30
~~~ 省略 ~~~

──ソースコードは一旦完成してから修正したいと思います。

ボスまでいきたかったですが、思いのほか時間が取れずバランス調整だけになりました。

それでは。