【プロジェクト:Neith】UI作成、バトルシステム検討〜みんなで作るゲーム制作【4/22(水)6日目】
■各メニュー画面追加!



■バトルシステムを検討した!
■募集中のアイディア
・「古代エジプト編」で発生しそうなイベントを考えてください!
(例:ピラミッドでの修行、ナイル川でのハプニングなど)
(期限:なし。皆さんの自由な発想をお待ちしています!)
おはようございます、「まる。」です!
まずは、昨晩の投稿ができず申し訳ありません!🙇♂️
(実は、記事を執筆している途中で急激な眠気に襲われ、
見事に寝落ちしてしまいました……😴)
昨日は、自作の育成メニューUIと外部アセット「宴3」のシナリオシステムを見事に連携させ、大きな進捗を遂げたネイト。
いよいよ今日からは、アンケートで読者の皆様から圧倒的な支持を得た
「FE(ファイアーエムブレム)形式」の戦闘システムの開発準備にも着手していきます!⚔️
マス目を使ったタクティカルなバトル……
想像するだけでワクワクしますが、
その裏側で作らなければならないシステムは山積みです。
ゲームの華であり、最大の強敵とも言えるこのシステムに、
ネイトはどう立ち向かうのでしょうか?
それでは、開発6日目、スタートです!
二人の茶番
🎧いつもの
アンゴラたちの踊り/作(編)曲 : まんぼう二等兵
• DOVA-SYNDROME公式 作曲者 まんぼう二等兵

「よお、おまえら!
オレだよ、ポマイラ様だ!
みんな、ちゃんと運動はしているか?
ゲームで遊んだり作ったりするのも良いが、たまには体を動かさねぇと、強い男にはなれないぜ?」

「……ふぁぁぁ……。(盛大なあくび)」

「おい、ネイト。
今日はやけにぼんやりしてるじゃねぇか。
どうした?」

「あぁ、ごめんね、ポマイラ。
なんだか今日はすっごく眠くて……
頭がすっかりストライキを起こしてるみたいなの」

「まぁ、なんだかんだで6日連続のぶっ通し開発だからな。
疲れが溜まってもしょうがねぇよ。あんま無理すんなよ?」

「うん、ありがとう。
……とは言え、限られた貴重な開発時間は1分だって無駄にしたくないわ。
という訳で今日は、『どうしても頭が働かない時用の、省エネ開発術』を、私なりのやり方で実践していくわね」

「おっ、そんな都合のいいやり方があるのか!?
そいつは全国のお疲れな開発者たちも必見だな!
ぜひ詳しく教えてくれよ!」
メインストーリーの執筆(アイテムやお手伝いの説明)(20:00-20:10)

「省エネ術って言っても、そんなに難しい話ではないわ。
できるだけ頭をフル回転させずに、手を動かすだけで完結する作業を中心に進めていくの。」

「なるほど、頭脳労働は極力避けるってことか。
でもよ、ゲーム開発なんてほとんどが頭を使う作業じゃねぇか?」

「それは作業の内容と規模によるわね。
というわけで、今回も日課のメインストーリー執筆から進めていくのだけれど……
今日はあえて『文章量の少ないタスク』を選んでこなしていくわ。」

📖今回執筆した内容
ネイト「うーん……」
ポマイラ「どうしたんだ、ネイト。そんなに考え込んで」
ネイト「あ、ポマイラ。」
ネイト「実はね、もっと効率よく特訓できる方法はないかなって。」
ネイト「ほら、特訓って体力を使うから、何度も連続でやるのは難しくて」
ポマイラ「なんとまぁ、自分にスパルタというか何というか……。」
ポマイラ「それなら、買い物に出てみるのも良いかもな。
体力回復とか、何か良いアイテムがあるかも知れないぞ」
ネイト「でも、私アイテムを買うためのお金がないわよ?」
ポマイラ「そういう時は、街に出て『お手伝い』をするといいぜ!」
ポマイラ「体力は使うが、お金を稼ぎつつステータスも少し上げられる
……一石二鳥の方法だぜ!」
ネイト「お手伝いか……分かったわ!
ちょっと見当してみるわね!」

「確かに、普段のネイトの文章量に比べたらかなり短いな。
それに、地の文がなくてセリフだけで作ってるじゃねぇか。」

「ええ。日常的なイベントは、
今後のフォーマットもこんな感じで『セリフのみ』で回していくつもりよ。
よく考えたら、『パワプロ』なんかもほとんどがセリフだけでストーリーを回しているし、
よほど大事な場面でもない限りはこれで十分状況は伝わるわ。」

「それに、すべてのテキストを重厚な長文にする必要はないと思うの。
全部のイベントで全力を出したら、作る側はもちろん、
読む側だって疲れちゃうでしょ?
一番見てほしい『ここぞ!』という場面にだけ全力を注ぐ……
それが私のやり方よ」

「なるほどな! 緩急をつけるってわけだ。
とにかく、これで一応メインストーリー執筆のルーティンは完了ってことだな!」
育成メニュー展開のマクロ化(20:10-20:12)

「次の省エネ術は、『すでに自分が完全に理解している、簡単な作業』をこなすことよ。
当たり前のことかもしれないけれど、頭が働かなくて調子が悪い時だからこそ、
こういう地道な整理作業をしておくと未来の自分がとっても助かるの。」


「というわけで、昨日作った『育成メニューの呼び出し処理』をマクロ化して、
スクリプトからいつでも簡単に呼び出せるようにしておくわね。」

「おお、エクセルでの作業だな!
『特訓』とか『お休み』の分岐も、
If文のコピペと文字の書き換えだけでサクサク作れてるじゃねぇか。
こりゃ頭を使わなくて楽でいいぜ!」

「そうね。 本当に小さなタスクだけど、これを一つ終わらせたことには違いないわ。
千里の道も一歩から……これでまた確実に一歩前進よ!」
バトルシステムの仕様検討(20:12-20:30)

「さて、次は今日から着手する『バトルシステム』の具体的な仕様を固めていくわよ。」

「ちょ、ちょい待ち!
今日は『省エネ』で頭脳労働を避けるんじゃなかったのか?
バトルシステムの設計なんて、一番頭をフル回転させなきゃいけないヘビーな作業じゃねぇか!」

「そうね。
普通にゼロから考えたら、今頃私は知恵熱を出して倒れているわ。
だから……ここで究極の省エネ術!
『思考の外部委託(AI丸投げ)』よ!」

「こんな感じで、Gemini先生やClaudeさんに今の開発状況を伝えて、
叩き台を作ってもらうの。」
■ 実際に投げたプロンプト
以下の記事の続きで、シミュレーションRPGを作成しています。
(記事のURL)
パワプロ風のサクセスシステムで能力値を上げつつ、
FE(ファイアーエムブレム)のようなシステムで戦闘を行う構成です。
このゲームに最適な「ユニットパラメーター」を考え、
それぞれの役割についても検討してください。

「なるほどな!
いつもはネイトが自分でウンウン唸りながら考えてるけど、
今日はAIに先制攻撃を打たせて、自分は『採用か不採用か』をジャッジするだけってわけか。」

「その通り!
AIとの何度かのラリー(やり取り)を経て、
直感的に『これだ!』と決定した内容がこれよ!」
ユニットステータスまとめ
名前
最大HP / 現在HP
ATK(物理攻撃力)
DEF(物理防御力)
魔力(スキル・魔法攻撃力)
耐魔力(スキル・魔法防御力)
スピード(行動順。数値が高い順に行動、同値はランダム)
移動力(移動可能なマス目。クラスやキャラごとの固定値)
器用さ(クリティカル発生率)
運(命中率の補正)
スキル3種(使用回数固定、バトル終了後に全回復)

「次はダメージ計算ね。
これも元々、生成AIたちに検討してもらう予定だった内容だから、
この流れでサクッと形にしてもらったわ。
実際にこの数値でバランスが取れるかは、
構築したあとのテストプレイでじっくり微調整していくことにするわね。」
🔢 バトル計算式の定義
1. 物理ダメージ計算
ダメージ = ATK - DEF (※最低ダメージを1に設定)
例:ネイトのATKが30、敵のDEFが15の場合、
30 - 15 = 15ダメージ。
非常にシンプルで、「特訓でATKを1上げれば、ダメージが1増える」という成長の実感がダイレクトに伝わります。
2. 魔法(スキル)ダメージ計算
ダメージ = 魔力 - 耐魔力
物理と同様の計算です。
回復スキルの場合は、そのまま「魔力の数値=回復量」とするか、
「魔力 × 1.5」など少しボーナスをつけるとバランスが取りやすいかも。
3. 命中率計算
最終命中率(%) = 80 + 運 (※上限100%)
基本命中率を80%とし、「運1ポイントにつき、命中率が1%上がる」仕様です。
これにより、「運が20になれば命中率100%(必中)になる」という明確な特訓の目標が生まれます。
4. クリティカル計算
クリティカル率(%) = 器用さ / 2
クリティカル発生時のダメージ = 通常ダメージ × 1.5倍 (小数点切り捨て)
発動したらラッキー。

「最後は、プレイヤーが実際にどう動くか……『行動ルール』のまとめね。
ここまでくれば私の頭の中でもイメージが固まってきたから、
今度は逆に私が提案した内容を、Gemini先生に美しくまとめてもらったわ!」
📝 戦闘の基本ルール(アクティブフェーズ)
戦闘における各ユニットの行動サイクルは、以下のようになります。
・行動順の決定:
全員の「スピード」を参照し、数値が高い順に行動する。
スピードが同値の場合はランダムで順番が決定される。
・自分のターンで行えること:
以下の「移動」と「アクション」を1セットとして行動します(移動せずにアクションのみ行うことも可能)。
・移動 (Move):
自身の「移動力」の数値分、マップ上のマスを移動できる。
・アクション (Action): ※以下の4つから1つを選択
攻撃: 隣接する敵1体に通常攻撃。
(ダメージ:ATK - DEF / 命中率:80 + 運 / クリティカル:器用さで判定)
スキル: 装備している3種類のスキルから1つを使用。
(ダメージ:魔力 - 耐魔力、または回復など。使用回数を1消費)
アイテム:(バトル中に3回まで使用可能)
所持品を使用(消費して消滅)。
待機: 何もせずにターンを終了する。
主人公ネイトの初期ステータス
物語を切り開く主人公という立ち位置から、前線でしっかりと戦いながらも、
特訓次第でどんな方向にも伸ばせる「万能型(やや攻撃寄り)」のバランスを意識しました。
最大HP: 25(序盤の敵から5回程度攻撃を受けると倒れる程度の耐久力)
ATK: 18 (敵のDEFが10の場合、8ダメージ。数回殴れば敵を倒せる基準値)
DEF: 12
魔力: 15 (スキルもそこそこ扱える数値)
耐魔力: 10
スピード: 15 (味方や敵の基準となる標準的な速さ)
移動力: 4 (タクティカルRPGの歩兵における標準的な移動力)
器用さ: 10 (5%の確率でクリティカルが発生。たまに上振れして嬉しい数値)
運: 10 (命中率90%。基本的には当たるが、過信はできないハラハラ感を残す数値)

「へぇ〜! こうやって数字で見ると、いよいよゲームの骨組みがガッチリ固まった感じがするな。
ネイト、寝ぼけてる割には完璧な仕事じゃねぇか!」
戦闘システムコード作成(20:30-20:45)

「さて、最後はClaudeAIさんに、ここまで決まった仕様をすべて投げてコードの叩き台を作成してもらうわ。
ついでに、具体的な実装手順までドキュメント化してもらうの。」

「生成されたコードのレビューや、実際の実装作業は……明日の元気な私が頑張ってくれるはずよ!
未来の私、ファイト!」
🛠️ 推奨開発手順(AIによるロードマップ)
Phase 1:データ層(土台)
まずゲームロジックの核となるデータ構造体とステータス計算を実装します。UIや宴3とは完全に独立させることで、後の変更に強くなります。
作成するもの:UnitData.cs — ユニットのステータス定義(structかScriptableObject)
BattleCalculator.cs — ダメージ・命中・クリティカル計算(純粋な静的クラス)
SkillData.cs — スキル3種の定義
Phase 2:マップ・グリッド層GridMap.cs — タイルの管理、移動可否判定
PathFinder.cs — 移動力に基づく移動範囲の計算(BFS推奨)
UnitPlacer.cs — ユニットのグリッド上への配置
Phase 3:バトルフロー管理BattleManager.cs — ターン順管理、フェーズ制御
TurnOrderResolver.cs — スピード順ソート+同値ランダム
Phase 4:UIとの接続
既存の TrainingMenuBridge パターンを流用して、宴3と疎結合に繋ぎます。
現在の仕様評価
良い点:ダメージ計算が非常にシンプルで実装しやすく、プレイヤーも成長を実感しやすい
命中率の上限設計(運20で必中)が明確な育成目標になっている
既存のBridgeパターンが整理されていて、バトルシステムとの接続設計がしやすい
注意点:ATK-DEFが負になるケース(最低ダメージ1の保証)を忘れずに
スキル使用回数の保持はバトルスコープ(バトル中のみ)なので、TrainingMenuDataとは別の一時データとして管理する必要あり

「なるほどなぁ。
明日の自分が迷わずに作業を始められるように『最高のパス』を出しておくってわけか。
これなら明日はフルスピードで開発に戻れるな!」
UI作成:ショップ&ステータス画面(20:45-22:00)

「残りの時間は、ゆったりとUI(画面レイアウト)の作成を進めていくわ。
目標は『凝りすぎず、最低限の機能を備えること』。
とにかく、頭は極力休ませて、手だけを動かす作業に徹するの!」
■ショップ画面

■仲間編成画面


「この編成画面には、キャラクターが増えても大丈夫なようにScroll Viewオブジェクトでパネルを作るわ。
でも、今回は横スクロールは必要ないから、Horizontalのスクロールバーは削除して、
Scroll Rectコンポーネントの『Horizontal』のチェックも外しておくのがコツよ。」


「次に、Viewportの子にあるContentオブジェクトにGrid Layout Groupを追加!
これで、配下に置いたオブジェクトがタイルのように縦横へ自動で整列されるようになるの。」


「実際にテスト用のオブジェクトを一つ追加してみて……」


「どのアルカステラか一目でわかるように、ImageとTextを配置して完了!
シンプルだけど、機能としては十分よ。」

■ステータス画面(20:40)

「うーん、まだ少しだけ時間があるわね……。
せっかくだから、ステータス画面も作れるところまで進めておきましょうか。」


「この画面は、演出面でまだまだ遊べる余地がありそうだけど……
今日はここまで!
頭が回らないなりに、かなり形になったんじゃないかしら?」

「お疲れさん!
おいおい、調子が悪いって言ってた割には、
ショップに、ステータス画面まで……めちゃくちゃ進んでんじゃねぇか!」

「ふふ……。
頭が働かない時は、無理にエンジンを回そうとしないで、
自分を労わりながら『簡単な作業』だけをさせてあげる。
それが長く続けるコツなのかもね。」

「体調が悪そうな友達を見かけたら『少し休んだら?』って声をかけるでしょ?
それと同じように、自分自身のこともちゃんと労わってあげなきゃダメよ。」

「なるほどなぁ……。
みんなも、何かを頑張る時は絶対に無理すんなよな!
自分を大切にして、上手に『楽』をすることは、
決して悪いことじゃねぇんだからよ!!」
最後に
かくして、調子が上がらない中でも、自分なりの「省エネ術」を駆使してUI制作と仕様固めをしっかり進めることができたネイト。
1ヶ月という短い期間でゲーム開発を完走するためには、
常に全力疾走するだけでなく、時に手を休め、自分を労わることも立派な戦略だ。
さて、次なる壁は……
いよいよ本格的な実装に入る「戦闘システムの構築」。
まだ見ぬ複雑なシステムという最大の強敵を相手に、
ネイトはどう乗り切るのか!?
次回も、どうぞ乞うご期待!
#プロジェクトNeith #HorizonNotes #ゲーム制作 #個人開発 #Unity #開発日記 #読者参加型 #毎日note
いいなと思ったら応援しよう!
よろしければ応援お願いします!
いただいたチップはクリエイターとしてのゲーム開発に使わせていただきます!
※チップと共にやって欲しい事があったら言ってください!
可能な範囲であれば頑張ります