Posted Articles

TIPS's articles. (21)

わんころのUE5勉強会 Jan/09/2024 19:09

【UE5】プロジェクト起動時のエラーFailed to load special material~

経緯

別プロジェクトにあった Static Mesh を本プロジェクトへ移行し、モデリングモードで Pivot の位置を修正しようとしたところ UE が落ち、もう一度同じことをしたら再度落ちました。

それ以降、プロジェクト起動時に下記エラーで起動しなくなってしまいました。


エラー内容

Fatal error: [File:D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\UnrealEngine.cpp] [Line: 2852] Failed to load special material 'InvalidLightmapSettingsMaterialName' from path ''.
(' ' で囲われた部分はエラーによって違う可能性があります)

指定のマテリアルがうまくロードできなかったエラーなんでしょうか。


方法1:プロジェクトのバージョンを上げる


プロジェクトのあるフォルダを開き .uproject ファイルを右クリック>「Switch Unreal Engine version」をクリックします。


現在のプロジェクトより上のバージョンを選択した後、再度プロジェクトを開き直すと問題はありませんでした(例えば 5.1> 5.3)
プロジェクトのバージョンアップが望ましくない場合は下記手順でも回避できました。

方法2:iniファイルを少し編集する

※ プロジェクトは開きましたが、これでいいのか判断できないため自己責任でお願い致します。


"開かないプロジェクト"/Saved/Config/WindowsEditor 内にある「Engine.ini」を開いて下記の行を探します。

[/Script/Engine.Engine]
InvalidLightmapSettingsMaterialName=None

この二行を削除するとプロジェクトを起動できるようになりました。


上記以外にも同じ名前はヒットしましたが関係なさそう?でした。一応記載しておきます。

"開かないプロジェクト"/Intermediate/Config/CoalescedSourceConfigs/Engine 内にある「Engine.ini」

"開かないプロジェクト"/Saved/Temp/Win64/Engine/Config 内にある「BaseEngine.ini」


参考リンク

https://forums.unrealengine.com/t/fatal-crash-loading-project-failed-to-load-special-material/302550/8


ここに記載されていた 「yourproject」/config!DefaultEngine.ini には上記の二行はなく、PreviewShadowIndicatorMaterial という単語もありませんでした。

私のエラーは「'InvalidLightmapSettingsMaterialName'」だったのですが、このフォーラムは「'PreviewShadowIndicatorMaterial'」だったのかもしれません。


参考になれば幸いです。

If you liked this article, support the creator with a tip!

Sending tips requires user registration.Find details about tips here.

わんころのUE5勉強会 Jan/09/2024 12:00

【UE5】フォルダやコメントの色などで使うカラーを別プロジェクトでも使う

皆様、こんにちは!

今回は以前使ってたプロジェクト内で利用していたフォルダやコメントなどのカラー情報(下記画像)を別プロジェクトでも利用したい場合についてです。

他に方法があったら申し訳ございませんが、手動でのコピペ作業になっているので備忘録として残しておきます。
※2024-01-15 追記
プロジェクトごとに手動コピーしなくても共有できる方法があったため追記



↑これを別のプロジェクトでも利用したい

プロジェクトごとにコピーする

この後の作業でテキストをコピペするため、一応新しいプロジェクトを開いている場合は閉じておきます。

そして以前作成したプロジェクトフォルダの中に下記ファイルがあるので探します。

"Projectフォルダ"/Saved/Config/WindowsEditor の中にある
EditorPerProjectUserSettings.ini を開きます。
(ただのテキストデータなのでメモ帳などで開けます)


次に、検索(Ctrl+F)等を使い [ColorThemes] を見つけます。
フォルダやコメントのカラーを変更している場合は例えば下記のような感じで見つかると思います。

この [ColorThemes] 内にあるもの(画像だと「Theme0Label12=」まで)をコピーし、新しいプロジェクトにも同じ場所に EditorPerProjectUserSettings.ini があるので、空いてる場所のどこでもいいので貼り付けます。

保存して閉じ、新しいプロジェクトを開き直せばカラーピッカーの画面に色が反映されていると思います。


上記の方法を Engine や Project 問わず共有する

恒吉星光先生がこのようなポストをされていました。
https://x.com/seiko_dev/status/1745387005960425580?s=20

前述の方法では作成したプロジェクトごとにコピーをしなくてはいけませんでしたが、 恒吉星光先生の方法では Engine や Project 問わず共有する方法となっています!


ファイルを置く場所:
C:\Users\"User Name"\Documents\Unreal Engine\Engine\Config

Documents 以下のフォルダは私の PC にはなかったので、新規フォルダを上記階層になるように作成していきました。そして、Config フォルダ内に下記ファイルを置きます。


ファイルの名前:
UserEditorPerProjectUserSettings.ini

これも新規テキストファイルを作成し、名前と拡張子をこのように付けて保存すれば OK です。
(先程の EditorPerProjectUserSettings.ini のファイル名の頭に User がついただけです)

このファイルの中身に先程手動でコピーした [ColorThemes] の内容を張り付けて保存すれば、プロジェクトや UE のバージョン問わずカラーピッカーの情報が共有されます。

試しに UE5.1.1 と UE5.3.2 でそれぞれ新規プロジェクトを作成して確認した所、問題なく共有できていることを確認出来ました。
これで毎回必要な時にコピーする作業がなくなるので激熱ですね!


自分用メモ

[ColorThemes]
Theme0=新テーマ
Theme0Color0=(R=0.000000,G=0.000000,B=0.050980,A=1.000000)
Theme0Label0=
Theme0Color1=(R=0.000000,G=0.000000,B=0.356400,A=1.000000)
Theme0Label1=
Theme0Color2=(R=120.000000,G=0.902736,B=0.527115,A=1.000000)
Theme0Label2=
Theme0Color3=(R=112.332787,G=0.935911,B=0.262251,A=1.000000)
Theme0Label3=
Theme0Color4=(R=0.000000,G=0.861111,B=0.577580,A=1.000000)
Theme0Label4=
Theme0Color5=(R=0.000000,G=1.000000,B=1.000000,A=1.000000)
Theme0Label5=
Theme0Color6=(R=243.033600,G=0.906248,B=0.250000,A=1.000000)
Theme0Label6=
Theme0Color7=(R=243.033875,G=0.862021,B=0.658375,A=1.000000)
Theme0Label7=
Theme0Color8=(R=229.965408,G=0.950293,B=1.000000,A=1.000000)
Theme0Label8=
Theme0Color9=(R=0.000000,G=0.422420,B=1.000000,A=1.000000)
Theme0Label9=
Theme0Color10=(R=19.947052,G=1.000000,B=1.000000,A=1.000000)
Theme0Label10=
Theme0Color11=(R=165.337906,G=1.000000,B=0.799103,A=1.000000)
Theme0Label11=
Theme0Color12=(R=180.000000,G=0.787769,B=1.000000,A=1.000000)
Theme0Label12=

If you liked this article, support the creator with a tip!

Sending tips requires user registration.Find details about tips here.

わんころのUE5勉強会 Jan/02/2024 12:00

【UE5】Actor Component内に実装したBlueprint Interfaceを利用する

皆様、明けましておめでとうございます!

今回は Blueprint Interface(以下 BPI) の実装を、Actor Component 内で行った場合の処理を記事にしてみました。
※ BPI の細かい使い方についてはここでは解説しておりません


まずは通常の Actor BP で実装をおさらい

例えば BP_ThirdPersonCharacter に「Line Trace By Channel」でヒットした時に、該当の Actor に BPI を使って通知するという処理を実装したとします。

ターゲットが "Hit Actor" になっているので、この BPI を実装している Actor 側でヒット時の処理を行うような想定です。




そこで、BP_Cube という Static Mesh にキューブをセットした Actor を用意し、BPI の設定と中身を実装した例です。




レベルに置いたキューブに LineTrace がヒットして、画面に Hit と表示されたのがこの画像です。

次は Actor Component にこの BPI を設定した場合を見ていきます。
※ BP_Cube に設定した BPI は必要ないので削除して大丈夫です



Actor Component 内で BPI を使用する

まずは Actor Component を作成するため、コンテンツブラウザで右クリック>「ブループリントクラス」から、[Actor Component]を選択して適当な名前を付けておきます。



これも先程同様、「クラス設定」>「実装インターフェース」で BPI を設定し、中身を「Print String」にしておきました。




そして BP_Cube の「コンポーネント」パネルにある[+追加]から、先程作成した Actor Component を追加します。
(画像では AC_Sample となっています)



BP_Cube に BPI を実装した Actor Component が追加されたので、同じ結果になると思いきや...


ヒットしているのに Hit という文字が出ていません。

これは、LineTrace を行った時のターゲットが違うためです。

先程はヒットした Actor 自身(BP_Cube)がターゲットになっていましたが、今度は Actor に追加した Actor Component がターゲットになるため下記のように変更します。



"Hit Actor" から引っ張り、「Get Component by Class」か「Get Components By Class」を出し、それをターゲットに繋ぎます。

"Component Class" には先程作った Actor Component を指定します。

Components By Class は複数形なので配列になっていますが、BPI のターゲットにそのまま繋ぐことができます
これで Actor BP で追加した Actor Component の BPI に処理を送信できるようになります。


今回の例では LineTrace にヒットした Actor に対してですが、もし操作キャラクターに追加した Actor Component に通知を送りたい場合は
「Get Player Character」>「Get Component by Class」>BPIのターゲットへ繋げばいいということになります。


画像は使いまわしですが正しくヒットと表示されると思います。
以前 Actor Component 内の BPI 実装に引っ掛かったことがあったのを思い出し、今年初の記事にしてみました。

それでは皆様、今年も宜しくお願い致します!

If you liked this article, support the creator with a tip!

Sending tips requires user registration.Find details about tips here.

わんころのUE5勉強会 Dec/03/2023 00:28

【UE5】UMGのシーケンサーでマテリアルのパラメータを直接制御する

皆様、こんばんは!


今回は、作成したマテリアルの中で利用しているパラメータを、マテリアルコレクションを使わずに UMG のアニメーションシーケンサーで制御する方法について紹介しようと思います。

適当なマテリアルを作成

コンテンツブラウザで右クリック> マテリアルから適当なマテリアルを作成します。

続いて UMG で利用できるようにするため「Material Domain」を [User Interface] に変更します。

そして適当なパラメータを用意しておきます。
今回はサンプルとして、Constant(画像の ParamScalar)と、Constant4Vector(画像の Param4Vector) をパラメータにしています。


UMGを作成してマテリアルをセットする

コンテンツブラウザから右クリック> 「ユーザインターフェース」> 「ウィジェットブループリント」から、UMG を作成して開きます。



Border や Image の「Brush」>「Image」には、「Material Domain」を [User Interface] にしているマテリアルもセットできます。

今回は Overlay に Border を追加し、先程作成したマテリアルをセットしておきました。

このマテリアルに仕込んだパラメータ(ParamScalar/Param4Vector)を UMG のアニメーションシーケンサーで制御しようというのが今回の記事です。


アニメーションシーケンサーで利用する

画面左下より「アニメーション」を選択し、アニメーションシーケンサーを表示します。
[+アニメーション]ボタンをクリックして適当に名前を付け、[+トラック]ボタンからマテリアルをセットした Border をクリックします。



追加した Border の右側にある[+トラック]ボタンをクリックし、「Brush.ブラシマテリアル」を選択します。


最後に「Brush.ブラシマテリアル」右側の[+パラメータ]をクリックすると、先程マテリアル作成時にパラメータ化していたものが表示されています。

これでシーケンサーで値を変化させる準備が出来ました。



後は、シーケンサー上でキーを打ったり、値を変更したりすれば OK です。

UMG のアニメーションシーケンサーで利用する際、マテリアルパラメータコレクション経由でないと使えないと思ってたのですが、直にパラメータを触れるんだなと思った記事でした。

If you liked this article, support the creator with a tip!

Sending tips requires user registration.Find details about tips here.

わんころのUE5勉強会 Oct/15/2023 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個のアセットエディタが開きました。それらをもう一度開きますか?」というメッセージが表示され、[開く] を押すと前回開いていたタブが復元されます。

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

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


最後に

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

If you liked this article, support the creator with a tip!

Sending tips requires user registration.Find details about tips here.

« 1 2 3 4 5

Search by Article Tags

Monthly Archive

Search by Exclusive Perks

Search Articles