自分のゲームのために必要なバトルシステム
研究しよう
仕組みだけじゃ面白くないから見た目は猫にしよう
猫の冒険。いいじゃないか。猫がRPGでバトルする。猫には平穏でいてほしいけどゲームの中だからよしとしよう。
Contents
デモないの?
完成してないんだからあるわけないやろが!しかしこういうのを作りたいというイメージは作ったから見せよう。

Photoshopで完成のイメージを描いてみた。ざっくりこんな感じ。
味方が三人で、敵は4匹まで出現可能。
システム的にはドラゴンクエスト2が近いのかな?
まあ典型的なターン制RPGのバトルシステムである。このシステムを構築できれば今後自分の本当に作りたいRPGでも考え方とか作ったコードとかがきっと十分に生かされることだろう。だから作りたい。
ロードマップ(20240917時点で更新中)
いきなり完成に向けて全方向から取り組むのは無謀に思えたので戦略を考えた。
最低限の機能から少しずつ拡張していって最終的に理想の完成形に持っていくというやり方だ。
Unityでこのゲームを作る工程のざっくりなステップを考えるに
- キャラのドット絵アクション、アニメーションを作る
- ピクセルフォントの導入
- インプットシステムの全体構造を考える(MVVMパターン)
- コントローラーからの入力を受け付ける
- キャラを移動操作できるようにする
- キャラのステータスを作って表示できるようにする
- ダイアローグの表示の実装
- コマンドの仕組みの実装
- 敵キャラの作成
- 1対1の戦闘を実装。。。しない。エンカウントしたらバトル開始して即勝利して終了。ゲームクリア!
この時点ではエンカウントした瞬間ゲームクリアという酷い仕様。バトルもないなんて酷いもんだけどまず画面に何か表示させるのが大事だから。本当に最低限のレベルでゲームが成立する状態。だけどそれを実装するだけでも大変だ。あの電柱まで行かんと。
必要なクラスの構成を考えた
正解はないと思うので自分なりに用意しないといけなさそうなクラスを考えた。
CoreManager
- シングルトンにしてどこからでも参照できるゲームのいわば管制塔。
- フィールド、戦闘、メニュー画面、ショップとかのゲームの状態を管理する
- 進行フラグの状態、キャラのステータスとかのセーブデータもここで更新・管理する
InputController
- CoreManagerが切り替えているゲームの状態を検知して(フィールド移動、戦闘、コマンドメニューなど)それぞれの場面に応じて適切にコントローラーの各ボタンの動作を切り替える。
StoryManager
- GameManager直属部下でのゲームの開始から終了までの状態を管理するクラス。
- 部下にバトル、フィールド、ショップ、メニューなどの管理クラスを抱える板挟み中間管理職
FieldCoordinator
- フィールドの状態を管理
- バトルのエンカウントの検知
- 扉や、宝箱などフィールド特有のイベントの実装(このゲームだとないかもだけど)
BattleCoordinator
- バトルの進行を管理
make inputMode Interface
- define all buttons
- make filed input mode
- make vertical menu input mode
- make matrix menu input mode
- make horizontal input mode
locomotion
- implement walk animation
- write circle input method
- make player class
- let player move holizontally
dialog ui
- make dialog ui view
- make party class
- make Member Class
- make CharacterBase class as abstruct and properties as of now
- hp
- mp
- attack
- defence
- exp
- money
- make