ステージの自動生成は偉大【今日の研鑽2020-02-07】

ステージデータのボリュームアップに苦戦しそうでしたが、自動生成に任せることに。シンプルな構造しか出来てませんがバランス調整とか考えるとかなり楽ですね。1Waveで終わるの前提の作りになっているところを修正する必要がありますが、差し引いてもお釣りもらえそう

寝起き

きのう、少し遅く(と言っても1時半ぐらい)まで起きてたんですが、起きる時間がガッツリ遅れてしまいました。完全におっさんの体力ですわ・・・。

起きて自分にがっかりしてしまいました。

回廊少女

だいぶそれっぽくなってきたので、いよいよステージの自動生成でも作るとしましょうかね。

ステージの自動生成

自動生成を行うに当たりとりあえず必要そうな要素を上げてみる

  • 全長
  • 各イベントの含有量
  • 締めに固定イベントを行うか
  • 分岐を作るかどうか
  • 分岐を作る場合はどのぐらい分岐するか
  • ループ状の場所をつくるか

マップは左に伸びていく形をメインにして、基本直線でまずは作ろうかな。上3つはおそらく必須だと思うので、ゴール属性のある戦闘(ボス戦)みたいなのは作りたいと思いいます。分岐はシンプルなものでもあったほうが飽きづらくて良さそうな気がするので可能なら入れたい。ということで、

1.指定した長さのマップを作る(直線でOK)
2.回廊イベントを割合で付与する
3.ゴールにボス戦を入れて、倒したらクリア

この順番で作りたいと思います。3に関してはそもそもそんなものなかった気がするけど?というものですが、気にしない!

指定した全長のステージを作る

実際に自動生成する前にマスターデータもいじらないと行けないですね。masterstageにlengthフィールドを追加。いったんなにもない長さだけのステージを作る。特に凝ったこともせず、左に延々と伸びていくステージを作成。

出来たけど、マジで味気がなさすぎて泣きそう

回廊イベントを割合で付与

以下のようなデータを新たに作成。ステージごとに重みに反応してイベントを引っ張り出す処理にしました。まぁお約束ですね。

で、データ作成の最中に思いついたのが、ステージに対してwaveをいくつか配置する形を取ろうかと思います。いったん1waveだけでしか対応出来てないので分布チェックなんかを行って、問題ないのを確認してからwaveをまたぐ処理を追加しようと思います。

ステージにwaveの概念を取り入れる

さーて思いつきで実装することになったけど、敵のレベルやアイテム出現などの段階を設けるには実はかなりあってるのでは?と思い実装することに。

waveを分岐にも使いたいとか思ってましたが、とりあえずは単純に分けるだけで使います。迷路も擬似的に作れそうだし拡張性は高そう。

ちなみに現状としては第1waveでカード補充をして、第2waveで戦闘が多いとかそんな感じにしてみましたが、わりと良さそう。強制戦闘とかをハサミたいので新しいイベントを作る必要がありそう。


本当に今月リリースするつもりなのか?ってぐらいここ数日内の仕様変更回数が多い。まぁいい方向になってるとは思うので