💬

Unreal Engine5でMessagePackをプラグイン化~準備編~

2024/11/17に公開

環境

・VSCode
・Unreal Engine5(5.4.4を使用)

プラグインの作成

テンプレートは色々あるが、1から勉強も兼ねて空のプラグインから作成

[プロジェクト名].Build.cs配下でプラグインを使えるように追加

PublicDependencyModuleNames.AddRangeの追加モジュールにプラグインの名前を追加する
"Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput", "HTTP", "Json","プラグイン名の文字列"
┗この辺に色々使いたいものを追加することでビルド時に見るようになる。

サードパーティのライブラリを導入

今回はMessagePackを導入するので、それに関連するライブラリを導入する
[プロジェクトフォルダ]\Plugins[プラグイン名]\Source\ThirdPaty\MessagePackを作成
┗Source配下に「ThirdParty」、その下に「MessagePack」のフォルダを作成

・MessagePack
以下のgithub上にあるソースをダウンロード
https://github.com/msgpack/msgpack-c/tree/cpp_master

 ↓
ダウンロードしたZIPを解凍して以下のフォルダに入れる
[プロジェクトフォルダ]\Plugins[プラグイン名]\Source\ThirdPaty\MessagePack
 ↓
コピーが終わると以下のような形で展開される
[プロジェクトフォルダ]\Plugins[プラグイン名]\Source\ThirdPaty\MessagePack\msgpack-c-cpp_maste\~~~(以下中身)といった感じになる

・BoostLibrary
https://www.boost.org/users/history/version_1_86_0.html
┗最新版でOK(今は1.86)

 ↓
ZIPを解凍(もしくは7z)
※かなりファイル数があるのと一部ドキュメントのところがパスが長すぎて警告がでますがスキップで問題なし
 ↓
Boostライブラリの一部を以下「MessagePack」のInclude配下にコピー
[プロジェクトフォルダ]\Plugins[プラグイン名]\Source\ThirdPaty\MessagePack\msgpack-c-cpp_maste\include
┗この下にboost_1_86_0の直下にある「boost」フォルダをコピーしておく
※このboost以下の部分がMessagePackの処理から呼びだす際に必要で、パスを合わせるために置いている(問題なくできる方法があったら知りたい・・・)

プラグイン内のbuild.csファイルにインクルードパスを設定

[プラグイン名].Build.csファイルのPublicIncludePaths.AddRangeに以下を追加

[プラグイン名].Build.cs
PublicIncludePaths.AddRange(
			new string[] {
				// ... add public include paths required here ...
				Path.Combine(ModuleDirectory, "../ThirdParty/MessagePack/msgpack-c-cpp_master/include")//, 
				//Path.Combine(ModuleDirectory, "ThirdParty/BoostLibrary/boost_1_86_0/boost")
			}
			);

┗「../ThirdParty/MessagePack/msgpack-c-cpp_master/include」この部分、ModuleDirectoryをから見ると1つ上の階層を指定した先から実際のinclude(ヘッダがある場所)を指定しないといけないので注意(エラー内容見て気づいた)

uprpjectの設定

該当のプラグインを有効にする設定をする

[プロジェクト名].uproject
~~~以下プラグインの項目~~~
"Plugins": [
		{
			"Name": "ModelingToolsEditorMode",
			"Enabled": true,
			"TargetAllowList": [
				"Editor"
			]
		},
		{
			"Name": "Plg_MsgPack",
			"Enabled": true
		}
	]

プラグイン側のupluginの設定

LodingPhaseを「PreLoadingScreen」に設定

[プラグイン名].uproject
~~~以下モジュール部分~~~
"Modules": [
		{
			"Name": "Plg_MsgPack",
			"Type": "Runtime",
			"LoadingPhase": "PreLoadingScreen"
		}

ここまでをすることで、プラグイン化した「MessagePack」の最低限の準備が終わります。
次回には実際の実装の流れを記載します。

次回

Discussion