UE4のコードをVisual Studioからビルドする際の推奨設定(定期更新)

# 最初に

本記事は、UE4のソースコードを「Visual Studio」でビルドして開発する際の推奨設定を記載したものとなります。



## 作業環境

記事内で使用する作業環境は以下の通りとなります。

- Unreal Engine：4.23
- Visual Studio：Community 2017 or Community 2017 for Mac or Enterprise 2019

Visual Studioのバージョンに関しては私自身の環境で動作したものを記載しています。各エディションの比較は以下のページから確認する事ができます。

https://visualstudio.microsoft.com/ja/vs/compare/?rr=https%3A%2F%2Fsubscription.packtpub.com%2Fbook%2Fgame_development%2F9781789809503%2F1%2Fch01lvl1sec13%2Finstalling-visual-studio



UE4はバージョン4.22の時点で**VS2015をサポートしていません**。デフォルトではVS2017を使用しますが、VS2019もサポートしています。

# Visual Studioの導入

UE4をビルドするためにVisual Studioの環境を用意します。まずは、以下のリンク先のページから「Download VS Community 2017」を押下してVS2017をDLしてきてください。

https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx

インストーラーを起動し、Visual Studio2017のコンポーネントを選択する画面まで進んでください。C++をサポートするコンポーネントは**デフォルトだと含まれていない**ため、選択してインストールする必要があります。`Workloads > Mobile and Gaming > Game development with C++`にチェックマークをつけてください。
またUnreal Build ToolはC#で組まれているため`Windows > desktop development with .net`にもチェックマークをつける必要があります。

![VS2017_SettingsNoInstaller.png](https://docs.unrealengine.com/Images/Programming/Development/VisualStudioSetup/VS2017_SettingsNoInstaller.jpg)



ここで`Unreal Engine インストーラー`を入れることもできますが、今回はGitHubから直接取得するため、選択しません。

次に`Install`ボタンを押下して、選択したコンポーネントを追加します。Installが終わった後はPCの再起動が要求される場合があります。その場合は再起動を行なってから先に進んでください。

Visual Studioを起動すると、サインインを要求されます。アカウントを持ってない方はここでアカウントを作成後にサインインを行なってください。ここでサインインしたアカウント情報はリポジトリへコードをコミットした場合に使用されます。

尚、UE4のコード入手方法からセットアップに至るまでは以下の公式リファレンスに記載されています。

https://docs.unrealengine.com/ja/GettingStarted/DownloadingUnrealEngine/index.html


# Visual Studioの推奨設定

この項目に関しては以下の公式ドキュメントを元に記載したものとなります。

https://docs.unrealengine.com/en-US/Programming/Development/VisualStudioSetup/index.html



### ソリューション構成のドロップダウンメニューの幅を広げる

1. `ツール`を右クリックして`カスタマイズ`を選択します。<br> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/7fb58f96-c5c1-e324-8e0d-6112ee6ddcae.png)
<br>
2. `コマンド`タブを開き、`ツールバー`を選択します。
3. ツールバー横のドロップダウンで`標準(Standard)`を選択します。<br> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/2f3a3132-8798-f3f5-e9e2-cbe7ebad9e09.png) <br>
4. `ソリューション構成(Solution Configurations)`を選択した状態で、`選択したボタンの編集(Modify Selection)`を押下します。 <br> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/fa38f48a-c727-3174-29f9-69c93cf120f4.png) <br> 
5. 幅を`200`に設定してOKを押下します。



### ソリューションプラットフォームのドロップダウンを追加する

`ローカルWindowsデバッガー`ボタンの横にある`フォルダーを指定して検索`ボタンの更に横にある下矢印表示のドロップダウンボタンを押下して、`ボタンの追加または削除 > ソリューションプラットフォーム(Solution Platforms)`を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/4975bd40-c963-e4d9-311b-6626bd88e0dc.png)



### エラーリストウィンドウをオフにする

コードにエラーがある場合はデフォルトでエラーリストウィンドウが自動的に表示されます。ですが、Unreal Engineを動かしている場合は、このエラーリストウィンドウに間違ったエラー情報が表示される場合があります。Unreal Engineを動かしている場合は、エラーリストウィンドウを非表示にし、代わりに`アウトプットウィンドウ`を使用してコードエラーを確認する方がよいでしょう。

1. もしエラーリストウィンドウが開いていた場合は閉じてください。
2. `ツール > オプション`を開いてください。 <br> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/71b77cd2-eff3-7e80-07e5-fb9478dbff80.png) <br>
3. `プロジェクトおよびソリューション(Projects and Solutions)`を開き、`ビルド完了時にエラー一覧を表示(Always show Error List if build finishes with errors)`のチェックを外してください。 <br> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/fb1e038e-edc2-32d1-8fb5-940e9e94375b.png) <br>
4. 次の設定項目も反映させる場合にはそのまま開いた状態にしておいてください。ここで終わる方はOKを押下して適用させてください。



### 非アクティブなブロックのグレー表示を解除する

Unreal Engineのソースコード上では、この設定を解除しないと多くの部分がグレー表示となってしまいます。

この設定を解除するためには、`ツール > オプション > テキストエディタ > C/C++ > 表示(View)`の`アクティブでないブロックの表示`を`False`にします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/047fbe70-c078-78a2-b916-7a98c7e76eb7.png)



### 外部依存関係フォルダーを非表示にする

この`外部依存関係フォルダーを非表示にする`を有効にすることで、ソリューションエクスプローラー上で不要なフォルダを非表示にすることができます。

この設定を有効にするためには、`ツール > オプション > テキストエディタ > C/C++ > 詳細設定(Advanced)`の`外部依存関係フォルダーを非表示にする`を`True`にします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/7d16c582-489e-cc29-7cd6-a9bd5f02fac6.png)

オプションでの作業はこれで終わりです。OKを押して適用させてください。



### ビルド構成について

UE4は、UnrealBuildTool(UBT)という　カスタムビルド方法を使用します。UBTへの詳しい説明は以下の記事へ

（新記事書きます）



選択されているビルド構成に応じて、異なるコンパイラオプションが使用されます。目的にあったものを選択しましょう。

| ビルド コンフィギュレーション - ステート | 概要                                                         |
| ---------------------------------------- | ------------------------------------------------------------ |
| Debug                                    | 幅広いデバッグ情報をビルド内に含め、エンジンとゲームの両方のコードをビルドします。また、コンパイルを高速化するために最適化をオフにします。エンジンコードも含めてステップ実行等を行う場合にはこちらのビルド構成を使用します。 |
| DebugGame                                | エンジンを最適化してビルドしますが、ゲームのコードはデバッグ可能な状態のままにします。ゲームモジュールのみをデバッグする場合に使用します。 |
| Development                              | プロジェクトのコードが反映されてるかを見るためにはこのコンフィギュレーションでコンパイルします。 |
| Shipping                                 | サイズや高速化のために最適化を行い、ビルドに時間がかかります。結果、実行可能ファイルのサイズが小さくなります。このコンフィギュレーションの場合はコンソールコマンド、統計情報、プロファイリングツールを含みません。 |
| Test                                     | Shippingコンフィギュレーションと同様ですが、一部のコンソールコマンド、統計情報、プロファイリングツールが有効となっています。 |



| ビルドコンフィギュレーション - ターゲット | 概要                                                         |
| ----------------------------------------- | ------------------------------------------------------------ |
| empty                                     | スタンドアローンの実行可能なプロジェクトのバージョンをビルドする。プラットフォーム固有のクックされたコンテンツが必要。 |
| Editor                                    | エディタでプロジェクトを開き、コード変更が反映されているか確認するためのコンフィギュレーション。 |
| Client                                    | UE4のネットワーク構築機能を使ってマルチプレイのゲームを作成している場合に、このターゲットを指定するとクライアントサーバーモデルのクライアントとして指定される。 |
| Server                                    | UE4のネットワーク構築機能を使ってマルチプレイのゲームを作成している場合に、このターゲットを指定するとクライアントサーバーモデルのサーバーとして指定される。 |



最初のビルド構成としては「Development Editor」を選択し、ビルドが通るかを確認したほうがよいかと思います。

プラットフォームは通常「Win64」プラットフォームを使用することとなります。

スタートアッププロジェクトは初回であればUE4、既に自身が使用するプロジェクト.slnが存在するのであれば、そちらを設定してください。

# 参考

- [UE4 VisualStudioを使ってエンジンをデバッグする](http://unrealengine.hatenablog.com/entry/2014/08/22/215802)
- [ゲーム プロジェクトのコンパイル(UE4公式リファレンス)](https://docs.unrealengine.com/ja/Programming/Development/CompilingProjects/index.html#%E3%83%93%E3%83%AB%E3%83%89%E3%82%B3%E3%83%B3%E3%83%95%E3%82%A3%E3%82%AE%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3)