ContentPackを活用したことあります?(; ・`д・´)
今回はスターターコンテンツのようなマテリアルなどをまとめた、
コンテンツパックを自作する方法について紹介していきます。
※エンジンバージョンは5.7で試しています!
※書き間違え等あればコメントください!
参考にした資料は下記になります。
https://www.youtube.com/watch?v=h7tImSnsAI4
コンテンツパックとはどういったものか?
コンテンツパックとは簡単にいうとエンジン内に配置されている、
マテリアル群やモデルなどをプロジェクト問わず追加する仕組みになります。
今も活用している方がいるであろう、
スターターコンテンツが代表的なものになるかと思います。
良い点と気になる点を下記に箇条書きにしてみました。
〇良い点
・コンテンツファイルとupackで管理が可能
・同じエンジンバージョンのプロジェクトであればどれも共有可能
・各種アセットが多いほど管理が簡単になる
〇気になる点
・パックで指定した箇所に配置しないと正しく動作しないことがある。
・新しいバージョンで作成したものは過去バージョンでは使用できない。
仕組みとしてはupackの方にアセットのデータが残るのではなく、
指定のエンジンの場所にアセットを配置する形になります。
個人的にはアセットがすごく多くなったり、
このデータだけはいろんなプロジェクトで活用したい!
などの場面で作成するのが良いのかなと思いました。
実際にコンテンツパックを作成してみよう!
それでは実際にコンテンツパックを作成していきます。
実際に行うことを列挙してみました。ざっくりいうと下記になります。
①エンジンフォルダにコンテンツパック用のアセットを作成する。
②エンジンにコンテンツパックで活用するファイルを配置する。
③コンテンツパック作成用のファイルを作成する。
④コマンドでupackの作成を行う。
⑤エンジンにupackのファイルを配置する。
今回は前回作成したSKSのレイヤーマテリアルなどを、
コンテンツパックにしてみようと思います。
前回の記事はこちらなのでよければ見てみてください。
①の作業はもう行っているので②の作業から紹介していきます。
まず今回配置するファイルのデータをエクスプローラーからコピーしてきます。
コンテンツブラウザのファイルまたはフォルダを右クリックして、
「エクスプローラーで表示」を選択でフォルダを選択できます。

開いたらupackとして使用したいファイルを下記のフォルダに設定します。
「C:\Program Files\Epic Games\UE_5.7\Samples\SKS\Content」
こちらに配置して②の作業は完了となります。
※エンジンのインストール場所がデフォルトなのと、
\Samples\からのフォルダがない場合は自身で作成してください。
※Samplesの後にわかりやすいフォルダ名→Content→「upackで活用したいデータ」
という階層構造にしないとうまくupackで取り込めない可能性があります。

③のコンテンツパック用のファイルを作っていきます。
作成するファイルは主に4つになるかなと思います。
1.コンテンツパック追加時の各種データが詰まったmanifest.jsonファイル
2.upackファイルで参照するサンプルの場所を指定するConfig.iniファイル
3.64x64のアイコン画像と400x200のサムネイル画像のそれぞれ画像ファイル
4.upack作成時に使用する各種ディレクトリの場所を指定したテキストファイル
まずはパック用のフォルダ「SKS」の下にmanifest.jsonファイルを作成していきます。
各種項目を説明しておきます。
Version → upackのバージョンになります。
Name → 国ごとのタイトル名を設定しています。
Description → 説明文となる内容の文章を設定します。
SearchTags → コンテンツパックを追加する際の検索に活用
Category → ブループリントかC++かコンテンツを選択できます。
Thumbnail → コンテンツのサムネイルになります。
ScreenShots → コンテンツパック表示時の長四角のあれになります。
実際に今回記載したjsonの中身を置いておきます。
基本LanguageとTextや各種項目になります。
{
"Version": 1,
"Name":
[
{
"Language": "en",
"Text": "SKS_Pack"
}
],
"Description":
[
{
"Language": "en",
"Text": "A SKS Modeling CustomPack.\nMaterialInstance is Custom ColorMaterial"
},
{
"Language": "ja",
"Text": "SKSのモデルをまとめた改良パックです。\nマテリアルインスタンスで変更ができます。"
}
],
"AssetTypes": [],
"SearchTags":
[
{
"Language": "en",
"Text": "SKS,Model"
},
{
"Language": "ja",
"Text": "SKS,モデル"
}
],
"ClassTypes": "",
"Category": "Content",
"Thumbnail": "icon.png",
"Screenshots":
[
"Preview.png"
]
}
どの設定がどの箇所で活用されているかの画像が下記になります。

続いてConfigフォルダを作成してその中にConfig.iniファイルを作成します。
記載内容は下記になります。
[AdditionalFilesToAdd]
+Files=Samples/SKS/Content/*.*
※上記のSamplesの場所はEngine/UE5.7/Samples/になります。

サムネイルなどを格納するMediaフォルダを作成します。
実際に画像を配置したのが下記画像になります。

最後に上のフォルダに戻ってupackを作成する際に使用する、
ContentToPack.txtを作成していきます。
ContentToPackのテキスト内で今まで作ったConfigやMediaのフォルダの場所、
manifest.jsonなどを作成していきます。
下記は例なので実際に作成する際はご自身のディレクトリ構造に合わせてください。
"C:\Users\ユーザー名\Documents\SKSContentPack\SKS\Config\"
"C:\Users\ユーザー名\Documents\SKSContentPack\SKS\Media\"
"C:\Users\ユーザー名\Documents\SKSContentPack\SKS\manifest.json"
完成したディレクトリ構成としては下記になります。
SKSContentPack
|ContentToPack.txt
+--- SKS
| | manifest.json
| |
| +--- Config
| | config.ini
| |
| \--- Media
| icon.png
| Preview.png
これで③の工程は終わりなので④の工程に移っていきます。
それでは実際にパッケージングしていきましょう~
コマンドプロンプトを使用してパックします。
アンリアルエンジンのupackを作成する「UnrealPak.exe」を活用します。
※UnrealPak.exeはUEバージョンフォルダ\Engine\Binaries\Win64\UnrealPak.exe
上記に格納されているはずです(UE5.6とUE5.7で確認しています)
コマンドの形式としては下記になります。
"UnrealPak.exeのパス" -Create="作成したContentToPackファイルのパス" "出力するupackの拡張子のファイル名のパス"
〇今回出力した際のコマンド
"C:\Program Files\Epic Games\UE_5.7\Engine\Binaries\Win64\UnrealPak.exe" -Create="C:\Users\ユーザー名\Documents\SKSContentPack\ContentToPack.txt" "C:\Users\ユーザー名\Documents\SKSContentPack\SKSTest.upack"
成功していたら下記画像の様に出力されている形になります。

それでは実際にエンジンに配置してみようかと思います。
エンジンフォルダの「FeaturePacks」に格納します。

UE5.7のプロジェクトを起動し、コンテンツブラウザを右クリックして
機能またはコンテンツパックを追加を選択します。
コンテンツのSKS_Packが追加されていて選択して追加されていれば完璧です!


だいぶ文章が多くなりましたが以上になります。
アセット管理の一つして知っておくと良いかもと思い紹介しました。
最後に
文章多くなりましたが説明は以上になります。
ほかにも管理する方法はいろいろあると思うので紹介できたらと思います!