UE4におけるレベル制作事例【UE4を用いた大規模開発事例紹介 ~スクウェア・エニックス様をお招きして~ 2019】

18.5K Views

March 20, 19

スライド概要

※本セッションには多くの動画が含まれていたり、ノートに備考が記載されている可能性があります。実際の講演で行われたスライドが下記からダウンロード可能ですので、是非そちらをご覧頂けますと幸いです。
講演パワーポイントリンク: https://epicgames.box.com/s/1ywmmc4oyeknaqvejdq5zwczfnwl7ywr

登壇者
吉田 武史さま

内容 
ブループリント、レベル周りのワークフローや最適化関係をお話させていただきます。


本スライドは2019年3月15日に行われた「UE4を用いた大規模開発事例紹介 ~スクウェア・エニックス様をお招きして~」にてスクウェア・エニックス様に講演していただいたものです。

profile-image

Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/

シェア

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

UE4におけるレベル制作事例 株式会社スクウェア・エニックス ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 吉田 武史 VFX STUDY GROUP

2.

略称について ・『Unreal Engine 4』をスライド内では『UE4』と記載しています ・『PlayStation®4』も同様に『PS4』と記載しています ・一部『ブループリント』を『BP』と記載しています ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

3.

本プロジェクトは UE4.17.2 を使用して作成されており 本スライドの内容もそれに準じて作られております。 最新バージョンでは挙動、もしくはソースコードが 変更されている可能性がありますのでご了承ください ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

4.

まずは自己紹介 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

5.

自己紹介 吉田 武史 プログラマー。 入社して現在ちょうど4年目。UE4 歴は5年目。 (1年はBPでの開発、残りはC++とBPの両方を触る) 元々はブループリントのサポート担当で配属されましたが 色々と雑務をしている内にレベルプログラム担当に。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

6.

今回お話する内容について ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

7.

今回お話する内容 • ブループリント • レベルの構成 • レベルストリーミング • レベルの最適化 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

8.

今回お話する内容 • ブループリント • レベルの構成 オブジェクト継承のブループリントと レベルブループリントをメインに • レベルストリーミング 解説していきます。 • レベルの最適化 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

9.

ブループリント どれくらい使っていた? ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

10.

ブループリント どれくらい使ってた? 本プロジェクトでは プランナー、デザイナー、プログラマー どのセクションでも高い頻度で使っていました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

11.

ブループリント どれくらい使ってた? 各セクションが どういった感じで使っていたかというと…… ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

12.

ブループリント どれくらい使ってた? こんな感じで使っていました。 プランナー プログラマー デザイナー ・「仕掛け」の作成 ・「仕掛け」の作成 ・見た目の調整 ・ゲーム性検証 ・ミニゲーム作成 ・演出強化 ・ミニゲーム作成 ・カメラ挙動作成 ・「仕掛け」とは…… ボタン等のプレイヤーからのアクセスで起動するオブジェクトや プレイヤーの進行を阻害する為に動作しているオブジェクトの事を指す。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

13.

ブループリント 使う上でのルール ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

14.

ブループリント 使う上でのルール B PのTick はな る べく 使 わな い ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

15.

ブループリント 使う上でのルール BPのTickはなるべく使わない 理由は2つあり…… ・処理負荷が上がるのでなるべく使いたくない ・Tick を使う = 複雑な物になりやすい ・呼び出しイベントから実行して終わる程度の シンプルな流れで済ませたい ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

16.

ブループリント 使う上でのルール BPのTickはなるべく使わない ・「完全に使わない」ではなく「なるべく使わない」 ・必要な場面であれば使用 ・使用する場面のみON、使用後はOFFといった感じで 常にTickをONにするという事はほぼ無かった。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

17.

ブループリント 使う上でのルール BPのTickはなるべく使わない プログラマー側では どの Tick が動いているか定期的に調査。 不要な物が見つかった場合は担当者に連絡し 実装方法に関してすり合わせをしていた。 最終的にこの流れが浸透し、Tick 使用率は自然と減少傾向に。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

18.

ブループリント 使う上でのルール 親クラスはなるべ く C ++ ク ラス に ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

19.

ブループリント 使う上でのルール 親クラスはなるべくC++クラスに ・これも絶対ではなく「なるべく」 ・重たい処理があってもC++に逃がしやすい ・C++であれば実機デバッグ時にコード修正だけで確認可能 ・C++からの継承コンポーネントも除去可能 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

20.

ブループリント 使う上でのルール 親クラスはなるべくC++クラスに RazorCPU などのプロファイラーとも相性がよくなる。 コールスタックから、どのオブジェクトか判断が付きやすい。 本プロジェクトでは処理負荷はTest版で見ており こちらで仕込んだマーカーで負荷を確認する事が大半だった。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

21.

ブループリント 使う上でのルール 親クラスはなるべくC++クラスに その他 気になる点としてBPクラスロード時に 親BP が持つアセットを芋づる式に呼んでしまう問題がある。 C++クラスでも同じ作りは出来るが コーディングルールとして禁止していた。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

22.

ブループリント 使う上でのルール インプットイベン ト はエ デ ィタ ー 限定 に ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

23.

ブループリント 使う上でのルール インプットイベントはエディター限定に キーボードイベントを利用してのデバッグは 非常にお手軽で便利なのだが 製品版に残る可能性がある為 レベル上で設定できるインプットイベントは エディター以外では無効にするようにした。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

24.

ブループリント 使う上でのルール B Pマクロの活用 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

25.

ブループリント 使う上でのルール BPマクロの活用 ・各作業者が独立した設計を避ける為にBPマクロを積極的に使用 ・使用頻度の高いノードも事前にBPマクロでラッピングしている ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

26.

ブループリント 使う上でのルール BPマクロの活用 ・ BPマクロの中身は定期的にプログラマー側で確認。 ・整理できる部分は作成者と相談してリダクションする。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

27.

ブループリント 使う上でのルール 定期的にB Pの中身 を プロ グ ラマ ー が 確 認 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

28.

ブループリント 使う上でのルール 定期的にBPの中身をプログラマーが確認 ・開発末期でもいいので確認する工程が必要 ・奇想天外な物、複雑な物がよく見つかる。そういった場合 担当者と話し、最適な修正方法を話し合う必要がある。 使われてない変数が見つかったり Transient フラグを付けた方がいい物が いっぱいあった。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

29.

ブループリント 使う上でのルール 定期的にBPの中身をプログラマーが確認 BPクラスへのCastも注意が必要。 Cast したクラスが BP クラスだった場合 その BP クラスを参照する形になりロード対象となってしまう。 BPをCastすると、このBPも読み 込み対象になってしまう。Castし たBPがレベル上に存在するのであ れば問題ないが、存在しないので あれば無駄な読み込みとなる。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

30.

ブループリント • 良かった所と悪かった所 使用して困った事 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

31.

ブループリント 使用して困った事 「何でも出来る」 そ れが 仇 にな る 場面 も … ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

32.

ブループリント 使用して困った事 「何でも出来る」それが仇になる場面も…… ブループリントは実装が早い事が利点ではあるものの チカラづくで実装された物も多く 後に現れる複雑な仕様に対応できず 大きな問題に発展する事も多々あった。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

33.

ブループリント 使用して困った事 「何でも出来る」それが仇になる場面も…… そういった物の大半は プログラマーから見ると簡単に対応できる案件だったり コードで組んだ方が楽という物も多かった。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

34.

ブループリント 使用して困った事 「何でも出来る」それが仇になる場面も…… 何はともあれ 雲行きが怪しくなってきたら プログラマーに相談するのが一番ベスト。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

35.

ブループリント 使用して困った事 パフォーマンス面 で 問題 が 多数 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

36.

ブループリント 使用して困った事 パフォーマンス面で問題が多数 ブループリントノード、コンポーネント周りで 想定外の使われ方をしている物が多数存在していた。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

37.

ブループリント 使用して困った事 パフォーマンス面で問題が多数 特にコンポーネントは凄まじい数で つけられている物があり そこから発生する Tick 負荷や アクター移動・回転時の コリジョン負荷が目立っていた。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

38.

ブループリント 使用して困った事 パフォーマンス面で問題が多数 この他では ChildActorComponent が起因の バグ・処理負荷も多く起きていた。 根深い問題に関してはプログラマー側で作り直し それ以外は相談して対応で済ませていった。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

39.

ブループリント 使用して困った事 パフォーマンス面で問題が多数 最終的には知見が溜まっていき パフォーマンス面の問題は発生しづらくなっていった傾向に。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

40.

ブループリント 使用して困った事 可読性の低い物が 多 く、 作 りに 性 格 が 出 る ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

41.

ブループリント 使用して困った事 可読性の低い物が多く、作りに性格が出る 人間だもの。仕方がない。 ※ 再現画像を用意しようと思いましたが再現が大変すぎて諦めました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

42.

ブループリント 使用して困った事 バグが非常に多か っ た ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

43.

ブループリント 使用して困った事 バグが非常に多かった 使用しているセクションが多く BPの習熟度は人それぞれ、かつ性格も出るので バグの種類もバリエーション豊かに。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

44.

ブループリント 使用して困った事 バグが非常に多かった 思い出深いバグを下記に…… ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

45.

ブループリント 使用して困った事 バグが非常に多かった 思い出深いバグを下記に…… ・Latent( Delay )を多用しすぎて処理順が崩壊 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

46.

ブループリント 使用して困った事 バグが非常に多かった 思い出深いバグを下記に…… ・Latent( Delay )を多用しすぎて処理順が崩壊 ・BeginPlayでイベントフラグを立てたままサブミット → 原因不明のバグに。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

47.

ブループリント 使用して困った事 バグが非常に多かった 思い出深いバグを下記に…… ・Latent( Delay )を多用しすぎて処理順が崩壊 ・BeginPlayでイベントフラグを立てたままサブミット → 原因不明のバグに。 ・イベント途中でアクターの表示をOFF → そのタイミングで イベントスキップしたらイベント終了後に表示が消えっぱなし。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

48.

ブループリント 使用して困った事 バグが非常に多かった 思い出深いバグを下記に…… ・Latent( Delay )を多用しすぎて処理順が崩壊 ・BeginPlayでイベントフラグを立てたままサブミット → 原因不明のバグに。 ・イベント途中でアクターの表示をOFF → そのタイミングで イベントスキップしたらイベント終了後に表示が消えっぱなし。 ・バグを修正したが、対処が甘く他のバグを生み出した。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

49.

ブループリント 使用して困った事 バグが非常に多かった 多くのバグは人為的ミスによるものだったので 全てのカスタムイベントや特定のアクターの配置情報を Csv、もしくはテキストで書き出すコマンドレットを作成。 それを参考に各セクションが人力で対処するという形で収まった。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

50.

ブループリント 使用して困った事 バグが非常に多かった 設計ミスで発生した物はプログラマーが引き取り対処。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

51.

ブループリント 使用して困った事 バグが非常に多かった 嬉しい誤算もあって 終盤ではどのセクションも多くの失敗経験をしたおかげで 簡単なバグならプログラマーを介さず対処できるようになっていた。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

52.

ブループリント 作成して有用だった機能 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

53.

ブループリント 作成して有用だった機能 『B ool 』から 『Bit 』 への 機 能修 正 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

54.

ブループリント 作成して有用だった機能 『Bool』から『Bit』への機能修正 ある程度の規模のゲーム開発になると 想定していない所でフラグが書き換えられる事が多々ある。 表示周りだと 「OFFにしていたのに知らぬ間にONになっていた」 という事がよく発生する。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

55.

ブループリント 作成して有用だった機能 『Bool』から『Bit』への機能修正 ブループリントがある以上 他の作業者から書き換えられる事もあれば システムを制御するマネージャーから書き換えられる事もあり UE4標準の Bool での制御では耐えきれない事が 早期に分かっていた。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

56.

ブループリント 作成して有用だった機能 『Bool』から『Bit』への機能修正 そこで一部の機能は Bool で扱うのではなく Bit として扱うように改造。 「セクション」「カテゴリー」といった単位でビットを振り分け 1つでもビットが落ちている場合は 結果を False にするような仕組みを作成した。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

57.

ブループリント 作成して有用だった機能 『Bool』から『Bit』への機能修正 表示切替のサンプルを用意しました。 Hidden が Bit をどう扱うか。 Category がどの Bit を使うか。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

58.

ブループリント 作成して有用だった機能 『Bool』から『Bit』への機能修正 最終的に Bit へ機能変更した物は下記に。 ・表示の切り替え ・コリジョンの切り替え ・TickのON、OFF これらはアクター版、コンポーネント版の二種類がある。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

59.

ブループリント 作成して有用だった機能 『Bool』から『Bit』への機能修正 この機能が出来た事によりブループリントのノードも UE4標準のものではなくプロジェクト専用の物に置き換えた。 機能作成前はフラグの切り替え周りで ワーストケースが頭にちらついていたが 機能作成後は特に問題がなく運用できたので非常に良かった。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

60.

ブループリント 作成して有用だった機能 『Bool』から『Bit』への機能修正 また、プロジェクトが末期になると ・特定の条件下で特定のオブジェクトの表示を消したい といった案件もよくあり、その部分も本機能で乗り切れた事が多 かった。最終的には17ビット分の役割が当てられていたので活用 する場面は多かったと思える。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

61.

ブループリントのお話は以上です ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

62.

次にお話する内容 • ブループリント レベルに関する情報を • レベルの構成 あっさり目に • レベルストリーミング 説明していきます • レベルの最適化 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

63.

レベル構成 1パーシスタントレベルのサブレベル数 少ない所で30、多い所で200弱程度。 サブレベルが多いと管理が大変で 特にレベルストリーミング周りの制御は非常に難航。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

64.

レベル構成 1パーシスタントレベルのアクター数 アクター数は多い所で16000、少ない所で8000程。 これはエディター上で表示されている数値で 動的に配置されるアクターも存在するので 実際にはこれよりもうちょっとだけ多い。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

65.

レベル構成 1パーシスタントレベルのアクター数 ただし、インゲームではレベルストリーミングの関係で 大部分のアクターが削られる。 実際のゲームではもっと少ないアクター数で動いている。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

66.

レベル構成 • 良かった所と悪かった所 サブレベルのカテゴリー ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

67.

レベル構成 大まかに下記のようなカテゴリーで分けられている。 ・ゲームフロー ・リアルタイム演出 ・専用ミッション ・エネミー ・カットシーン ・風 ・背景 ・ボイス ・エフェクト ・NPC ・サウンド ・宝箱 ・仕掛け ・ミニゲーム ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

68.

レベル構成 • 良かった所と悪かった所 ゲームフローとは? ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP

69.

レベル構成 ゲームフローとは? 下記をブループリントで作成する事を指します。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP