投稿記事

わんころのUE5勉強会 2023/10/17 20:02

自作ゲームの進捗22:進行不能バグとの闘い

皆様、こんばんわ!

前回、抱えていた不具合から解放されて実装が進んでいるという記事を上げました(自作ゲームの進捗21)


そんなことは束の間で、ここ数日は前よりもひどいバグと闘っております。

軽度なものから進行不可レベルのものまで多岐に渡り、全てを記載している訳ではないですがそれでも40個以上のバグと、未対応バグが5つ(進行不能バグ2つ含む)が残っています。


最近遭遇しているバグのほとんどが、ゲーム中にオプションからタイトル画面に戻り、そこからニューゲームを行った際、適切な初期化処理がされず、更にその副作用なのか特定のタイミングでしか発生しないバグもあったりで結構やっかいです。


色々検証した感じでは一度ゲーム自体を落として起動し直したり、レベルを開き直すと発生しないみたいなので、レベル上に置いてあるインスタンスを初期化するタイミングと、以前までプレイしてたセーブデータの読み込みタイミングが噛み合ってないのだろうと思います。


なので、レベルを開き直しの方向で進めようかと思っていたんですが、一部 BP の連携のため参照していたものが作り直しになるのでアクセス違反になっていて、これもそういえばそうか...という感じでどっちがいいのか検証しながら決めていこうと思っています。
(再度参照を持たせるように処理できればそっちの方が早そうな気はしてます)


その過程で、Game Instance のイベントグラフで Time Line が使えないことを知りました。

本当にゲームを完成させている方の凄さをひしひしと感じております。
それではまた!

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

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

わんころのUE5勉強会 2023/10/17 18:30

Tips カテゴリを追加しました

皆様、こんばんは!

ゲーム制作とは別に UE5 に関する内容も公開しており、記事の数も少し増えたので新しく "Tips" のジャンルを追加しました。

こちらの Top ページ をクリックし、「投稿記事」> 右サイドカラムの "TIPS" タグよりご覧頂けます。

宜しくお願い致します。

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

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

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

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

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


最後に

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

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

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

わんころのUE5勉強会 2023/10/07 21:12

自作ゲームの進捗21:抱えてた不具合から解放され色々実装が進んでます

皆様、こんばんは!

抱えていた Level Sequence 周りの不具合が解消され、色々やりたかった実装を再開させることができました。
まだ UI 周りも整えないといけないですが、ある程度の見通しは立っているので嬉しい限りです。

先日実装したチュートリアルですが、やはりチュートリアルの出し方を変更しようと思いました。



現在チュートリアルを出す時に、こんな感じで画面いっぱいに UI が表示された上、念のため Game Pause にしていました。

プレイ時の確認で色々見る機会も多くなってきたのですが、正直画面を止めてまで見たい操作ではなく、今に至っては煩わしさを感じます。
ゲームの進行を止めず、ちらっと表示させるような方向へシフトしようと思います。

一応オプション画面にてもう一度見返せるようにメニューもつけてるので、最悪そこを見て貰うようにしようかと思いました。

このチュートリアルを作ってる最中にも思ってはいましたが、プレイ中の手が止まるのはやはり良くないなと改めて感じました。



脱出ゲームメインと言っていた本作ですが、ネタバレにもなるのでやめとこうかと思いましたが、ホラーっぽい感じも入れたい!というのは以前から言ってたので1枚だけスクショを載せてみます。

初のゲーム作りということもあり演出面等含めどうしたらいいのか全然分かってませんが、自分がプレイしたホラーゲームでこういう通路は嫌だなと思ったものを入れてみました。


ホラーゲームと言えば不気味さや暗さの演出も楽しみの一つではあるのですが、ただ暗いだけなのは全然怖いと思わなくて、現実味はないのに見たことあるものが置かれてるとゾクッとします。

壁とかも単にマテリアルだけに頼らず、Decal を使って汚したり等はするようにしてますが結構大変な作業ですね。
手をかけた分、見た目が自分好みになった時は嬉しさも増すのがいいですね!こういうのを自分で作れる日がくるなんて感動ものです!


制作は続けておりますのでこれからも頑張りたいと思います。
丁度来週の土曜日がスーパーゲ制デーなので X で呟いてみようかなと考えていたり...


それではまた!

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

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

わんころのUE5勉強会 2023/10/01 12:00

この度、応援頂ける方向けのプランを作成致しました

皆様、こんにちは!

この度、現在の活動を応援頂ける方に向けてプランを3種類作成致しました。価格は100円/300円/500円となっています。

▼ こちらよりプランの選択が可能です
https://ci-en.net/creator/15980/plan

どのプランでも特典等はございませんのでご注意下さい!


用意しても特別何か出来る訳でもなかったのでかなり悩んでいましたが、やるだけやってみてはとアドバイスを頂き思い切って作成させて頂きました。

もし今後の活動を応援頂ける方がいらっしゃいましたら宜しくお願い致します。



▼ 応援頂ける方に向けて
わんころの主な活動場所や活動内容について。

X(旧Twitter)

https://twitter.com/UE5wancoro

主に UE5 を扱って試したことなどを呟いております。


Ci-en:このサイトです

こちらでは主に開発中のゲーム進捗を上げたり、勉強したことや検証したことを Twitter では短くて書きづらいものを載せています。
まずは無料の脱出ゲーム公開を目指しております。


YouTube

https://www.youtube.com/@ue5wancoro
勉強したものを中心に動画を公開しております。

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

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

1 2 3 4 5 6 7

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索