メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例【UNREAL FEST EAST 2019】

35.7K Views

October 09, 19

スライド概要

講演動画:https://youtu.be/jykrWtBQEz0

2019年10月6日に行われた「UNREAL FEST EAST 2019」における「メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例」の登壇資料です。
●公式サイト
https://unrealengine.jp/unrealfest/
===
Nintendo Switch用ソフト『DAEMON X MACHINA(デモンエクスマキナ)』の開発について、エンジニアからはUE4をどのように活用しメカアクションを実現したか、また、アーティストからは本作の特徴的なルックの一つであるVFXをメインに、お伝えします。

profile-image

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

シェア

またはPlayer版

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

関連スライド

各ページのテキスト
1.

#ue4fest

2.

DAEMON X MACHINA • • • • • 9/13 世界同時発売 Nintendo Switch メカアクション 弊社内コンシューマタイトルで初のUE4採用 UE4.20 #ue4fest

3.

本日の内容 • 前半 エンジニア編 • 河野 雄太 • 後半 VFX編 • 菊地 悟 #ue4fest

4.

エンジニア編 具体的なUE4機能活用事例と問題点・対処法 #ue4fest

5.

自己紹介 株式会社マーベラス 河野 チーフエンジニア 雄太 経歴 2006年に株式会社アートゥーンに新入社員として入社 そのまま会社合併による転籍で 2014年からマーベラスAQL(現マーベラス)に勤務 開発タイトル アクションRPG マルチプレイアクション Xbox360→Wii→PSVita→PS4→iOS/Anrdoid→Switch #ue4fest

6.

DAEMON X MACHINA の構成 • 拠点とバトルシーンを行き来する クエストクリア型のゲーム進行 • 4人マルチプレイ • メカも人間も細かくカスタマイズ • キャラクターエディット • フルキーコンフィグ・HUDカスタマイズ • メカものだが、リアル寄りではなくコミック寄りの絵作り • テキスト9言語、音声2言語 #ue4fest

7.

アジェンダ • • • • • • • • UE4運用方針 キャラクター構成 レベル構成 絵作り・レンダリング VFX・SFX デモシーン UI フルキーコンフィグ • • • • マルチプレイ ローカライズ パフォーマンス 自動プレイ #ue4fest

8.

UE4運用方針(理想) • UE4はなるべくそのまま使う • 改造し始めたらきりが無い • バージョンアップ時のマージ対応が悲惨 • 共有しやすい、今後検証・拡張しやすい • 本当に必要なものは自作する • プラットフォーム独自機能 #ue4fest

9.

UE4運用方針(現実) • UE4は大半そのまま使った • 絵作りに関わるレンダリングまわりは手を加えた • トゥーン表現 • 平行光源を追加して3つ使えるように • ForceLODShadow のモデル別指定 • 機能修正 • Cascade モジュール(Skel Vert/Surf Location)の一部修正 • バグ修正 • 特にマルチプレイまわり多数 #ue4fest

10.

アジェンダ • • • • • • • • UE4運用方針 キャラクター構成 レベル構成 絵作り・レンダリング VFX・SFX デモシーン UI フルキーコンフィグ • • • • マルチプレイ ローカライズ パフォーマンス 自動プレイ #ue4fest

11.

キャラクターモデル構成(アーセナル) • メカ・高さ5~6m • Characterクラスの派生、CharacterMovementも使用 • 複数のSkeletalMeshをアタッチして組み合わせる • アーマー換装 • アーマー個別の可動パーツ • 武器換装 #ue4fest

12.

キャラクターモデル構成(アーセナル) • 親となる骨のみの透明なSkeletalMesh • 全身アニメーションはここを動かす • アーマー(頭・体・腕・脚モデル) • SetMasterPoseComponent • パイロン • 搭乗キャラクター(頭と体のみ) • さらにスラスター・兵装モデル/VFX #ue4fest

13.

キャラクターモデル構成(アーセナル) 可動パーツ • 各アーマーにそれぞれアタッチ • 普通のSkeletalMesh • プレイヤーアクションに合わせて 個別にアニメーション #ue4fest

14.

キャラクターモデル構成(アーセナル) 武器 • 右腕・左腕・肩・腰 • パイロンへのストックも • それぞれ個別Actorのため 持ち替えや切り離し可能 #ue4fest

15.

キャラクターモデル構成(アーセナル) 部位破壊表現 • モデル差し替えとVFX • 頭や体部分が破壊されれば 搭乗キャラクターも見える #ue4fest

16.

キャラクターモデル構成(アウター) • 人間・高さ1.8m • アーセナルと同様に Characterクラス派生 • 複数のSkeletalMeshをアタッチ • キャラクターカスタマイズ • 改造による追加メカパーツ #ue4fest

17.

キャラクターモデル構成(アウター) • モデル・マテリアル・テクスチャと マテリアルパラメータを切り替え さらに細部のカスタマイズ • 35名+α のNPC達も同様のシステム #ue4fest

18.

キャラクターモデル構成(アウター) • 頭部はSetMasterPoseを 使用せず独立している • 頭部にアタッチするモデルに SetMasterPoseを使用したい ため(髭など) • 全身アニメーションと顔アニ メーションの同時制御が複雑 になったため #ue4fest

19.

キャラクターモデル構成(ザコ) • メカ・小型エネミー • Pawnクラス派生、単体モデル構成(例外あり) #ue4fest

20.

キャラクターモデル構成(ボス) • メカ・大型エネミー • Pawnクラス派生 • 本体は単体モデル構成 • 砲塔や弱点部位などを 別Actorでアタッチ #ue4fest

21.

キャラクターモデル構成(ボス) #ue4fest

22.

キャラクターモデル構成(問題点) • 1Actorにアタッチするものが多く CPUパフォーマンス面で多くの問題点(後述) #ue4fest

23.

レベル構成(背景) • 遠景まで およそ4km四方 • かなりの高度まで飛行できるため • プレイ可能領域 およそ2km四方 • 15種類のステージ • 配置・作戦領域のバリエーション • 時間帯・天候の違いも • 背景用のBPはアーティスト製 • 雷のポストプロセスなど #ue4fest

24.

レベル構成(背景) 例)雨の天候 • ライティング・天球・環境VFXのサブレベルを入れ替える • 円柱状に発生する雨VFXをプレイヤーにアタッチ #ue4fest

25.

レベル構成(ナビメッシュ) • 内蔵のものを Dynamic Modifiers Only で使用 • キャラクターも地形もスケールが大きいため、設定変更 #ue4fest

26.

レベル構成(ナビメッシュ) • ナビメッシュに影響するのは背景物のみ • 破壊可能なオブジェクトはナビメッシュを書き換える #ue4fest

27.

レベル構成(レベルBP) • 組み方のルールを決め、エンジニアが機能提供を行う • • • • エネミーを非表示状態でレベルに置く機能 エネミーをグループ管理する機能 デモシーンを流す機能 など • 企画担当者がレベルBPを編集しレベルデザイン • サブレベルをON/OFFする、直接DestroyActorする、など ダイナミックなことはあまり行わないでもらう #ue4fest

28.

レベル構成(問題点) ナビメッシュ • 動く背景物がナビメッシュを書き換え続けてCPU負荷増大 • サーチライトなど • Dynamic Modifiers Only は事前パス計算結果が PersistentLevel に保存される • 地形の種類だけ PersistentLevel を分ける必要がある #ue4fest

29.

レベル構成(問題点) BP • BPの組み方にかなりの個人差 • 許容する • エンジニアが介入することも #ue4fest

30.

アジェンダ • • • • • • • • UE4運用方針 キャラクター構成 レベル構成 絵作り・レンダリング VFX・SFX デモシーン UI フルキーコンフィグ • • • • マルチプレイ ローカライズ パフォーマンス 自動プレイ #ue4fest

31.

レンダリング(基本) • デスクトップフォワード • ライティングのベイク無し • 環境光無し #ue4fest

32.

レンダリング(絵作り) トゥーン表現 • テクスチャによるLUT • シャドウカラー・リムライト • 輪郭線は無し • 子供っぽい絵になってしまうのを防ぐ • 参考 • Unreal Engineを使用した商用タイトルでのノンフォトリアルレンダ リング(NPR)事例 https://www.slideshare.net/TatsuhiroTanaka1/unreal-engine-npr80721783 #ue4fest

33.

レンダリング(平行光源) • フォワードレンダリングだと平行光源が1つ…… • キャラライトや環境光のような表現のため エンジンを改変し平行光源を3つまで使用できるように Ch スペキュラ シャドウカラー シャドウ 通常ライト 0 有 有 有 Exライト 1 有 有 無 カットシーン向け Subライト 2 無 無 無 疑似的な環境光風 • どのライトを有効にするかはメッシュ毎にライトチャンネル指定 #ue4fest

34.

レンダリング(負荷対策) • LODを徹底 • StaticMesh・SkeletalMeshどちらも • 半透明をなるべく使用しない • ブレンドモードは Opaque が基本 • Dynamic Resolution を有効に • r.DynamicRes.OperationMode=2 • 4.20時点では正式対応版ではなかったが おおよそ問題は無かった #ue4fest

35.

レンダリング(負荷対策) • r.ForceLODShadow=4(Scalability の設定) • 頂点ネックになることが多かったため、対策として 影描画時のLODレベルを変更した • これでは粗くなりすぎ見た目が問題となるメッシュもあったため エンジンを改変し、メッシュ個別でも LODShadow を 設定できるようにして回避 #ue4fest

36.

レンダリング(問題点) • エンジンバージョンアップのたびに絵が崩れる • 絵作りのために大きく手を入れた箇所は毎度修正 • 短くても1週間は安定しない • 元々恐れていた事態だったが、顕著なのはここのみだった #ue4fest

37.

アジェンダ • • • • • • • • UE4運用方針 キャラクター構成 レベル構成 絵作り・レンダリング VFX・SFX デモシーン UI フルキーコンフィグ • • • • マルチプレイ ローカライズ パフォーマンス 自動プレイ #ue4fest

38.

VFX・SFX VFX • Cascade をそのまま利用 • Skel Vert/Surf Location モジュールのみ修正 • SkeletalMeshComponent を複数持っている場合への対応 SFX • ミドルウェア CRI ADX2 / CRI Sofdec2 • CriWareプラグインは基本そのまま • 負荷対策のため一部改変して対応 #ue4fest

39.

カットシーン • Sequencer をそのまま利用 • Matinee と Sequencer で迷ったが、今後を考えて Sequencer • イベントトラックと専用コンポーネントで拡張し タイトル固有の機能を実装 • 字幕表示・ボイス再生 • 音声切り替えやミドルウェアとの兼ね合いで既存の Dialogue は使用せず • アーセナルの可動パーツ開閉・武器表示ON/OFF • アウターの目パチ口パク制御・スーツ発光箇所の制御 • など #ue4fest

40.

カットシーン(問題点) • Matineeと比べてドキュメントも事例も僅か • Sequencer のリリース初期だったため • エンジンバージョンアップでSequencerの仕様が変わる • 例)秒管理からフレーム管理に変更 • BindingしたActorの制御が難しい • 何もしないと各種コンポーネントが動いたまま誤動作 • 最終的にBindするのはボスキャラクターのみに(例外あり) #ue4fest

41.

カットシーン(問題点) • カット切り替え時に髪の毛の物理が暴れる • Tick空回しができなかった • ULevelSequencePlayer の OnCameraCut で切り替え前後の処理 • • 全身の物理ON/OFF 髪モデルの Animation Pose Snapshot 保存/適用 #ue4fest

42.

UI • UMGをそのまま利用 • 開発初期の頃はテキスト中のアイコン表示ができなかった • UE4.20からできるようになった(RichTextBlock) #ue4fest

43.

UI(問題点) • CPU負荷が高い • GameThread以外では動かせない • 全てUObjectで出来ているため、UObject数が増大 #ue4fest

44.

フルキーコンフィグ • ActionMapping・AxisMappingは利用しなかった • 既存のInputComponentで直接操作 • UInputComponent::BindKey • UInputComponent::BindAxis • UInputComponent::BindVectorAxis ←ジャイロセンサー • 入力とゲーム内アクションの変換テーブルを作成 • Joy-ConのDualモードはそのままだと 左のジャイロセンサーしか取れない • 少し改造して右センサーを拾うように修正 #ue4fest

45.

アジェンダ • • • • • • • • UE4運用方針 キャラクター構成 レベル構成 絵作り・レンダリング VFX・SFX デモシーン UI フルキーコンフィグ • • • • マルチプレイ ローカライズ パフォーマンス 自動プレイ #ue4fest

46.

マルチプレイ • OnlineSubsystemSwitch をそのまま利用 • ListenServer形式 • ClientAuthorativePosition=true 移動処理はクライアント側 • 独自実装した点 • レフェリー(Switch) • ランキング #ue4fest

47.

マルチプレイ(問題点) • ネットワーク構成がメッシュ型ではなくスター型 • サーバーとなったプレイヤーに負荷が集中 • ホスト移譲できない • ホスト切断時にシングルプレイ化 • Replication Graph は未検証 • OnlineSubsystemSwitch 内部のバグが頻発 • 40件弱の修正 • • SDKの扱い方の不備 エラー処理 • UGameEngine・UGameSession を継承してエラー処理 #ue4fest

48.

マルチプレイ(問題点) • 同時に1セッションしか扱えない &セッションがPersistentLevelに紐づいている • 全員同じレベルに居ないといけない • 4人ルームで3人だけバトルしたりできない • マルチプレイ中にゲストがホームメニューに抜けると ホストが NetMulticast のパケットを送らなくなる • Reliable設定のパケットがゲストに届かないまま消滅する • マルチプレイのみ、アプリケーションがBGフォーカス状態でも プログラムが中断しないようにハンドリングモードを変更 #ue4fest

49.

アジェンダ • • • • • • • • UE4運用方針 キャラクター構成 レベル構成 絵作り・レンダリング VFX・SFX デモシーン UI フルキーコンフィグ • • • • マルチプレイ ローカライズ パフォーマンス 自動プレイ #ue4fest

50.

ローカライズ • テキスト言語 • ローカリゼーションダッシュボードをそのまま利用 • AssetLocalization をそのまま利用 • 音声言語 • テキスト言語切り替えとは別系統にするため ミドルウェア側の機能と合うように独自実装 #ue4fest

51.

ローカライズ(問題点) • poファイルの編集環境で良いものが無かった • Excelファイルと相互変換する補助ツール作成 • bSerializeAssetRegistry=true のまま • メモリを節約できると思ってfalseにすると AssetRegistry を利用している AssetLocalization が動作しない #ue4fest

52.

アジェンダ • • • • • • • • UE4運用方針 キャラクター構成 レベル構成 絵作り・レンダリング VFX・SFX デモシーン UI フルキーコンフィグ • • • • マルチプレイ ローカライズ パフォーマンス 自動プレイ #ue4fest

53.

パフォーマンス対策(キャラクター) • CharacterMovementComponent • 便利だがとにかくCPU負荷が高い • 一部キャラクターはCharacterクラス→Pawnクラスに変更 • キャラクター本体にアタッチする要素が多く キャラクターを動かすたびにCPU負荷が上がる • 非表示でよい要素はギリギリまでアタッチしないでおく • アーセナル搭乗キャラクターはギリギリまで非表示&アタッチされない • アタッチする要素を減らす&まとめる #ue4fest

54.

パフォーマンス対策(キャラクター) • PrimitiveコンポーネントのナビメッシュOctree更新を抑制 • UNavigationSystemV1::SetUpdateNavOctreeOnComponentChange(false) • バトル前後とオブジェクト破壊時に切り替え #ue4fest

55.

パフォーマンス対策(キャラクター) • 参考 • [CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック https://www.slideshare.net/EpicGamesJapan/cedec2018-ue4111105729 • SkeletalMeshComponent の最適化機能を細かく設定 • Optimizationプロパティ • ゲーム中も状況に応じて細かくON/OFF切り替え • Generate Overlap Events • ONだと当たり判定が大きいほどCPU負荷増大 • 戦闘未参加のザコキャラクターはOFFになっている #ue4fest

56.

パフォーマンス対策(ギミック) • マップ内に配置された破壊可能オブジェクトがとても多い • 壊れるまで動かないので、静止時は徹底的に機能OFF • • • ActorはもちろんComponentもTickを止める GenerateOverlapEvents をOFFにする 可動性はなるべく EComponentMobility::Static • • • SetMobility(EComponentMobility::Static) SkeletalMeshComponent も最適化設定 どれもゲーム中必要に応じて動的に切り替え #ue4fest

57.

パフォーマンス対策(弾丸) • 弾丸・着弾ヒット演出が発生するたびに様々なSpawn処理 • 短時間で数百の弾丸発射と着弾、それに付随するVFX/SFX再生 • • CPU負荷大 UObject数が増大してGC負荷大 • プール処理を作成して再利用し負荷軽減 • 弾丸Actorを SetActorLocation で移動させると負荷が高い • 飛翔開始時にコリジョンOFF、LineTraceで前方ヒット検知 • ヒット直前にコリジョンONに戻す • AActor::SetActorLocation ではなく MoveComponent で移動させる • RootComponent->MoveComponent(…, MOVECOMP_SkipPhysicsMove, …) ; #ue4fest

58.

パフォーマンス対策(GC) UObject数減らし • DisregardGCObject • BP減らし(=CPU負荷対策) • BlueprintClustring • 問題があるという噂もあるが、本タイトルではON • 一部アセットが別クラスターに入ってしまい解放されない問題 • 参考 • UE4におけるLoadingとGCのProfilingと最適化手法 https://www.slideshare.net/EpicGamesJapan/ue4loadinggcprofiling #ue4fest

59.

パフォーマンス対策(BP) • BP Tickは絶対ダメ、C++で。 • 開発初期でBP実装だったものをC++に置き換えるのに多大なコスト • アニメーションBPのイベントグラフもC++で書ける • 余計な UFUNCTION・UPROPERTY でUObject数が増える • C++と絡むとバグが追いにくい • 本当に必要なもののみにしましょう • BlueprintNativeEvent はBP実装が無くてもコスト大 • 呼び出す際にBP実装があるか確認するため • C++で済むものはそもそも UFUNCTION を付けない #ue4fest

60.

パフォーマンス対策(メモリ) • r.RenderTargetPoolMin 200 • 保留された不要なRenderTargetを解放する閾値 • デフォルト400MB • 本タイトルは同時に150MBほどしか使用していなかったため 200MBに変更。メモリオーバー対策に大きく貢献。 • Bloomテクスチャ半減 • Engine/Content/EngineMaterials/DefaultBloomKernel.uasset • • エディタでエンジンコンテンツを表示し このアセットを開いて Maximum Texture Size プロパティを編集 2048 → 1024 #ue4fest

61.

パフォーマンス対策(UMG) • Visibilityが”Hidden”に設定されたWidgetはCPUを使い続ける • ほとんど Collapsed にする • InvalidationBox も使用したが…… • レイアウトが更新されないなどバグが頻発 • 余裕を持って実装を #ue4fest

62.

パフォーマンス対策(おまけ) • 参考までに、一部のUObject数を公開します • タイトル内容によって大きく前後する数値かと思いますので あくまで参考程度にお願いいたします • “obj list -alphasort” • Testビルド • 1-02 バトル開始時 #ue4fest

63.

パフォーマンス対策(おまけ) Class Function 2765 14646 ArrayProperty BoolProperty ByteProperty ClassProperty EnumProperty FloatProperty IntProperty NameProperty ObjectProperty StructProperty TextProperty 2778 13151 3977 810 2757 10169 4656 3354 13402 11801 548 Image Overlay OverlaySlot TextBlock Texture2D MovieScene MovieSceneColorSection MovieScene2DTransformSection MovieSceneBuiltInEasingFunction MovieSceneByteSection WidgetAnimation Total 9764 4903 11381 2769 1509 3144 7714 4427 26186 13193 3139 281069 #ue4fest

64.

アジェンダ • • • • • • • • UE4運用方針 キャラクター構成 レベル構成 絵作り・レンダリング VFX・SFX デモシーン UI フルキーコンフィグ • • • • マルチプレイ ローカライズ パフォーマンス 自動プレイ #ue4fest

65.

自動プレイ • ランダムなマップに入り敵殲滅系バトルを繰り返す • シングルプレイ • オンラインマルチプレイ • ローカル通信マルチプレイ • 集計内容 • • • • マップ別クリア数・リタイア数・クリアタイム ハマり検知 CPU/GPU負荷計測 ダンプファイルが出た場合はコールスタック内容 #ue4fest

66.

自動プレイ • プロジェクト終盤から稼働 • 1回で実機30台前後、最大40台超 • 毎日AM1時~7時(土日も稼働) • 初期リリースまでに合計50人月超の稼働実績 • パッチ対応に向けて引き続き稼働中 • 日々集計しているので、通常のバグ報告と照合できる • 以前から発生していたフリーズか?どれくらいの頻度か? • 繁忙期のうっかりミスも翌朝拾える #ue4fest

67.

まとめ • UE4、そのままでも結構イケる • タイトル固有の絵作りはやはり手を入れた • 動作パフォーマンスも使い方次第 • BP利用は厳格なルール決めを • バージョンアップには気を付ける • 各プラットフォームのマスター提出要件にも注意 • プラットフォーム依存の機能利用は注意深く • 対応済みと見せかけて、あまり使用されていない機能は 十分な動作検証がされていない #ue4fest

68.

今後の課題 • エンジンバージョンアップ • アニメーション組み込みフローの見直し • アニメーションBPがエンジニア管理だった • アーティストが制御・調整しづらいという結果に • マルチプレイ • ReplicationGraph の検証 • 自動プレイ • 集計するプレイ内容の充実 • • ランダムUI操作 敵殲滅系以外のバトル攻略 #ue4fest

69.

次はVFX編です #ue4fest

70.

メカアクションゲーム 『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例 VFX編 #ue4fest

71.

1.はじめに #ue4fest

72.

自己紹介 株式会社マーベラス 菊地 リードアーティスト 悟 経歴 CGプロダクション、CS開発会社、マイクロソフト、マーベラス ゲーム業界歴 20年 これまでCSを中心に多数のタイトルでVFXリード UE3を使用した大規模開発経験 デモンエクスマキナではVFXリードアーティスト VFXディレクション、マテリアル制作、環境整備、スケジュール管理 リソース/アセット管理、各セクションとの調整、 実作業 #ue4fest

73.

概要 • 制作方針・環境 • アーティストとしてこだわった点 • 問題点 #ue4fest

74.

もくじ 1. はじめに 2. VFX制作方針・環境 3. アセット紹介 4. 直面した問題 5. まとめ #ue4fest

75.

もくじ 1. はじめに 2. VFX制作方針・環境 3. アセット紹介 4. 直面した問題 5. まとめ #ue4fest

76.

2.VFX制作方針・環境 #ue4fest

77.

VFX制作方針・環境 • • • • • • ルック 制作方針 環境 マテリアル レギュレーション UE4バージョンアップとカスタマイズ #ue4fest

78.

プロジェクト・ルック プロジェクトとして「トゥーン表現」を選択 • メカ物として「普通」にならないように「差別化」したい • 金属表現が多い事からフォトリアルという選択も • ただそれだと「普通」のルックに陥る可能性がある メカ物だけれどトゥーン表現、という「差別化」 #ue4fest

79.

プロジェクト・ルック トゥーン表現の方向性 • こちらも「普通」にならないように「差別化」を念頭に置く • 近年に見られるような緻密なアニメーションを避け • 80年代メカアニメやコミックのような、色や明暗がハッキリ したシンプルで特徴的な方向性を目指した #ue4fest

80.

VFX・ルック トゥーン表現の方向性 • プロジェクトの方針を受け、VFXの方向性を模索 • メカ系TVアニメをひたすら視聴(自宅の風呂場にて) • デモンエクスマキナのVFXルックを定めていった #ue4fest

81.

VFX制作方針 プロジェクト開始時 • PJスタッフの殆どがUE未経験者 (自分ともう1名のみ、経験者2名) • 準備期間や量産期間が限られ、膨大な数のアセットを作成する必要 • TAやVFX専任エンジニアはいない • UE4でのVFX制作は初、環境構築・ワークフロー等手探り • トゥーン表現、仕組みから作ることは初 #ue4fest

82.

VFX制作方針 大枠の方針 あまり複雑にせず 使いやすく、量産しやすい点に重きを置く #ue4fest

83.

VFX制作方針 デモンエクスマキナVFX制作で大切にした点 • アクションゲームアセットとしての機能性 • 処理負荷軽減 • 工数削減 • トゥーン表現 • クオリティ(メカ物としての表現を大切に) • VFX班内、情報共有の徹底 #ue4fest

84.

制作環境 環境 • 最終バージョン UE 4.20 (Cascade) DCCツール • • • • Maya 3ds Max Substance Designer Houdini #ue4fest

85.

マテリアル 構成検討 • 過去のUE3大規模プロジェクトの際、マテリアルを一部作成 した経験 • • 処理負荷が問題になったので、気を配る マテリアルの精査、管理をしっかり • UE4構成検討 • マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD https://www.slideshare.net/EpicGamesJapan/epic-games-japan-ue4dd #ue4fest

86.

マテリアル マテリアル構成概要 • 「Usage」別に分ける • 用途を「汎用」「専用」で分ける • 「ライティングされる・されない」で分ける • 参照構造 「親、子、孫」タイプ • 命名規則は試行錯誤して決定 ※詳細は割愛 #ue4fest

87.

マテリアル ブレンドモードとゲーム要素 • • • • • • プレイヤー、両手武器、肩武器を同時使用可能 プレイヤー、最大4体(分身で8体) エネミー、多く表示(ザコ、ボス) 処理負荷の懸念 トゥーン表現、ディゾルブが多い予測 不透明チックな描画でも許容できる予測 #ue4fest

88.

マテリアル 以上の事から、ブレンドモードは… 半透明は極力使わずに Masked中心 #ue4fest

89.

マテリアル 理由 • Maskedも半透明だが、Translucentほど処理を食わない • 描画順を、あまり考慮しなくてもよい • トゥーン表現、処理負荷の両立が出来、一石二鳥 ※一部Opaque、Translucent、Additive等も使用 思い切ったが この決断は正しいものだった #ue4fest

90.

レギュレーション 要素(詳細割愛) • テクスチャ • スタティックメッシュ • マテリアル・マテリアルインスタンス • エミッタ・モジュール設定(Cascade) • パラメータ(Cascade) • 物理マテリアル • LOD • コリジョンメッシュ #ue4fest

91.

レギュレーション チェックリスト • データアップ前にチェック • 細かくしすぎると、VFXスタッフの負担 重要度をつけてチェック #ue4fest

92.

レギュレーション チェックリストの重要性 「アナタはなぜチェックリストを使わないのか?」 アトゥール・ガワンデ:著 / 吉田竜:翻訳 晋遊舎 #ue4fest

93.

UE4バージョンアップとカスタマイズ 過去UE3の大規模開発の際、CASCADEを積極的にカスタマイズ バージョンアップで、とても苦労した経験 バージョンアップの影響を考え カスタマイズは行わない ※エンジニア側で「Skel Vert/Surf Location」ノードのみ手をいれています #ue4fest

94.

UE4バージョンアップとカスタマイズ バージョンアップの注意点 • 移行前の環境を残す • 移行後の変化をチェック、対応箇所の洗い出しと対応 • データで修正出来ない箇所については、エンジニアに依頼し 順次対応 無事に移行出来た #ue4fest

95.

もくじ 1. はじめに 2. VFX制作方針・環境 3. アセット紹介 4. 直面した問題 5. まとめ #ue4fest

96.

3.アセット紹介 #ue4fest

97.

アセット紹介 a. b. c. d. e. f. g. 弾 煙 爆発 スライド移動 範囲 スラスター 地表煙 #ue4fest

98.

a.弾・ミサイル・初期 #ue4fest

99.

a.弾・ミサイル・最終 #ue4fest

100.

a.弾・スナイパーライフル・初期 #ue4fest

101.

a.弾・スナイパーライフル・最終 #ue4fest

102.

a.弾・記号化 ミサイル:六角形 スナイパー:四角形 ブリッツ:三角形 記号化 #ue4fest

103.

b.煙 ディゾルブマテリアル Dynamicパラメータでの制御 直感的ではなく面倒 #ue4fest

104.

b.煙 ディゾルブマテリアル • 「Color Over Lifeモジュール」Alphaカーブによるディゾルブ制御 直感的な制御 #ue4fest

105.

b.煙 UVスクロールによる荒れ Pannerノード ガタツキの解消(精度) #ue4fest

106.

b.煙 テクスチャによるディゾルブのエッジ荒れ • 当初DXT1を使用 解像度を上げても解決しない • GrayScaleテクスチャで解決 低い解像度でも綺麗に #ue4fest

107.

b.煙 DXT1 512x512 GrayScale 128x128 #ue4fest

108.

b.煙 #ue4fest

109.

b.煙 大きな煙が画面を覆ってしまう問題 • カメラからの距離に応じて煙に穴をあける 参考: UE4 SphereMaskで距離に応じて色 を変える(mokoさん) http://effect.hatenablog.com/entry/2 018/05/16/025859 #ue4fest

110.

b.煙 #ue4fest

111.

c.爆発・雑魚エネミー #ue4fest

112.

c.爆発・雑魚エネミー #ue4fest

113.

c.爆発・赤熱マテリアル #ue4fest

114.

c.爆発・赤熱マテリアル #ue4fest

115.

c.爆発・墜落時 #ue4fest

116.

c.爆発・墜落時 アーセナル(プレイヤー、エネミー)の墜落時のVFX • 達成感を伝える • メカからパーツ武器を剥ぎ 取る仕様 縦長にし墜落地点を強調 #ue4fest

117.

d.スライド移動 #ue4fest

118.

d.スライド移動 メカのスライド移動の軌跡部分 • トレイル、PCでは問題ない • 実機でトレイルが暴れる現象 #ue4fest

119.

d.スライド移動 原因 • トレイル終端のスケールアニメーションが影響 • 「Size By Life」を消したら暴れなくなった #ue4fest

120.

e.範囲・範囲爆発 #ue4fest

121.

e.範囲・範囲爆発 爆発を受ける際 • 爆発内、説得力が必要 • 爆発内、実はスカスカ 提案 • ふきとばし ふきとばし + モーションブラー • モーションブラー(一瞬) 爆発範囲 #ue4fest

122.

e.範囲・ダメージ爆発 #ue4fest

123.

e.範囲・回復空間 #ue4fest

124.

e.範囲・粒子兵装シールド #ue4fest

125.

e.範囲・ボスシールド #ue4fest

126.

f.スラスター・スリット #ue4fest

127.

f.スラスター・ブースト #ue4fest

128.

f.スラスター・ボリューム #ue4fest

129.

g.地表煙・背景VFX #ue4fest

130.

g.地表煙 Smoke Smoke Ground Smoke Physical Material #ue4fest

131.

g.地表煙 #ue4fest

132.

もくじ 1. はじめに 2. VFX制作方針・環境 3. アセット紹介 4. 直面した問題 5. まとめ #ue4fest

133.

4.直面した問題 #ue4fest

134.

物理マテリアル仕組化問題 物理マテリアルとは? • 「土の地面」で着地 → 「土煙」 • 「砂の地面」で着地 → 「砂煙」 地面の種類によってVFXやSFXを変更する仕組み #ue4fest

135.

物理マテリアル仕組化問題 仕組み化にあたって • チームとして物理マテリアルの仕組み化の方法がわからず手探り • 影響範囲が広く、仕組み化までに時間を要した • 仕組化後、既存データの修正対応が必要となった #ue4fest

136.

物理マテリアル仕組化問題 仕組み化・条件4つ ① 地形仕様(全種) ② 背景班の地形構成(全種) ③ 適用対象VFXの洗い出し・出し分け指定 ④ 物理マテリアルID決定 #ue4fest

137.

物理マテリアル仕組化問題 仕組み化・流れ ① VFXの仕組み化 initial Colorモジュール Pram化・他 ② 背景班対応 ③ エンジニア側の物理マテリアル対応 アーセナル(メカ)、アウター(人)、ザコ、ボス、イベント、ギミック #ue4fest

138.

物理マテリアル仕組化問題 物理マテリアル・確認マップ • 背景班に用意してもらった • ここでVFXを作成 • 物理マテリアル挙動確認 #ue4fest

139.

物理マテリアル仕組化問題 #ue4fest

140.

物理マテリアル仕組化問題 仕組み化・まとめ 影響範囲が広いので 早期の各セクションとの相談、仕組み化が重要 #ue4fest

141.

ハーディングチェック対応問題 ハーディングチェック チェック後の対応 ・手作業 ・仕組み化 #ue4fest

142.

ハーディングチェック対応問題 仕組みなし 仕組みあり #ue4fest

143.

VFX班側から他セクションへの提案 • 当初、同じような兵装でも、エネミーごとに別の仕様として 発注されていた • エネミーごとに兵装が違う • 美術設定の段階でも、武器ごとの銃の口径や、スラスターの サイズなどがバラバラに描かれており、すべてを作ることは 効率が悪い #ue4fest

144.

VFX班側から他セクションへの提案 武器の規格化 • 担当プランナーや美術設定担当に、武 器種、サイズ、形状の規格化を提案 • その規格の中で、仕様や設定をしても らうよう依頼 VFX班以外だと気が付きにくい 積極的に働きかける #ue4fest

145.

もくじ 1. はじめに 2. VFX制作方針・環境 3. アセット紹介 4. 直面した問題 5. まとめ #ue4fest

146.

5.まとめ #ue4fest

147.

VFX編・まとめ 方針 環境 方向性をしっかり定める • 状況に合わせて、事前に準備を整える • アセット作成のポイント 機能性(視認性、記号化、インゲームでの役割を確実に担う) • 処理負荷 • 表現・独自性 • 問題対応 物理マテリアルは早期に着手 • 提案、仕組み化が重要 • #ue4fest

148.

もくじ 1. はじめに 2. VFX制作方針・環境 3. アセット紹介 4. 直面した問題 5. まとめ #ue4fest

149.

この講演が皆さんのお役に立てたら幸いです #ue4fest

150.

ご清聴いただき誠にありがとうございました #ue4fest