14
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UE4のエンジンとプロジェクトの関連付け

Posted at

UE4のエンジン複数のバージョンを運用している場合に、C++コードを含むUE4プロジェクトをアーティストなどに配布するときに、プロジェクトとエンジンがちゃんと関連付けされてないと、違うバージョンのエディタが起動してしまったり、ビルド済みのはずなのにコードをビルドしようとしてしまうことがあります。

ていうか、そういう状況になったので、ざっと調査しました。

プロジェクトに関連付いてるエンジンは.uprojectファイルのEngineAssociationのIDで選択されるみたいです。
この辺はヒストリアさんのブログにありました。

[UE4] エンジンをコードからビルドした場合のバージョン表記

この記事にもある「.uprojectを右クリックしてエンジンを選ぶ」という機能ですが、これが有効になっていないPCがあったりします。詳しく検証してないですが、おそらくEpic Game Launcherなどからインストールせずに直に社内リポジトリなどからUE4を持ってきた場合に有効になっていないんじゃないかと思います。
では、どうやって有効にするかというと、

Engine/Binaries/Win64/UnrealVersionSelector-Win64-Shipping.exe
を実行すれば良いのだと思います。
これを実行して、.uprojcetファイルを右クリックすると無事

2018-03-17_15h56_33.png

といったメニューが出てきます。
ここでSwitch Unreal Engine Versionを選んで、そのプロジェクトで実行したいエンジンを選択します。

2018-03-17_15h57_02.png

これで.uprojectファイルをダブルクリックすると希望するUE4のエディターが起動しますが、プロジェクトのバイナリがそのエンジンでビルドされたものでない場合は、プロジェクトコードのビルドが発生します。これをどこで見ているかというと、

UE4 エンジンの Engine/Binaries/Win64/UE4Editor.versionのBuildId
プロジェクトのBinaries/Win64/UE4Editor.modulesのBuildId
このふたつが一致していれば、そのエンジンでビルドされたプロジェクトということで、プロジェクトコードのビルドは実行されません。

UE4Editor.version
{
	"MajorVersion": 4,
	"MinorVersion": 19,
	"PatchVersion": 0,
	"Changelist": 0,
	"CompatibleChangelist": 0,
	"IsLicenseeVersion": 0,
	"IsPromotedBuild": 1,
	"BranchName": "",
	"BuildId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
}
UE4Editor.modules
{
	"BuildId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
	"Modules": 
	{
		"hoge": "UE4Editor-hoge.dll"
	}
}

Engine/Binaries/Win64/UE4Editor.modlues
にも同じBuildIdがありますが、エンジン起動時の照合はUE4Editor.versionの方で行っています。
(4.19での話なので、将来的に変更されるかもしれません)

ということで、エンジンとプロジェクトの関連付けの話でした。

14
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?