2023-12-16 / @syui

ue5 , 3d

ue5を触ってみた8

ue5でmac(arm64)のpackage buildは鬼門です。

今回は、ue5 package build for macを解説します。

vrm4uを使ってる人でmacでpackage buildしている人は世界中でただ1人かもしれません。全く情報がなく、arm64でbuildされているvroidゲームも見かけない。

vrm4uをmacで導入すること自体も多少ハマるかもしれません。しかし、package buildほどではないです。それくらい意味がわかりませんでした。

ddc directory

LogDerivedDataCache: Warning: Shared: Process has an existing cache store at path /path/to/ddc, and the duplicate is being ignored.

様々なerrを回避してたどり着いたのは「Macのプロジェクトをパッケージ化しています...」という表示から先に進まないという現象です。なぜなのかずっと謎でした。logを確認してもerrが出ていないし、さっぱりわからない。でもなぜか進まない。

そこで、初回スターターキットのprojectを作ってpacakge buildしてみることにしました。しかし、ここでも同じように先に進まない。フリーズはしていませんが動いていないのです。

この原因はおそらくddc directoryを設定していないことによるものです。

DDC の保存場所

プロジェクトとシステムの構成方法によって、高速から低速にわたる階層の中に複数のDDC キャッシュが存在する可能性があります。派生データを評価するとき、システムは次のことを実行して、データにアクセスできる速さを決定します。

派生データが必要な場合、データが見つかるまで、まず最速のキャッシュがチェックされ、次に速いキャッシュがチェックされます。

データが見つかると、最速のローカルキャッシュにコピーされるため、次回のアクセスが高速になります。

データが見つからない場合に初めて生成されて非同期でキャッシュにコピーされるため、その後は (場合によってはチームも) データを利用できるようになります。

DDC に保存されているコンテンツは使い捨てですが、.uasset ファイルに保存されているデータを使用していつでも再生成できます。これらの派生フォーマットを外部に保存すると、ソース アセット ファイルを変更しなくても、エンジンで使用されるフォーマットを簡単に追加または変更できます。

通常は~/Library/Application\ Support/Epic/UnrealEngine/にあるらしい。ですが、私はue5のengineもprojectもsharedも外部ディスクに保存しているのでそれが原因かはわかりませんが、ddc directoryの設定がnullでshaderなどの生成のところから先に進まなかったようです。

それまでに様々なところをチェックしました。

Engine/Build/BatchFiles/RunUAT.command, BuildConfiguration.xml, Engine/Binaries/DotNET/UnrealBuildTool/UnrealBuildTool, VSCodeなど。

ですが、全部正確に設定されており、全くの的外れでした。

ue5の開発は初回からpackage buildで通ることを確認してから開発を進めるのがおすすめです。assetを入れると通らなくなります。pluginも同様です。

もしそのassetやpluginを使って開発を進め、後々になってbuildが通らないということになると大変です。

私も最初の方でpackage buildを試してみた事があったのですが最後まで確認せず、errがでてないから大丈夫とそこで終わりにしていました。ですが、全く先に進まないという問題がありました。

色々と試した結果、macだけでなくwindowsでのpackage build環境も整えられたのでよかったですが、ue5のpackage build環境の検証と構築は相当大変でした。

また、project settings > platform > macではpackage化の項目があり、通常はintel & apple siliconになっています。これをapple siliconに変更するとpackage buildは安定するかもしれません。

ShaderCompileWorker

ShaderCompileWorker Failed to find game directory

UEInstallDir=/Volumes/ssd/app/UE_5.3
${UEInstallDir}/Engine/Binaries/DotNET/UnrealBuildTool/UnrealBuildTool.dll ShaderCompileWorker Mac Development -architecture=arm64
${UEInstallDir}/Engine/Binaries/DotNET/UnrealBuildTool/UnrealBuildTool.dll ShaderCompileWorker Mac Development -architecture=arm64
${UEInstallDir}/Engine/Build/BatchFiles/Mac/Build.sh UnrealEditor Mac Development -buildscw -architecture=arm64 -verbose

LLVM ERROR

LogShaders: Error: Archiving failed: metallib failed with code 1: LLVM ERROR: Could not parse module bitcode: file too small to contain bitcode header!

LogCook: Error: Saving shared material shader code library failed for Mac.

UEInstallDir=/Volumes/ssd/app/UE_5.3
${UEInstallDir}/Engine/Build/BatchFiles/Mac/GenerateProjectFiles.sh -project="$project_file" -game -XCodeProjectFiles

ue5 package build for windows

project settings > platform > windowsで{D3D12, D3D11} Targeted Shader Formatstrueにしました。

逆にwindowsの設定ファイルをmacに持ってくるとShaderがうまく表示されませんので、変更する必要があります。