わんころのUE5勉強会 2023/10/15 18:13

【UE5】自分が遭遇したパッケージ化の問題とエラーや警告色々

皆様、こんばんは!

現在制作中の自作ゲームにてパッケージ化した際や、ふとアウトプットログを見た時に確認されたエラーや警告の一部を紹介します。

どういう経緯があったかを「問題」に、解決や回避を「原因」で分けています。


はじめに

Engine Version: UE5.1.1
OS: Windows 10

パッケージに関連するものは見出しに【Pack】をつけています。それ以外はパッケージ化以外でアウトプットログに表示されたエラーや警告です。

正しい修正方法なのか不明なものもありますので、参考程度に見て頂けると幸いです。


【Pack】問題:ニューゲームのはずがセーブファイルをロードしてしまう

UE5 で「Save Game To Slot」「ASync Save Game To Slot 」でセーブファイルを作成することが出来ます。

パッケージング後に初めから(ニューゲームで)プレイしたいと思い、現在のプロジェクトフォルダから Saved/SaveGames の中に Slot Name で指定したセーブデータが入っているため削除してパッケージングを行いました。

私はゲーム開始時に簡単なムービーを再生するようにしているのですが、パッケージング後のゲームを起動するとムービーが再生されませんでした。初期化の順番等でロードがされないまま普通に進んでしまったのかと思いましたが、オプション画面を開くと音量調整やマウス感度などの数値もデフォルトで設定した数値ではなく、明らかに変更が加えられている数値となっていました。


原因:以前のパッケージで作成されたセーブファイルが残っていた

そのプロジェクトのパッケージングを以前行い、かつセーブファイルを作成していた場合、デフォルトで下記フォルダにセーブデータが作成されるようです。

C:\Users\"UserName"\AppData\Local\"ProjectName"\Saved\SaveGames

また、X(旧 Twitter)のフォローさんが作成されたゲームは UE 製で Steam にも公開されているのですが、上記「Local」フォルダ以下を確認するとそのゲームのフォルダも保存されていました

試しに「SaveGames」内にあるセーブファイルを別の場所へ移動して Steam でゲームを起動するとニューゲームになっていました。
デフォルトではここにセーブファイルが出来上がるようです。
(Steam には同期などもあると思うので、下手に触らない方がいいかもしれませんが念のため記載しておきました)

色々検証等を行う前に気づけて良かった内容でした。


【Pack】問題:パッケージング後でも常時処理落ちする

処理落ちの原因は沢山あると思うのですが、今回私が遭遇した処理落ちについてです。

作成中のゲームは一人称視点の脱出ゲームで、キャラクターは非表示にし、Static Mesh やインタラクト可能な BP 等がレベル上に置いてるくらいで複雑な処理は全然していないつもりでしたがある時を境にエディタ上でも処理落ちが確認出来ていました。


原因:ライト周りの設定が重かったのかも

https://twitter.com/UE5wancoro/status/1700394552232911105

以前 X(旧Twitter)でこの処理落ちについて色々呟いていたものがあるので一応貼っておきます(リプで更に続いています)


私の場合はライティング周りが重たかったようで、UE5 右上の歯車アイコン(設定)から、エンジンの拡張機能設定を確認します。グローバルイルミネーションを「Epic」から「高」に落とすだけで処理負荷がかなり減りました。


また、ゲーム側の処理落ちしてるような動きについては「プロジェクト設定」>「レンダリング」の中にある "Default Settings" から「アンチエイリアス手法」を TSR から MSAA 等に変更することでも改善しました。

UE5 で利用できるようになった TSR を利用しないという事なのでここはトレードオフになりそうです。



ライト同士の重なりも結構処理負荷が高いようです。
「表示モード」>「最適化ビューモード」>「ライトの複雑性」と切り替えるとライトの影響範囲などがサーモグラフのように色で分かりやすくなります。


画面下に寒色系~暖色系に変化する横長のグラフが表示され、右側にいく程処理負荷が高くなっているシーンです。

意図的に置いてますが、Rect Light 1つと Point Light 3つがそれぞれ影響し合い、重なってる部分が暖色系になっているためゲーム中にこのシーンが描画されると処理落ちが発生するかもしれません。

各ライトのプロパティに "Attenuation Radius" というライトの影響を調整できるプロパティがあるので、この値を小さくしておくと影響範囲が狭くなり、例えば隣の部屋に置いたライトと重なってしまうなどが軽減できると思います。

そのライト自体がもしかしたら必要ないかも?など判断出来るので結果的に処理負荷の軽減に一役買うかもしれません。


ライト周りの処理がかなり重いことが分かって大変勉強になりました。


警告:Unable to generate long package name

パッケージ名が長いという警告が発生しました。

公式フォーラム

以前 UE5.0.3から、UE5.1.1へ移行したのですが、バージョン移行を行って PIE で起動出来たことが確認できてすぐパッケージ化を行った所この警告が出ました。


原因:よく分からなかった

フォーラムに従い一旦 UE5 を落とし、プロジェクトフォルダ内にある「Intermediate」と「Saved」を消してから再起動を行い、再度パッケージ化してみました。警告自体はなくなってませんでしたが、一応動いてるようでかなり気になる警告です。


【Pack】エラー:ルートノードが見つかりませんでした

[Compiler] グラフ "関数名" のルートノードが見つかりませんでした from Source: "問題のあるアセットまでのパス"

呼び出し側は普通の関数として呼んだのに、呼び出し元(ルートノード)がデベロップメントオンリーになっていたので、パッケージ化した時に呼ばれない(見つからなかった)ということだと思います。


原因:関数の大元をデベロップメントオンリーにしていた

「エディタの環境設定」>「一般」の中にあるブループリントエディタの設定に "実験段階" という項目があり、そこに「明示的な非純粋ノードの無効化を許可」にチェックを入れることで下の画像の機能が利用可能になります。


この画像はまさに失敗例の関数なのですが、実行ピンが付いているノード(非純粋関数)を右クリックすると、画像のオプションが選択できるようになっています。

呼び出し側のノードに設定するのが一般的だと思われますが、呼び出し元(ルートノード)につけるとどうなるんだろう?と思って付けたままにしており、開発中はコンパイルエラーなどもなく呼び出しされるのでこの設定にしてたことを忘れてました。

関数の呼び出し元(ルートノード)は "常時" の方へ変更し、呼び出し側のノードに "デベロップメントオンリー" の設定を行うことで解決できました。


警告: In asset 'None', there is an enum property of type 'EIOSVersion' with an invalid value of 'IOS_14'

エラー: LoadConfig (/Script/IOSRuntimeSettings.Default__IOSRuntimeSettings): import failed for MinimumiOSVersion in: IOS_14


いつから出ていたのか不明ですが、プロジェクトを起動した瞬間から iOS 絡みの警告とエラーが出ていました。
ただ、開発も対象プラットフォームも Windows なので無視してもいいかもしれません。


ネットで調べると「プロジェクト設定」>「対応プラットフォーム」で "全てのプラットフォーム" のチェックを外し、iOS からチェックを外して再起動したり、Visual Studio のバージョンを上げたら直ったという方もいらっしゃったようですが直りませんでした。
(私の環境では Visual Studio 2019 と 2022 がインストールされています)


原因:Default Engine.ini の MinimumiOSVersion が合ってなかった?

関係があるのか分かりませんでしたが、「プロジェクト設定」>「プラットフォームの iOS」から "Minimum iOS Version" を確認すると、私の場合、デフォルトで iOS 15 が選択されており、選べるものは iOS 16 との二つでした。(UE5.1 で確認)

エラーや警告に iOS 14 という単語が書いてあったため、下記の方法を試すと修正することができました。


念のためご自身のプロジェクトを終了します。

"ご自身のプロジェクト"/Config/DefaultEngine.ini を開きます。

この中の下記項目を見つけます。

[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
MinimumiOSVersion=IOS_XX

(私の場合、ここが IOS_14 でした)


上記 IOS_XX の部分を「プロジェクト設定」>「プラットフォームの iOS」から "Minimum iOS Version" で選択できるバージョンに変更します(例えば IOS_15 や IOS_16)

[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
MinimumiOSVersion=IOS_15


プロジェクトを起動し、エラーがなくなったことを確認します。



これは未検証な上、全く見当違いかもしれませんが、PC 内の容量を削減する目的もあり、Epic Games Launcher のお使いのバージョンからオプションを選択し、対応プラットフォームの Android や HoloLens や iOS など、開発に関係ないプラットフォーム全てチェックを外しました。

その関係で足りないものがあったのかな?という気もしたので一応書き留めておきました(本当に見当違いの可能性があるのでご注意下さい!)


エラー:LogTemp: IPP ERROR: Could not find provision directory 'C:\Users"UserName"\AppData\Local/Apple Computer/MobileDevice/Provisioning Profiles/'.

公式ドキュメント:プロビジョニング プロファイルと署名証明書

iOS、iPadOS、tvOS でゲームを公開するために必要なファイルだそうですが、開発も対応プラットフォームも Windows なので iOS 系の設定等は必要ないかな?と思い下記で対応してみました。


原因:対応プラットフォームに iOS が入っている

「プロジェクト設定」> 「プロジェクトの 対応プラットフォーム」にある "全てのプラットフォーム" のチェックを外し、必要なさそうな iOS/Mac/tvOS の3つチェックを外してプロジェクトを再起動したら直りました(iOS だけでよかったかもしれません)

この画面に「非対応のプラットフォームでパッケージング、実行、クックのいずれかを行うと警告が出ます」と書いているので、対応プラットフォームが iOS や tvOS だった場合はこの方法では駄目そうな気はしますがそれ以上のことは不明です。


【Pack】エラー:LogInit: Display: LogCook: Error: GameDefaultMapにはリダイレクトされた参照'/Game/"対象Map へのファイルパス'が含まれます。目的のアセットはパッケージビルドにロードできません。プロジェクト設定で目的のアセットを再び選択して、この問題を修正してください。

開発中レベルに置いていたアセットが「アウトライナー」上のアセット名がグレー表示でアンロードと表示される(レベル上から消えたように見える)という症状がたまに出ていました。

マップ自体を開き直すか、Data Layer を使っている場合は Data Layer をロードし直すなどで回避出来ていました。

どうしても直らなかったので新しいマップを作成し、どこかのタイミングでパッケージ化した時に発生したエラーです。

原因:ゲーム開始時のマップを設定してなかった

「プロジェクト設定」>「マップ&モード」の "ゲームのデフォルトマップ" が None になっていたため、ゲーム開始時のマップを指定することで解決できました。


警告:FPackagePath::TryFromMountedName was passed an ObjectPath (/Game/"アセットまでのパス") rather than a PackageName or FilePath;

プロジェクトを起動時、アウトプットログを確認した時に表示されたことが確認できました。
同じような警告が並んでいることもありました。

原因:プロジェクト起動時に前回のタブを復元した際に表示される

プロジェクト起動時、右下に「前回エディタを閉じたときに、X個のアセットエディタが開きました。それらをもう一度開きますか?」というメッセージが表示され、[開く] を押すと前回開いていたタブが復元されます。

この時に表示される警告で、警告内に記載のある "アセットまでのパス" は復元されたタブのアセットになっています。

タブを復元しない、もしくはプロジェクトを終了時にタブを全て閉じてから起動し直すとこの警告は出ないようです。


最後に

また気が付いたエラーや警告があれば更新しようと思っています。
初めてのことばかりで本当に難しいですね...

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索