UE4のVisualStudioソリューションファイルの作り方について

UE4プロジェクトのVisualStudioソリューションファイルの作り方について

どこがどう繋がって、どのエンジンバージョンのソリューションが作成されるのか理解していなかったので、まとめました。 あくまでUE4でのVSソリューションファイルの作り方についてなので、UE4プロジェクトのバージョンコントロール方法ではありません。そのような情報がほしい場合には、ソース コントロールとして SVN を使用する | Unreal Engineなどを参考にしましょう。

ちなみにVer4.19ぐらいのときにメモしたやつなので、最新だと変わっていたりするかもしれません。

YOUR_PROJECT という部分は、自身の作成したプロジェクト名に置き換えてください。 方法はパターンA、パターンBみたいに列挙していきますので、お好きな手段を選ぶとよいです。

【エンジンソースの取得方法】

  • A. GithubからCloneして取得(お好きな作業フォルダへどうぞ)
  • B. EpicGamesLauncherからInstallOption->エンジンソースにチェック (デフォルトパス設定は、 [C:\Program Files\Epic Games\UE_4.xx\Engine])

【ソリューションファイルの作成方法】

  • A. Editor起動して、メニューの[File]->[Generate Visual Studio Project]、もしくは[File]->[RefreshProjects]
  • B. Setup.batと同階層に存在する、[GenerateProjectFiles.bat]を実行
  • C. YOUR_PROJECT.uprojectを右クリック->[Generate Visual Studio project files]
  • D. VisualStudioExtensionを入れておき、VisualStudioのツールバーから[Refresh Projects]ボタンを押す

【非改造・改造別 作成例】

リリースされているエンジンを使用したC++開発(非改造エンジン)

  • A. EpicGamesLauncherからEditorを起動、YOUR_PROJECT.uprojectをEditorで開き、メニューの[File]->[RefreshProjects]
  • B. YOUR_PROJECT.uprojectを右クリック->[Open]でEditorを開く->メニューの[File]->[Refresh Projects]
  • C. YOUR_PROJECT.uprojectを右クリック->[Generate Visual Studio project files]
  • D. YOUR_PROJECT.slnをVisualStudioで開き、VisualStudioのツールバーから[Refresh Projects]ボタンを押す(要:VisualStudioExtension)

改造エンジンを使用したC++開発

  • A. 改造エンジンと同階層にそのエンジンで開発するプロジェクトのフォルダを入れ、さらに同階層にGenerateProjectFiles.batがある形にする
例:
  MyUE4Engine/Engine/ (エンジンソース)
  MyUE4Engine/YOUR_PROJECT/ 
  MyUE4Engine/GenerateProjectFiles.bat

 MyUE4Engine/GenerateProjectFiles.batでソリューションファイルを作成する。 また、.uprojectのEngineAssociation項目は空にしておく。 "EngineAssociation": "", こうすることで、なぜかYOUR_PROJECTの上の階層にあるEngineフォルダ内のUE4をエンジンとして使ってくれるらしい。

(設定参考: https://github.com/EpicGames/UnrealTournament

  • B. 改造エンジンのEditor起動、YOUR_PROJECT.uprojectをEditorで開き、メニューの[File]->[Refresh Projects]
  • C. YOUR_PROJECT.slnをVisualStudioで開き、VisualStudioのツールバーから[Refresh Projects]ボタンを押す(要:VisualStudioExtension)

補足

Aの方法だと、MyUE4Engine/UE4.slnが作られるので、それを開きます。 BとCの方法だと、開くのはUE4.slnではなく、YOUR_PROJECT.slnになって、パスはMyUE4Engine/YOUR_PROJECT/YOUR_PROJECT.slnになると思います。

おすすめの方法は?

非改造 -> どれでもやりやすい方法でいいと思います。

改造 -> AのGenerateProjectFiles.batを使用したもの。同じフォルダにまとまっていることで管理しやすくなり、uprojectのEngineAssociationを空白で管理できるので、環境によってEngineAssociationが異なるハッシュタグになってuprojectファイルに差分が出てしまう問題を防げる。

例:改造エンジンでゲームを作ってみたい(Windows環境)

Engineソースをダウンロードする。develop/MyUE4GameパスにてGitからCloneした。

develop/MyUE4Game/Engine/
develop/MyUE4Game/Samples/
develop/MyUE4Game/Templates/
develop/MyUE4Game/Setup.bat
develop/MyUE4Game/GenerateProjectFiles.bat
develop/MyUE4Game/README.md

Setup.batで必要なものをインストール。 GenerateProjectFiles.batでエンジン用ソリューションUE4.slnを作成。

develop/MyUE4Game/Engine/
develop/MyUE4Game/Samples/
develop/MyUE4Game/Templates/
develop/MyUE4Game/Setup.bat
develop/MyUE4Game/GenerateProjectFiles.bat
develop/MyUE4Game/README.md
develop/MyUE4Game/UE4.sln <- New!

エンジンをビルドしてEditor起動。 テンプレートからC++プロジェクトを作成する。作成パスはdevelop/MyUE4Gameにして、プロジェクト名はFPSGameとする。

develop/MyUE4Game/Engine/
develop/MyUE4Game/Samples/
develop/MyUE4Game/Templates/
develop/MyUE4Game/FPSGame/ <- New!
  develop/MyUE4Game/FPSGame/FPSGame.uproject <- New!
develop/MyUE4Game/Setup.bat
develop/MyUE4Game/GenerateProjectFiles.bat
develop/MyUE4Game/README.md
develop/MyUE4Game/UE4.sln

develop/MyUE4Game/UE4.slnを開くと、FPSGameソリューションが含まれているので、それをUE4.slnのスタートアッププロジェクトにすれば完成。 (出来ていなかったらGenerateProjectFiles.batで再作成する)

エンジンいじらない状態でゲーム部分だけ開発するときには、develop/MyUE4Game/FPSGame/FPSGame.slnを開いてビルドして実行でもよいとかそんな感じだったと思います。(多分)

トラブルシューティング

UE4のVisualStudioExtensionってどこにあるの?

エンジンコードフォルダの、Engine\Extras\UnrealVSにあります。 (詳細: https://docs.unrealengine.com/latest/JPN/Programming/Development/VisualStudioSetup/UnrealVS/index.html

.uprojectを右クリックでUnrealのメニューが出てこない

EpicGamesLauncherと拡張子の関係付けができていない。 EpicGamesLauncherを起動して開くと、復旧するか聞かれるので復旧してください。

VisualStudioのツールバーの[Refresh Projects]がグレーアイコンで押せない

同上?使っていないので条件は詳しく調べていません……とりあえず次のを試してみてはいかがでしょうか?

EpicGamesLauncherと拡張子の関係付けができていないため?EpicGamesLauncherを起動して開くと、復旧するか聞かれるので復旧してみてください。 もしくは、GenerateProjectFiles.batがソリューションファイルと同じフォルダにないから? 改造エンジンだと非対応?

.uprojectで生成されるエンジンコードのバージョンが決まる基準は何なの?

 .uprojectの"EngineAssociation": の値で決まる。.uprojectをテキストファイルとして開くと書いてあります。

  • 単純な数値 -> エンジンのバージョン(Epic Games Launcherのエンジンを使用する)
  • ハッシュ値 -> PC固有のパスがレジストリに登録されていて、それが基準になる
  • 空欄 -> 親フォルダにエンジンフォルダがあればそれを使用する。無ければバージョン指定をGUIで設定する必要がある

 参考: http://historia.co.jp/archives/2316/

GenerateProjectFiles.batが見当たりません

非改造エンジン(Launcherからダウンロードしたエンジン)には存在しません。 代わりにuprojectファイルを右クリックして、[Generate Visual Studio project files]からslnなどのファイルを更新しましょう。

VisualStudio2017のソリューション作りたいのに2015のが作られてしまう

対応しているエンジンバージョンの場合、GenerateProjectFiles.batのコマンドライン引数に -2017 を加えると作ってくれます。 2019でも同じだと思います。

$ ./GenerateProjectFiles.bat -2017