Udemyの「Unity Turn-Based Strategy Game」講座の感想

[UdonTech Advent Calendar 2022](https://qiita.com/advent-calendar/2022/udontech)の3日目です。

Udemyの「[Unity Turn-Based Strategy Game](https://www.udemy.com/course/unity-turn-based-strategy/)」講座を受講しましたので、内容や感想まとめを書きます。

# 自己紹介

k-mitaniと申します。香川県の高松市でプログラマーをしています。今年から趣味でUnityを使ったゲーム開発の勉強を始めました。普段は主に[讃岐GameN](https://sanuki-gamen.connpass.com/)という香川県のゲーム制作コミュニティで活動(？)しています。

戦略シミュレーションゲームが好きで、いつか「Crusader Kings III」や「太閤立志伝Ⅴ」や「ガンパレード・マーチ」みたいなゲームを作りたいなあと思っています。


# Udemyの「Unity Turn-Based Strategy Game」講座について

https://www.udemy.com/course/unity-turn-based-strategy/

Unityでターンベースの戦略ゲームを一から作っていく講座です。[Code Monkey](https://www.youtube.com/c/CodeMonkeyUnity/)という海外のUnityゲーム開発情報YouTubeチャンネルを運営されているインディーゲーム開発者の方が講師です（私もチャンネル登録しています！）。

講師の方による本講座の紹介動画が以下にあります。

https://www.youtube.com/watch?v=QDr_pjzedv0


# 内容・感想

「ファイアーエムブレム」や「ファミコンウォーズ」のようなマス目状のターン制の戦略ゲームを作っていく感じの講座でした。四角形・六角形のグリッドシステムや、ユニットの移動やアクション、敵AI、経路探索などを実装していきました。

まだUnityの勉強を始めて一年に満たないぐらいだったので、色々勉強になりました。今まではUnityの入門のために簡単なミニゲームを数本作った程度でしたが、この講座によって複雑で本格的なゲームシステムを拡張性の高い形で実装していく方法が学べて良かったです。

以下、ざっとした内容紹介です。


## セクション1: Introduction

講座の全体説明があり、プロジェクトの環境構築をしていきました。

この講座では、3DモデルにはSynty Studiosの「[POLYGON Prototype](https://assetstore.unity.com/packages/3d/props/exterior/polygon-prototype-low-poly-3d-art-by-synty-137126)」を利用しました。3Dモデルのアニメーション用のFBXファイルは「[Mixamo](https://www.mixamo.com/)」というAdobeのサイトから取得しました。


## セクション2: Unit Movement & Selection

ユニットをクリックで選択して、クリックした位置に移動させる処理を実装していきました。以下の画像のようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952672/129461f2-9b6a-16f2-e262-c4b3e3062611.png)


## セクション3: Grid System & Camera

ユニットの位置を管理する四角形のグリッドシステムを実装していきました。またCinemachineによるカメラの操作方法も学びました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952672/d1d2a00b-ac75-9261-8a73-278a7d0f4339.png)

## セクション4: Actions & UI

ユニットの移動や攻撃などのアクションの処理や、ターン終了ボタン・アクション選択ボタンなどのUIを実装していきました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952672/0165d97d-1c33-7158-50b2-a4410b9e5292.png)

## セクション5: Enemies & Combat

敵ユニットを作り、攻撃アクションや敵AIを実装していきました。結構大変でしたが、こんな感じで敵AIを作るのかと勉強になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952672/c1ec502f-ec5e-fb5b-c329-04ca1afd35f2.png)

## セクション6: Pathfinding

A*経路探索アルゴリズムを実装し、ステージに障害物を置いてもユニットが障害物を避けて目的地まで移動できるようにしていきました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952672/c440e5cf-6dc9-6544-5632-a3656aaa7c91.png)

## セクション7: Polish

グレネード投擲アクションや、近接攻撃アクション、扉の開閉アクション、破壊可能オブジェクトの実装や、入力処理のInputSystem化など、ゲームの磨き込みをしていきました。

以上で完了です。最終的に以下のような形になりました。
![動画2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952672/2378d591-368e-c27e-1c89-1ac8015e9940.gif)

# 終わりに

今はこの講座で得られた知識を使って、Unityで一からゲームを作っています。まだまだ作りはじめですが、現在は「Age of Empires」のような資源収集処理を作っているところです。
![動画.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952672/70fb83a6-8293-9319-dd96-9c6e1a30de10.gif)

まずはゲームとしての面白さは度外視して、実装してみたい機能を山盛りにしたゲームを作っていこうと思っています。「[タウンズメン](https://store-jp.nintendo.com/list/software/70010000016204.html)」みたいな町づくりゲームに、キャラクター成長要素とか、キャラクター間のコミュニケーション要素とか、AoEみたいな戦闘要素とかを入れる感じにしようかなあなどと思っています。

来年のUdonTechのアドベントカレンダーでまた良い報告ができればと思います！

以上です。