どうも、こんにちは。
メインストーリー等のテキスト部分が思うように進まずにぐだぐだしているので、頭の中にあるゲーム部分のダンジョン攻略、戦闘システム等について書き起こして実装の仕方を考えてみる。
テキストもいざ書いてみると難しいことだらけ……
現在の戦闘の仕様
超初歩的なシステム
今実装している戦闘はRPGツクールの初期状態のフロントビューのターン制戦闘であり、ダンジョン内のシンボルエンカウントのモンスターに触れると戦闘という超初歩的なスタイルである。
戦闘部分を標準にしていた理由は、「ありとあらゆるノウハウが一切ない1作目から気合を入れ過ぎると力尽きてしまい、完成しないかな」という想いが強かった。
その代わりと言っては何だが、成長システムとして砂川赳様の多重職業によって自由度の高い成長システムを実現【RPGツクールMZプラグイン】を使わせていただき、ジョブ的なものを成長させて覚えたスキルやパッシブスキルをコスト内で付け替えできるようにして少しでもゲーム性を出そうとしていた。
メリット
- 標準の戦闘システムを使うのでその部分は実装する必要がない。
- ダンジョンの実装もマップに適当に敵を配置するだけなので楽。
- プレイヤー側も慣れ親しんでいるので特に説明もいらず、とっつき易い。
デメリット
- ダメージの計算式でのバランス調整が難しい、直感的ではない。
- レベルアップのバランス調整も難しい。
- エロRPGなのでレベル上げの苦労などをさせたくはないが、バランス調整がうまくいかないとただボタンを連打しているだけのゲームになりやすい。
- バランスがちゃんとしていても面白いのかよくわからないものに対して苦労することへのストレス。(制作のモチベーションに関わる)
- まとめるとゲーム性を出すのが難しい。
解決法を考えてみる
- ダメージのバランス調整が難しい。
→計算式でバランス調整が難しいなら、敵もプレイヤーも基本防御力を0にし1~2桁の固定ダメージでのバトルにすればよい。(戦略性はあるシステムにする)
- レベルアップのバランス調整も難しい。
→レベルアップの概念を無くし、拠点に持ち帰った経験値でパッシブアビリティ的な物を選んで強化できるシステムにすればよい。これにより際限なくレベルアップしステータスが上昇することを抑え、プレイヤーの上限の強さを調整し易くなる。
新しい戦闘の仕様(妄想)
Slay the Spire風
これらのことを踏まえて、コマンドバトルのままなんちゃってSlay the Spire風(※)のシステムを実装できるかを考えた。
※Slay the Spire
今更私が説明する必要ないかもしれないSteamの超有名ゲー。
めっちゃ面白い。
私が今までプレイした同人エロゲでは、以下の2つの作品がカードバトルも再現したSlay the Spire風の戦闘システムであった。非常に面白かったのでオススメ。
サキュバス☆コネクト!!
Lost Chapter
Slay the Spireから取り入れたい要素
- 戦闘で1ターンに好きなだけ行動できるようにするが、1つ1つの行動をスタミナ(エナジー)消費制にする。
- 相手の行動を予測表示にし、防御等の価値を上げて戦略性を生む。
- HPの価値を高めるために、ダンジョン攻略中のHP回復行動を貴重にする。
- ランダムなダンジョンとランダムなイベント、どのルートを通るかある程度自分で選べるようにマップを用意。
実装方法を考える
『スタミナ(エナジー)消費制』の実装について
この仕様の実装は既にあるプラグインのおかげでそこまで難しくなさそうだ。
1,Ruたん様のTorigoya_QuickSkill を使わせていただき、ターン消費なしスキルを実装し通常攻撃も全てコレにし、消費MPを設定する→MPを消費しきるまで行動し放題になる。
2,毎ターンMPを全回復する設定をアクターにつける。
この2つの実装で、疑似的なスタミナ(エナジー)制にできるだろう。
ただし、このままでは強いスキルを打つだけのゲームになってしまうため、そのターンにスキルを使用できるかをスキルごとに乱数で管理し、カードバトルのランダム制(ドロー)を疑似的に再現する。
例:
主人公の最大MP3
スキル【通常攻撃】
100%の確率でスキル欄に表示され6ダメージ。消費MP1
スキル【正拳突き】
60%の確率でスキル欄に表示され15ダメージ。消費MP2
スキル【力を溜める】
30%の確率でスキル欄に表示され次の攻撃のダメージを2倍にする。消費MP1
スキル【防御】
100%の確率でスキル欄に表示され6ダメージ防ぐ。消費MP1
このような形でスキルを実装していき、毎ターンランダムな選択肢から最適解をプレイヤーが考えて行動する楽しさを用意する。
確率でスキルを使用可能にする処理は、さすらいのトム様のスキル使用条件拡張 - ExtendSkillCondition.jsの変数が~より高い時の条件を利用させていただくことで実装可能だと思う。
また、変数の中身に乱数を入れる処理を戦闘開始時とターン終了時に行う。
戦闘開始時に乱数を入れる処理はmunokura様の戦闘開始/終了コモンイベントMZプラグインを利用させていただくと、戦闘開始時にコモンイベントで変数に乱数を代入することができそうだ。
『相手の行動の予測表示』の実装について
tomoaky様のエネミー行動予測 - TMFutureSight.jsを利用することにより行動は表示可能だが、こちらはRPGツクールMV用のためMZで動かすと一部機能が使用できなかった。
シンプルなコードのようなので、出来るか分からないが内容を見てMZ用の改変に挑戦する予定。
もしコードの改変が上手くできなくても、力技になるが敵用のスキルとしてスキル名を「攻撃 6」、「攻撃 10」のようなスキルをたくさん用意し、攻撃ダメージまで予測できるようにすることは可能。
『HPの価値を高める』の実装について
ダンジョンに持ち込める消費アイテムを1度に3個等に制限することで、消費アイテムの価値を上げる。また、強さのバランスも調整しやすくする。
ダンジョン内で手に入れたアイテムでやりくりすることでローグライク感を出す。
またダンジョンのランダムイベントの当たりとしてHP回復を実装する。
『ランダムなダンジョン』の実装について
完全に動的なランダム生成にすると、難易度調整込でRPGツクールでの実装が難しいため10パターンくらいマップを用意してそこからランダムで選ばれる疑似的なランダムダンジョンとする。
起きるイベントや出てくる敵に関してはランダム性を持たせ、同じダンジョンマップを引いたからといって必ずしも同じことが起きるわけではなくする。
この仕様にすれば、特にプラグインを使わずとも実装可能だろう。
考えてみた感想
実際に遊んで面白くなるかはわからないが、作るスキルの内容などを考えるだけでワクワクするので戦闘面を作る楽しさが自分にとって増加すると思う。
作ることが楽しい仕様の方が結果的に速く完成する可能性も高いので、今日明日から実際に実装に向けて動いてみる。
Slay the Spireをやったこと無い人は、ゲームの全体像がピンとこないかもしれないが完成したら実際のゲームの流れを動画か何かで公開したい。
今日はそんなところで終了。