【個人ゲーム開発38日目】戦術SLG制作

「負けた。」

38日目は、ゲームに負けた日でした。

MISSION FAILED。
自軍の拠点を敵に占領されて、敗北しました。

ユニットは4体全員生存。戦力は開始時と変わらず100%。
完璧な状態のまま、拠点を取られて終わりました。

実装してから初めて出た「負け」の画面です。
悔しいより先に、「ちゃんと動いてる」という安堵がありました。


■ DEMOバグ修正・v1.0.1リリース

Xのフォロワーから詳細なフィードバックをいただきました。

「初級をクリアしたら中級を飛ばして上級に進んだ」という報告でした。

再現を試みると、「保存せずに進む」を選択した場合にのみ発生することが判明。
原因を追うと、ProceedToNext() が2回呼ばれていました。

Unity Input Systemの仕様で、ボタン表示のタイミングによってクリックイベントが貫通することがあります。
セーブパネルが表示された瞬間に、前のボタンへのクリックが「保存せずに進む」ボタンにも届いていました。

修正は _isProceeding フラグを1つ追加するだけでした。
シンプルな解決策ですが、原因特定まではかなり時間がかかりました。

その他、READMEにマップスクロール操作(右ドラッグ)の説明と、初回起動時のWindowsセキュリティ警告の対処手順を追記し、v1.0.1としてBOOTH・itch.ioを更新しています。

フィードバックをくださった方には、修正報告のリプライを送りました。
「遊んで報告してくれる人がいる」というのは、開発の大きな励みになります。


■ フリーゲーム夢現に投稿しました

国内向けのプロモーション展開として、フリーゲーム夢現にDEMO版を投稿しました。

投稿後、当日中に審査が通りました。
思っていたより早かったです。

週1本の制限があるサイトなので、更新頻度には注意が必要です。
BOOTHを正式配布場所として案内するテキストを掲載し、導線を整えています。


■ 中立ユニット占領システム完成

Steam版開発で進めていた中立ユニットシステムが、本日で完成しました。

Step2:自軍化座標への通行制限

制圧前の自軍化座標は、占領能力を持つユニット以外が通行できません。
Pathfindingの移動コスト計算に IsActivationCoord() の判定を組み込みました。

また占領可能ユニットは、その座標に到達した時点で移動が強制停止します。
通過してしまわないよう、ZOCと同じ仕組みで探索をそこで打ち切っています。

敵ユニットで囲むことで座標への進入路を塞ぐ、といった防衛戦術が生まれます。

Step3:旗ビジュアルと点滅ホバー

自軍化座標に旗を立てました。
2枚のスプライトを交互に切り替えるぱたぱたアニメーションで、グループ識別のためにギリシャ文字(α・β)をテキストで重ねています。

旗にカーソルを乗せると、関連する中立ユニットが点滅します。
「この旗を制圧するとこのユニットが動く」という情報を、プレイヤーが直感的に把握できるようにしました。

制圧完了と同時に旗は消えます。

実装中にいくつかバグも出ました。
GetNeutralUnitsAt() がリストの参照をそのまま返していたため、ホバー処理の Clear() で内部データが消えてしまう問題がありました。
new List<>() でコピーを返すことで解決しています。

地味ですが、見落とすと再現性のないバグになります。


■ 敵AIの拡張

占領システムに連動する形で、敵AIを拡張しました。

新しいAIパターン CaptureFirst を追加し、占領優先の行動ロジックを実装しています。

Aggressive + canCapture=true
→ 自軍化座標があれば占領を優先。攻撃はしない。
→ 座標がすべて制圧済みになったら通常の突撃行動に切り替え。

CaptureFirst + canCapture=true
→ 占領優先は同じ。
→ 座標消滅後は、プレイヤーの拠点を直接目指す。

さらに、敵が自軍化座標を制圧した場合、そのターン内に中立から敵化したユニットが追加行動を取るようにしました。
「制圧した瞬間に増援が動き出す」という緊張感が生まれます。


■ スクリプト設計の整理

TurnManager.cs が肥大化していたため、敵AIロジックを EnemyAIController.cs として分離しました。

移管した処理:

  • CanAIStartAction()(AI行動開始判定)
  • ExecuteUnitAction()(1ユニット分の行動実行)
  • FindApproachPath()(接近経路探索)

TurnManager はターン制御とフェーズ管理に専念する構成になりました。
将来的にスコアロジックや複雑なAI判定もここへ集約していく予定です。


■ Steamworks開発者承認

本日夜、Valveからメールが届きました。

「おめでとうございます。あなたはSteamworks開発者になりました。」

KYC申請(4/17)から5日での承認でした。
30日間の待機期間(4/17起算)は変わりませんが、ストアページの作成や設定はこれから進められます。

最短で5/17以降にストアフロントが公開できる見込みです。


執筆後記

MISSION FAILEDを見た時、少し笑ってしまった。

全ユニット生存・戦力100%のまま拠点を奪われた。
戦争に勝って戦略に負けた、という感じです。

「拠点を守りながら中立ユニットを確保しつつ敵を倒す」
そういう判断を迫られるゲームになりつつある。

38日目にして、ようやくゲームらしくなってきた気がします。