投稿記事

ゲーム制作の記事 (11)

わんころのUE5勉強会 2024/02/06 21:19

【自作ゲーム2】新しいゲーム制作の準備を開始します!

皆様、こんばんは!
新年が始まりもう一ヶ月が経過してしまいました...早すぎますね。

1月高熱が2回、腹痛、頭痛など体調を崩しており、今年の滑り出しは上々です。休日は殆ど快復に充てていたので UE は殆ど触れてませんでした。

ようやく落ち着いてきたので新しいゲーム制作を始める準備を開始しました!


とりあえず便利そうと思って買った Ultimate To-Do List
というプラグインですが、UE5 に統合されていることもあって使いやすい印象を受けました。

すぐその場で Trello に送信できたり、レベル上にメモ帳のように残せる機能もあるので忘れやすい自分にとってはいいプラグインでした。

ただ、パッケージ化するとエラーが出てしまい対処方法がわからなかったのでどうしようかなと思っています。プラグインを OFF にした後パッケージ化すれば問題ないないのですが、いちいち OFF にするのも面倒だなと思うので最終サポートに連絡してみようと思っています。


まだ試しておかないといけない機能などがあるため本格的に着手するのはもう少し先になりそうですが、進捗報告はこちらで公開していこうと思っています。



まだほとんど決まってないので変更されるかもしれませんが、一旦雰囲気だけは作っておこうと思いとりあえず1枚だけ画像を上げておきます。

ホラーゲーか純粋な脱出ゲームにするかで悩んでますが、細かい機能テストを行いながら考えたいと思います。


どっちにしてもインタラクトは必須機能なので前回の作品から改良し、コンポーネント単位でのインタラクトが可能になったため、戸棚の扉や引き出しを個別で開けるようになりました。
(以前は Actor 単位でのインタラクトでした)

調べる所が多くなったので何を探したらいいか分からないということがないようにしたいですね...


今年も宜しくお願い致します!

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

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

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

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

皆様、こんばんわ!

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


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

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


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


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


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


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

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

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

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

わんころの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/08/24 23:25

【UE5】PIE起動時にゲームのウインドウサイズが大きくなっていく

皆様、こんばんは!

多分 X(旧Twitter)で見た記憶はあったのですが見つけられなかったので備忘録。


Play In Editor(PIE)で実行すると別ウインドウでゲーム画面を確認することできます。しかし、UE5 にて PIE> 閉じる> PIE> 閉じる...と繰り返すだけでウインドウサイズが大きくなっていくという症状があります。

画面の比率が意図せず変わってしまうので、場合によっては面倒な症状になります。


Unreal Engine Issues にも上がっており、UE5.4 で修正予定のようですがまだ当分先になりそうですね...
URL:New Viewport Resolution setting increases every time a new PIE window is launched




Unreal Engine Issues の通りなのですが、
「エディタの環境設定」> レベルエディタの中にある「プレイ」をクリックし、"Game Viewport Settings" にある "常に最初のビューポートウインドウを画面の中央に配置" のチェックが外れているとこの症状が発生します。

PIE 時に必ず画面中央に配置された状態になるので使いにくいかもしれませんが、チェックを入れておくとでこの症状を回避できます。

C++ を使うと修正出来そうですが、詳しくないためよく分かりません...

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

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

わんころのUE5勉強会 2023/08/21 20:14

【UE5】Add to Viewport の ZOrder にハマったというお話

皆様、こんばんは!

先日から UI(Widget)周りを触っているのですが、タイトル通り「Add to Viewport」の ZOrder でハマってた時のお話になります。


「Add to Viewport」は、「Create Widget(ウィジェットを作成)」で指定した Widget を画面上に表示する時に利用する関数です。


今回ハマった問題ですが、表示した Widget のボタンが昨日まで反応してたのに何かを実装してから反応しなくなったというものでした。
しかも別 Widget で作成したインベントリの方も同じ症状が発生しました。
(ButtonWidget の On Hovered や On Clicked が効かない症状です)





その「Add to Viewport」ですが、関数の下にある▽をクリックして展開すると、ZOrder という引数が表示されます。

ZOrder は描画順(優先順位)で、数値が大きい程手前に描画されます。
デフォルトで ZOrder は 0 に指定されており、特に意識しなければ後から「Add to Viewport」したものが手前に描画されていきます。


例えば WidgetA を作成し、画面の真ん中にボタンを配置しただけの Widget を作成します。

更に WidgetB を作成し、Border を画面全体に入れておきます。

「CreateWidget」で WidgetA、WidgetB を作成しておき、WidgetA→ WidgetB の順で「Add to Viewport」をすると WidgetA のボタンは反応しません。

後で「Add to Viewport」した WidgetB(画面全体の Border) が手前に来ているため、後ろのボタンが触れないようになっているということになります。

そのため、WidgetA を後で「Add to Viewport」するか、WidgetA の ZOrder を WidgetB より高くしておけばこの問題は解決です。


なんだそれだけ...なことなんですが、実はもう一個気づけなかった理由があります。

私のプロジェクトで一部の Widget のみ「Add to Viewport」した後、「Set Visibility」を使って Visible/Collapsed で表示を切り替えていたものがあったんですが、Collapsed になっている Widget が悪さをしているということが分かりました。
(この Widget が画面大半を占める Border を配置しているものでした)


Collapsed で非表示にしていたので、それが邪魔をしているのに暫く気づけませんでした。「Remove from Parent」をしなければ画面上に表示されていなくても ZOrder の影響を受けるということを知れて大変勉強になりました。


この問題に遭遇し、今まで他の Widget に干渉するような画面配置をしたことがなかったんだと思いました。
たまたま被らないような配置になってたということになりますね...

それではまた!

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

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

« 1 2 3

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索