MonsterScramble[自主制作]

OVERVIEW

企画、スケジュール管理、設計、UI制作、コーディングを行いました。

YEAR 2024

1. 制作概要

◾️ 制作期間:2024年5月3日〜2024年5月31日

◾️ジャンル:3Dタワーディフェンス(オンラインPvP)

◾️ 開発ツール
- Unity:2022.3.19f1
- VisualStudio for mac
- C#
- Figma (UI作成)

◾️ 開発補助ツール
- Notion(スケジュール管理)


- GitHub


- draw.io(設計)


- SourceTree

2.企画概要

◾️ コンセプト
ステージを駆け巡って戦況を把握し、戦況に応じて戦術を立てて戦うタワーディフェンス型オンライン通信バトルです。
あえて、俯瞰でフィールド全体を見渡せるようにはせず、プレイヤーがフィールド内を動き回らなければ戦況が掴めないようなゲーム性にすることで、実際にその場で戦っているかなのような臨場感を生み出そうと試みました。

◾️ 遊び方
操作方法は基本的にタップとドラッグアンドドロップだけですので、あまりゲームに慣れていない人でも楽しく遊べるように制作しました。また、召喚したモンスターもオートで戦闘をするので、操作自体はシンプルですが、召喚するタイミングや場所などを考えながら戦略を楽しんでいただけるように制作しました。
◾️ 基本ルール
- 制限時間:5分
- プレイ人数:2人

◾️ 操作方法
- 移動:タップ
- 攻撃:敵をタップすることでオート攻撃
- モンスター召喚:ドラッグ&ドロップ
◾️ 勝敗判定
相手の拠点を破壊したら勝ち

3. 成果物

4. スクリプト工夫点

◾️ SOLID原則を意識した実装
設計の段階で迷った時は原則に立ち返ることで、スムーズに設計を進めることができました。また、抽象に依存させることによって、拡張しやすい上に、不具合の原因の特定がしやすかったので、実装もスムーズに行うことができました。

◾️ BridgeパターンやSingletonパターンなどのデザインパターンを活用
チームでの開発を考慮してデザインパターンを取り入れました。導入することで、どこにどのような実装がされているかが共有しやすくなったのではないかと思います。

◾️ オブジェクトプールを用いてメモリ管理を最適化
オンラインゲームということもあり、メモリを多く消費するので、ローカル環境内だけの処理におけるメモリ消費を極力抑えるように工夫しました。

5.  今後の課題

◾️ 依存性の注入について
[SerializeField]やGetComponentなど様々な場所で解決しているので、今後はDIコンテナ(VContainer)などのフレームワークを用いて、できる限り一箇所にまとめた方が良さそうだと思います。

◾️ アーキテクチャ

キャラクターの攻撃・移動処理などのシステムロジックでピュアC#でなくMonoBehaviourを使っているところがあったので、不要な依存が存在している箇所があるのが課題です。


WEBSITE