Unreal Engine5でMessagePackをプラグイン化~準備編~
環境
・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上にあるソースをダウンロード
↓
ダウンロードしたZIPを解凍して以下のフォルダに入れる
[プロジェクトフォルダ]\Plugins[プラグイン名]\Source\ThirdPaty\MessagePack
↓
コピーが終わると以下のような形で展開される
[プロジェクトフォルダ]\Plugins[プラグイン名]\Source\ThirdPaty\MessagePack\msgpack-c-cpp_maste\~~~(以下中身)といった感じになる
・BoostLibrary
↓
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に以下を追加
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の設定
該当のプラグインを有効にする設定をする
~~~以下プラグインの項目~~~
"Plugins": [
{
"Name": "ModelingToolsEditorMode",
"Enabled": true,
"TargetAllowList": [
"Editor"
]
},
{
"Name": "Plg_MsgPack",
"Enabled": true
}
]
プラグイン側のupluginの設定
LodingPhaseを「PreLoadingScreen」に設定
~~~以下モジュール部分~~~
"Modules": [
{
"Name": "Plg_MsgPack",
"Type": "Runtime",
"LoadingPhase": "PreLoadingScreen"
}
ここまでをすることで、プラグイン化した「MessagePack」の最低限の準備が終わります。
次回には実際の実装の流れを記載します。
Discussion