Vox Dungeon
概要
スマートフォン向けの縦画面・片手プレイに対応したローグライク・デッキ構築型ゲーム。Slay the Spireに代表されるカード選択型の戦略性と、短時間で遊べるゲームサイクルを個人で設計・実装。Unity 6上に独自開発のゲーム基盤TFrameworkを統合し、FSMモジュールによるバトル進行、シーン遷移、UI管理を構築。CSV/Excelマスターデータ自動生成パイプラインへの完全移行、複数敵戦闘、Shop/Event/Rewardの経済システム、RunSave(進行状況の保存と再開)、Status/Buff効果システムを実装済み。現在のUIは開発用のプレースホルダーであり、今後は正式なビジュアルへの差し替えを予定している。VContainer / R3 / UniTaskを活用し拡張性の高いコードベースとなっている。
担当内容
ゲームデザインから実装まで全工程を担当。 - ゲームデザイン(GDD作成、カード・遺物・マップ・経済のルール策定) - アーキテクチャ設計(TFrameworkのFSMモジュールを活用したターン制バトルの状態管理、R3によるイベント駆動設計) - クライアントサイドの実装(バトルシステム、UI、シーン遷移、オブジェクトプール) - データ駆動型の基盤構築(CSV/ExcelからTFramework generatorによるマスターデータ自動生成パイプラインの構築、全ScriptableObjectからの移行完了) - Codexを活用した開発フロー(仕様検討・設計の議論、実装の高速化、デバッグの効率化)
課題
- FSMと非同期処理の整合: アニメーション、エフェクト解決、状態遷移が同時に走るターン制バトルでは、FSMの状態管理とUniTaskの非同期ライフサイクルを整合させる必要があった。状態遷移中に次のカードがプレイされる、アニメーション完了前にFSMが先走るといった競合の発生を防ぐ設計が求められた。
- 複数システムの相互干渉の整理: エネルギー管理、手札制限、敵AIの意図表示、パッシブ効果の割り込みといった独立したシステム群が、カード1枚のプレイを起点に連鎖的に反応する。各システムの実行順序と通知タイミングを整理し、予測可能な解決順を保証する必要があった。
- 個人開発におけるスコープと品質の両立: 1名体制でゲームデザイン・アーキテクチャ設計・実装を並行して進める中で、過剰設計によるスピード低下と場当たり的な実装による技術的負債の蓄積という相反するリスクのバランスを取ることが常に求められた。
対応内容
- TFrameworkの実践投入と検証: 個人開発のゲーム基盤として設計したTFrameworkを実際のゲームプロジェクトに統合。FSMモジュールによるバトル進行、シーン遷移、UIのPageスタック管理、AddressablesによるアセットロードをTFramework上で運用し、基盤の実用性と改善点を検証しながら開発を進行
- FSMによる厳格な状態管理: BattleStart → TurnStart → PlayerAction → CardResolve → EnemyIntent → EnemyAction → TurnEnd → Victory/Defeat の9状態をStateMachineで定義。各状態のEnter/Exitで非同期処理の開始と完了待機を行い、状態遷移の一貫性を保証。プレイヤー操作の受付可否もFSMの現在状態に応じて制御
- R3によるイベント駆動設計: カードプレイ、ダメージ、回復、エネルギー変化、敵の行動など、バトル中の全状態変化をObservableとして公開。UI表示やアニメーション再生、FSM遷移判定がそれぞれ独立して購読する疎結合なデータフローを構築
- CSV/Excelマスターデータ自動生成: カード、敵、マップ、Shop、Event、報酬テーブルの全パラメータをCSV/Excelで管理し、TFramework generatorによるC#コード自動生成パイプラインを構築。開発初期のScriptableObjectモックから完全移行し、コード変更なしでバランス調整が可能なデータ駆動型基盤を確立
- View/Presenterの責務分離とService分割: TFrameworkのPage/Dialogフローに準拠したUI責務の分離を完了。さらにBattleSceneFlowServiceからBattleRewardService、BattleShopService、BattleEventService、BattleSnapshotFactory、BattleDisplayTextServiceを分離し、単一責務原則に基づく設計へ再編
- 複数敵戦闘と高度な敵AI: 単体敵から複数敵formationへの拡張、敵ごとのHP/Block/Intent/Status/Buff管理、OpeningOnly/RepeatAfterOpening/AfterOpeningRandom/Random/Cycleの5種行動パターンによる敵AIを実装
成果
現在までに実装済みの主な機能:
- FSMによる9状態(BattleStart → TurnStart → PlayerAction → CardResolve → EnemyIntent → EnemyAction → TurnEnd → Victory/Defeat)の厳格なターン制バトル進行
- CSV/ExcelからTFramework generatorによるマスターデータ自動生成パイプライン(カード、敵、マップ、Shop、Event、報酬テーブルをカバー)
- 複数敵formation対応の複数敵戦闘(敵ごとのHP/Block/Intent/Status/Buff管理、TargetSide.AllEnemies対応)
- OpeningOnly / RepeatAfterOpening / AfterOpeningRandom / Random / Cycle の5種の敵AI行動パターン
- View/Presenterの責務分離とService分割(BattleRewardService / BattleShopService / BattleEventService / BattleSnapshotFactory / BattleDisplayTextService)
- RunSaveによる進行状況の保存と再開(Map/RestShopでのオートセーブ、Save&Quit導線)
- Shop機能(カード購入・削除・売り切れ表示、MasterData駆動の価格計算)
- Event機能(分岐選択肢、ランダムイベント抽選、localization対応)
- 報酬システム(Card / Gold / Potion / Relicの複数報酬種別、動的生成)
- Status効果(Weak / Vulnerable / Slimed)とBuff効果(Strength / Ritual / Enrage)
- Combat draw/discard pile(山札・捨て札の可視化)
- 全シーン・プレハブのAddressables非同期ロード
開発中:Relic(アーティファクト)のパッシブ効果システム。 残件:UI 全面再設計(現在は開発用グレースケールモック)、アニメーション・演出全般、OutGame シーン(TitleScene / MainScene)、マップ自動生成、補給機能(休憩・カード強化)。
※画像はイメージです