Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

WCCF最新作、アーケードゲームWCCF FOOTISTA 2019はこうやって進化した

8,596 views

Published on

本資料に含まれる動画・メモに関しましては、以下のURLからDL可能な資料からご確認ください。
https://epicgames.box.com/s/wc59cuzto8x5qps79gxji1fgzt4kx9ex

2019年10月6日に行われた「UNREAL FEST EAST 2019」における「WCCF最新作、アーケードゲームWCCF FOOTISTA 2019はこうやって進化した」の登壇資料です。
●公式サイト
https://unrealengine.jp/unrealfest/
===
16年続くタイトルWORLD CLUB Champion Football(WCCF)をUnreal Engine 4と共に「WCCF FOOTISTA 2019」へとリノベーションし、今年の春にリリースいたしました。エンジン移行でハマったところや、UI・カットシーンその他におけるUE4活用方法やTipsをご紹介いたします。UE4のバージョンアップ話もいたします。

Published in: Engineering
  • Be the first to comment

WCCF最新作、アーケードゲームWCCF FOOTISTA 2019はこうやって進化した

  1. 1. #ue4fest 1/110 © SEGA WCCF最新作、アーケードゲーム WCCF FOOTISTA 2019はこうやって進化した 株式会社セガ・インタラクティブ コンテンツ研究開発本部 第三研究開発部 若井英之
  2. 2. #ue4fest 2/110 © SEGA 実名サッカー選手のトレーディングカードを集め、 ゲームセンターでプレイするサッカーカードゲームです WORLD CLUB Champion Football
  3. 3. #ue4fest 3/110 © SEGA WCCFをUnreal Engine 4と共にWCCF FOOTISTAに刷新 • 移行時、移行後の開発についてお話 • スライドがたくさんあります!ペースがはやいです! お話すること 16年の歴史 リノベーション!オンデマンド印刷!
  4. 4. #ue4fest 4/110 © SEGA 省略した記述や呼び方を使用します • UE4:Unreal Engine 4 • WCCF:移行前のWORLD CLUB Champion Footballシリーズ • FOOTISTA:WCCF FOOTISTA 2019 口頭でバージョンの呼び方に省略があります • イチナナ-イチハチ:WCCF 2017-2018
  5. 5. #ue4fest 5/110 © SEGA 携わったタイトル • 「え~でる すなば」など FOOTISTAでの担当 • UE4検証とアップデート、ツール連携やパイプライン自動化、 データ設計、UI制御、筐体システム制御、ハードウェア制御 担当していない:サーバ、3Dの見た目、アニメーション、 AI 課外 • 社内外のゲームジャムでUE4を使用 • ぷちコンや#ue4jamに出しています 自己紹介:若井英之 第11回UE4ぷちコン|株式会社ヒストリア http://historia.co.jp/ue4petitcon11
  6. 6. #ue4fest 6/110 © SEGA 目次 UE4へ移行 • こうやってUE4が選ばれた • 初期検証 • 試合画面だけ移行 • 本移行 • 苦労したところを2つ UE4の活用 • 各種ビューア • UI作成 • シーケンサ • 観客 UE4のアップデート
  7. 7. #ue4fest 7/110 © SEGA 目次 UE4へ移行 • こうやってUE4が選ばれた • 初期検証 • 試合画面だけ移行 • 本移行 • 苦労したところを2つ UE4の活用 • 各種ビューア • UI作成 • シーケンサ • 観客 UE4のアップデート WCCFのアップデート背景からお話
  8. 8. #ue4fest 8/110 © SEGA WCCF 2001-2002:NAOMI 2基板 • RAM 32MB WCCF 2006-2007:LINDBERGH BLUE基板 • 筐体も刷新 • RAM 256MB • 2019年までこの筐体! WCCF 2010-2011:RINGEDGE基板 • RAM 1GB、GeForce 9600GS • 2019年までこの基板! 基板と筐体のアップデート歴史 基板、筐体の寿命が近づいていた
  9. 9. #ue4fest 9/110 © SEGA システム基盤 + 筐体もプリンタ内蔵などアップデート • ALLS UX基盤:RAM 16GB、GeForce GTX 1070 ゲーム内容も大幅なアップデートが期待される 新作における筐体アップデート
  10. 10. #ue4fest 10/110 © SEGA 1. 現行世代のハイエンド3Dグラフィックを描ける 2. モデルなどの物量に対応できるワークフローを構築できる 3. 既存の資産を流用できる • 特に、Morpheme(高品質のモーションエンジン)を組み込める 開発環境の要件 条件を満たす開発環境(ゲームエンジン)の選定が始まる
  11. 11. #ue4fest 11/110 © SEGA 4つ検討しました 1. 今までと同じライブラリ 2. 別の社内ライブラリ 3. Unity 4. UE4 ゲームエンジンの選定
  12. 12. #ue4fest 12/110 © SEGA メリット • ベタ移植しやすい • ライセンス費用かからない デメリット • 現行世代の絵にできない • ワークフローを効率化できない (いままで通り) 大きなアップデートはできない 今までと同じライブラリ
  13. 13. #ue4fest 13/110 © SEGA 別の社内ライブラリ メリット • 質問/要望に対応してもらえる • 社内UIツールと連携できる • アーティスト学習コスト0 • ライセンス費が安い デメリット • PJに応じてカスタムが必要 • 複数PJで使いづらい └ カスタムの対応が分散される • 開発スピードは向上しない スピード不足
  14. 14. #ue4fest 14/110 © SEGA Unity メリット • 事例やドキュメントが豊富 • UE4より2Dが扱いやすい • 拡張性はある (プラグイン、アセットストア) デメリット • C#の学習コスト • 既存のプログラムが使えない • UE4より3Dの表現力が弱い • Morphemeが対応していない └ モーションエンジンが不評 過去の資産を利用しづらい
  15. 15. #ue4fest 15/110 © SEGA UE4 メリット • 現行世代の画を出しやすい • モーション資産やノウハウを 活かせる(Morphemeの対応) • 同じエディタ上の作業ができ るので作業の並列化ができる デメリット • ワークフローの再構築コスト • 初期学習コストがかかる ゲームの面白さ検証に注力する時間が増える
  16. 16. #ue4fest 16/110 © SEGA エンジン選定のまとめ そのまま 別の社内 ライブラリ Unity UE4 ワークフロー改善 × × △ ○ 3D制作 × △ △ ○ 2D制作 ○ ○ ○ △ Morpheme (モーションエンジン) ○ ○ × ○ 開発言語 ○(C++) ○(C++) ×(C#) ○(C++) 様々な要素を比較して 選ばれたのは、UE4でした。
  17. 17. #ue4fest 17/110 © SEGA 目次 UE4への移行 • こうやってUE4が選ばれた • 初期検証 • 試合画面だけ移行 • 本移行 • 苦労したところを2つ UE4の活用 • 各種ビューア • UI作成 • シーケンサ • 観客 UE4のアップデート UE4の触りはじめと、 WCCFの部分移植について
  18. 18. #ue4fest 18/110 © SEGA WCCF、FOOOTISTAのスケジュール WCCF 2017-2018 開発 FOOTISTA 開発 運営 2017/2 2018/2 2019/3 WCCF 2016-2017 運営 運営UE4検証 開発 2016/9
  19. 19. #ue4fest 19/110 © SEGA 2016/09~:UE4の検証を開始 • UE4そのものの使い方 • 2D, 3D開発パイプライン、ワークフローがどう変わるか の調査 2016/11~:試合部分の移行実験開始 • 試合部分だけ見たい • 描画だけUE4にしてみる 2017/02~:本格的に移行開始 • どんどんUE4の機能に移行 • 仲間増 2018/08:ほぼフル機能のロケテスト 検証~初出しまでのスケジュール
  20. 20. #ue4fest 20/110 © SEGA 2016/09~:UE4の検証を開始:プログラマ2人、UE4.12 • UE4そのものの使い方 • 2D, 3D開発パイプライン、ワークフローがどう変わるか の調査 2016/11~:試合部分の移行実験開始 • 試合部分だけ見たい • 描画だけUE4にしてみる 2017/02~:本格的に移行開始 • どんどんUE4の機能に移行 • 仲間増 2018/08:ほぼフル機能のロケテスト 検証~初出しまでのスケジュール
  21. 21. #ue4fest 21/110 © SEGA 「Unreal Engine 4 で極めるゲーム開発」を軸にした • 各職種向けにコースを作成、2~4週間程度で学習 • 極め本(UE4.7)はUEバージョンや本の版によって動かない → 社内wikiに差異の共有場所を用意 質問対応がコンパイル忘れくらいに UE4の学習
  22. 22. #ue4fest 22/110 © SEGA プログラマ:Blueprintに慣れる • 1~2週間で極め本 全部(Appendixも含) • 1週間でBlueprintミニゲーム作成(テトリス、バーチャロン)しレビュー アーティスト:エディタ操作とマテリアル作成 / UI作成に慣れる • 1週間で極め本 基本部分+アーティスト部分 • 1週間でマテリアルデザイン入門 or UIチュートリアル(公式ドキュメント) プランナ:エディタ操作に慣れる • 1週間で極め本 基本部分 • ミニゲームまで作る人もいました コース例
  23. 23. #ue4fest 23/110 © SEGA • UE4のUMGが、社内の2Dツールの代替となるか? • 必要な機能を列挙し検証 UE4検証:2D アーティストの希望(一部) 検証結果 アニメーションにカーブを使いたい カーブ組める(4.8~) パーツを他の画面に流用したい パーツ単位でBlueprint化 デザインだけでプレビューしたい アニメーション再生できる 実物のようなカードのホログラムエフェクト マテリアルを組む 大体のことはできる
  24. 24. #ue4fest 24/110 © SEGA きれいな画、大量の選手モデルに対応するワークフローを調査 UE4検証:3D アーティストの希望(一部) 検証結果 既存モデルの軸・スケールを合わせたい DCCツールのスクリプトを作成 2Dの上に3Dモデルを表示したい 3D空間にUIを配置 or RenderTarget 身体モデルの肌色を顔色と合わせたい 身体マテリアルに顔の色を流す 負荷を見たい Epicさんの講演を目コピ、説明会開く モデル確認用のビューアがほしい DB連携のマップを作成 量を扱うための前処理やワークフロー設計が必要
  25. 25. #ue4fest 25/110 © SEGA Epic Games Japanさん • UE4の挙動についての質問や要望 • 機能あるなしや、代替案をいただいた ヒストリアさん • 技術領域、アート領域両方でサポートしていただいた • 100個以上相談した項目がありました サポートしていただきました(有償)
  26. 26. #ue4fest 26/110 © SEGA 2016/09~:UE4の検証を開始:プログラマ2人 • UE4そのものの使い方 • 2D, 3D開発パイプライン、ワークフローがどう変わるか の調査 2016/11~:試合部分の移行実験開始:プログラマ1人、UE4.13 • 試合部分だけ見たい • 描画だけUE4にしてみる 2017/02~:本格的に移行開始 • どんどんUE4の機能に移行 • 仲間増 2018/08:ほぼフル機能のロケテスト 検証~初出しまでのスケジュール 検証 / スタディ: プログラマ 5人 アーティスト3人 プランナ 2人
  27. 27. #ue4fest 27/110 © SEGA 説明のため、WCCFのプログラム構成を紹介 • 3つのプロセスがプロセス間通信で動作 試合画面の移行について コントロール • サーバとの通信 • マッチング • 筐体間通信 クライアント • ゲームシーケンス • レンダリング AI • 選手戦術思考 • ボーンの計算
  28. 28. #ue4fest 28/110 © SEGA 説明のため、WCCFのプログラム構成を紹介 • 3つのプロセスがプロセス間通信で動作 • クライアントをUE4内に入れる UE4 • レンダリング 試合画面の移行について コントロール • サーバとの通信 • マッチング • 筐体間通信 クライアント.dll 試合だけの シーケンス AI • 選手戦術思考 • ボーンの計算
  29. 29. #ue4fest 29/110 © SEGA 文字セットUnicodeあわせ (Visual Studio) WCCFはマルチバイト文字セット環境 • プロセス間通信時、日本語文字列のメモリサイズが異なる • 動きに関係する数値パラメータだけ通信 64bit環境移行 • WCCFは32bit環境で製作されていた • 社内ライブラリごと64bit対応…時間がかかる • まずUE4の32bitパッケージで動かしてみる └ UE4向けMorpheme内の物理を32bit対応 シーケンス以外に必要だった対応 主にちからわざです
  30. 30. #ue4fest 30/110 © SEGA • Animation Blueprintの transformノードで解決 ボーン情報の適用
  31. 31. #ue4fest 31/110 © SEGA 2017/01/24:32bitパッケージが動く
  32. 32. #ue4fest 32/110 © SEGA • 試合以外のシーケンス、UI制御はBlueprint • 非同期ロードを多用 • 試合中や配列への処理をC++で記述 • 開発後期には、ハード参照問題へのインターフェース的解決を適用 BlueprintとC++
  33. 33. #ue4fest 33/110 © SEGA 2016/09~:UE4の検証を開始:プログラマ2人 • UE4そのものの使い方 • 2D, 3D開発パイプライン、ワークフローがどう変わるか の調査 2016/11~:試合部分の移行実験開始:プログラマ1人 • 試合部分だけ見たい • 描画だけUE4にしてみる 2017/02~:本格的に移行開始:UE4.15~4.20 • どんどんUE4の機能に移行 • 仲間増 2018/08:ほぼフル機能のロケテスト 検証~初出しまでのスケジュール 最大時: プログラマ 17人 アーティスト 15人 プランナ 8人
  34. 34. #ue4fest 34/110 © SEGA 目次 UE4への移行 • こうやってUE4が選ばれた • 初期検証 • 試合画面だけ移行 • 本移行 • 苦労したところを2つ UE4の活用 • 各種ビューア • UI作成 • シーケンサ • 観客 UE4のアップデート ① モーションエンジン ② 試合の再現性
  35. 35. #ue4fest 35/110 © SEGA MorphemeのUE4サポート、終了 2017/7よりMorpheme販売停止 サポートされなくなる その①
  36. 36. #ue4fest 36/110 © SEGA 運営タイトルなので、アップグレードやサポートは必須 • UE4のモーション機能へ移行することに • 2017/6より2週間で移行検証 UE4のアニメーション機能へ移行
  37. 37. #ue4fest 37/110 © SEGA モーションをブレンドする機能 • UE4の機能で足りる モーションステートを管理する機能 • 特に、割り込みイベント機能 └ 移動→インパクトの間に、よろけのイベントを差し込めるか • UE4の機能で足りる Morphemeにしか無い機能への対応 • イベントのブレンド等:モーション素材の作り方を厳密化することで対応 「これがあれば作れる」を列挙して検証 素材作成のパイプラインが見直され、整理された
  38. 38. #ue4fest 38/110 © SEGA モーションはUE4機能を改造せずに済んだ モーションエディタが統合されたので イテレーションも改善された
  39. 39. #ue4fest 39/110 © SEGA 試合の再現性 その②
  40. 40. #ue4fest 40/110 © SEGA 戦術思考とモーション移動計算で決定される 同じ思考ルーチンから同じモーションが選択される =同じ試合が再現される 試合の選手の移動計算について 現在地を元に 戦術思考 モーション 移動計算 現在地を元に 戦術思考 モーション 移動計算 はず 1フレーム
  41. 41. #ue4fest 41/110 © SEGA • ルートモーションの計算結果が異なってしまうことがわかった • 結果位置が変わると思考もが変わるため、試合内容が全く異なる 移動量が一意にならない 現在地を元に 戦術思考 モーション 移動計算 現在地Aを元に 戦術思考 現在地Bを元に 戦術思考 パス ドリブル 一意に ならない 対戦しても同じ結果にならなくなる
  42. 42. #ue4fest 42/110 © SEGA • モーションを切って、AI思考だけの棒立ち移動は再現する • やはり、モーションの計算にばらつきがあるようだ • モーションありでも何度か再現することがある モーション移動についての調査
  43. 43. #ue4fest 43/110 © SEGA • 思考や座標ダンプは大容量になるので、ボール軌跡の表示で比較 右下だけ、1fps違う→ • Maxのフレームレートを 変えると試合内容が 変わることがわかった 同じ試合が再現されるかを調査 対戦時は僅かな処理落ちで 再現されてしまう
  44. 44. #ue4fest 44/110 © SEGA 1フレームで移動する量を一定にする → 計算に渡すデルタタイムを一定にしてみる • USkeletalMeshComponent::TickAnimation • UCharacterMovementComponent::TickComponent フレームレートに依存しないようにする
  45. 45. #ue4fest 45/110 © SEGA 1フレームで移動する量を一定にする → 計算に渡すデルタタイムを一定にしてみる • USkeletalMeshComponent::TickAnimation • UCharacterMovementComponent::TickComponent まだ結果が異なっていた • 別スレッド動作、独自のデルタ計算、計算誤差 あたりを予想 • ソースをさらに追った フレームレートに依存しないようにする
  46. 46. #ue4fest 46/110 © SEGA モーションの計算コードにおいて、引数デルタとは別に、 内部計算のデルタを使用している部分があった 各所のデルタタイムが一定になるように手を入れた デルタタイム全般の固定 void ACharacter::SimulatedRootMotionPositionFixup(float DeltaSeconds) { (中略) const float DeltaTime = DeltaPosition / MontagePlayRate; CharacterMovement->SimulateRootMotion(DeltaTime, LocalRootMotionTransform); }
  47. 47. #ue4fest 47/110 © SEGA 同じ試合が再現するようになった モーション移動量の計算結果が一意に
  48. 48. #ue4fest 48/110 © SEGA 1GBメモリ内でのチューニング UE4移行前
  49. 49. #ue4fest 49/110 © SEGA リアルなグラフィック & 物量 UE4移行後
  50. 50. #ue4fest 50/110 © SEGA 目次 UE4への移行 • こうやってUE4が選ばれた • 初期検証 • 試合画面だけ移行 • 本移行 • 苦労したところを2つ UE4の活用 • 各種ビューア • UI作成 • シーケンサ • 観客 UE4のアップデート ツールをUE4内に統合
  51. 51. #ue4fest 51/110 © SEGA 今まで機能はあったが、 UIは別アプリでプロセス間通信 • 選手モデルの確認用マップ • DBと連携している • ユニフォームのオプション 背景の切り替えなど • テスト用のモーションで モデルの破綻をチェック • UIはUMG Model Viewer
  52. 52. #ue4fest 52/110 © SEGA • 顔から自動的に肌色決定した上で、追加色設定 • 体格(ボーン)調整 Model Viewer(DB連携の調整機能)
  53. 53. #ue4fest 53/110 © SEGA • モーションブレンド確認 • ボール位置と蹴る方向 • ブレンドされたものを再生 • インパクト設定 • 対応できるボール方向 • 蹴れるボールの位置 • 蹴れるボールの方向 別のツールで再生が無かった 今まで無かった Impact Viewer
  54. 54. #ue4fest 54/110 © SEGA ゲームパッドを使ったモーション確認 黄色い矢印 = 向かいたい場所 足元の水色矢印 = 身体の向き モーションの優先度確認(転ぶが優先、起き上がってから向かう)
  55. 55. #ue4fest 55/110 © SEGA 目次 UE4への移行 • こうやってUE4が選ばれた • 初期検証 • 試合画面だけ移行 • 本移行 • 苦労したところを2つ UE4の活用 • 各種ビューア • UI作成 • シーケンサ • 観客 UE4のアップデート • デザインについて • WidgetBlueprint
  56. 56. #ue4fest 56/110 © SEGA • 質感を除去したフラットなデザイン テーマ:近代サッカーデザイン
  57. 57. #ue4fest 57/110 © SEGA 状態をわかりやすくする必要がある • 今自分がフォーカスしている場所はどこ? どちらを選択している…? フラットデザインのUI ねこ いぬ
  58. 58. #ue4fest 58/110 © SEGA
  59. 59. #ue4fest 59/110 © SEGA • パネルにカラーのマスクを適用 操作可能・不可能な状態パネル
  60. 60. #ue4fest 60/110 © SEGA • ほのかにアニメーション 選択ボタン
  61. 61. #ue4fest 61/110 © SEGA 選択して進む:「左から右」⇨
  62. 62. #ue4fest 62/110 © SEGA キャンセルで戻る:「右から左」 ⇦
  63. 63. #ue4fest 63/110 © SEGA • 変数値をマテリアルのパラメータに渡す マスク用Widget
  64. 64. #ue4fest 64/110 © SEGA • パラメータによってマスクエリアを伸縮 マスクアニメーション用マテリアル
  65. 65. #ue4fest 65/110 © SEGA • マスク用のWidgetをスケールして配置 • アニメーションでマスク用のパラメータを制御 パネル用Widget
  66. 66. #ue4fest 66/110 © SEGA 同様に、汎用の選択パネル
  67. 67. #ue4fest 67/110 © SEGA • マテリアルパラメータコレクションで色の統一 ゲームの色パレット
  68. 68. #ue4fest 68/110 © SEGA
  69. 69. #ue4fest 69/110 © SEGA Widget BlueprintのBlueprint • Delegate:とても基本的なところ • Blueprint Interface:やや応用なところ
  70. 70. #ue4fest 70/110 © SEGA UIアニメーション終わりを検知したい Tickは重いし ノードが肥大化する アニメーション開始
  71. 71. #ue4fest 71/110 © SEGA • 終わったらDelegateに渡したものを呼んでくれる関数がある UIアニメーションのイベントデリゲート
  72. 72. #ue4fest 72/110 © SEGA アニメーションイベント駆動のシーケンス
  73. 73. #ue4fest 73/110 © SEGA 引数にデリゲートを設定した関数をよく作っています
  74. 74. #ue4fest 74/110 © SEGA • 結果表示の発火を共通化したい Blueprint Interfaceの利用 • Result_1, _2にそれぞれBPIを設定 • StartResultEventを2回呼ぶと 結果1, 結果2が順番に再生される (BPI : Blueprint Interface) 結果1 結果2 結果まとめ
  75. 75. #ue4fest 75/110 © SEGA ResultのWidgetをObject型配列に格納する Object型配列にした実装 Result1, 2が 入った配列 BPIが実装されて いるかチェック
  76. 76. #ue4fest 76/110 © SEGA ResultのWidgetをObject型配列に格納する Object型配列にした実装 BPI_UITest以外も 候補に出るので 間違えやすい
  77. 77. #ue4fest 77/110 © SEGA Blueprint Interfaceクラス型の変数
  78. 78. #ue4fest 78/110 © SEGA BPI変数の関数サジェスト 主にBPI_UITest内の関数しか出ない
  79. 79. #ue4fest 79/110 © SEGA Validはキャストが必要 ValidはObject型にして判定
  80. 80. #ue4fest 80/110 © SEGA 目次 UE4への移行 • こうやってUE4が選ばれた • 初期検証 • 試合画面だけ移行 • 本移行 • 苦労したところを2つ UE4の活用 • 各種ビューア • UI作成 • シーケンサ • 観客 UE4のアップデート • ストーリーモード • 試合中パフォーマンス
  81. 81. #ue4fest 81/110 © SEGA ストーリーモード (実際は置いたカードの選手が出ます)
  82. 82. #ue4fest 82/110 © SEGA • マスターシーケンスにカットを並べる • マスター上のイベントはフェードのみ ストーリーモードのシーケンサ
  83. 83. #ue4fest 83/110 © SEGA • Transformはモーキャプし調整したFBXよりインポート • Transformに選手モデルやカメラをランタイムでアサイン • カメラの画角、字幕、フェードをUE4エディタ上で設定 ストーリーモードのカットシーン
  84. 84. #ue4fest 84/110 © SEGA • 1つテキストを設定できるイベント • 2つテキストを設定できるイベント ストーリーモード用のイベント 字幕機能の有効可 字幕内容の変更 2択文字の変更 2択選択時のSE SEの再生
  85. 85. #ue4fest 85/110 © SEGA • ストーリー用は共通 • 人のIDごとに出し分け • カット、話数IDで出し分け • フレームアニメのノード ストーリーモードのAnimation Blueprint ストーリーシーンの追加編集のワークフローはアーティストで完結
  86. 86. #ue4fest 86/110 © SEGA 試合中パフォーマンス ストーリーと同様にシーケンサを再生
  87. 87. #ue4fest 87/110 © SEGA • ストーリーと兼用 • 再生シーンの選択 • 再生場所のチェック └ ✕マークの位置から再生 シーンビューア
  88. 88. #ue4fest 88/110 © SEGA • 再生シーンの選択 • 再生場所のチェック └ ✕マークの位置から再生 シーンビューア 物にぶつかったりカメラとの間に物が映り込まないかチェック
  89. 89. #ue4fest 89/110 © SEGA 身体が接触するシーン • 一時的に体格を合わせる • 足元を映さない 再生体格のチェック 体格そのまま 一時的に体格合わせ
  90. 90. #ue4fest 90/110 © SEGA 目次 UE4への移行 • こうやってUE4が選ばれた • 初期検証 • 試合画面だけ移行 • 本移行 • 苦労したところを2つ UE4の活用 • 各種ビューア • UI作成 • シーケンサ • 観客 UE4のアップデート 負荷を抑えつつ動かす
  91. 91. #ue4fest 91/110 © SEGA • Skeletal Mesh:選手の更新だけで重いので却下 • Imposter (カキワリ:今までのWCCFと一緒) • Vertex Animation (Texture) 観客は3つの手法を検討
  92. 92. #ue4fest 92/110 © SEGA リアルタイム更新で工夫したが、 パフォーマンスと見た目のバランスに納得できなかった ↓アニメーションする4体を1枚のテクスチャにベイク(5万体を配置) Imposter検証
  93. 93. #ue4fest 93/110 © SEGA 頂点の情報が記録されたテクスチャ Vertex Animation Texture:VAT 頂点Index→ フ レ | ム ↓ R, G, B:座標値 同様に法線情報 マテリアルエディタで再生を実装できる
  94. 94. #ue4fest 94/110 © SEGA • 動的ライト環境下でも破綻しない • LODに対応できている VATを実装したStaticMesh
  95. 95. #ue4fest 95/110 © SEGA 共通の開始/終了ポーズ(座り、立ち) VATアニメーション同士の繋ぎ 座り状態のバリエーション 座り⇒立ち 立ちエモ 立ち⇒座り
  96. 96. #ue4fest 96/110 © SEGA • 座席領域に配置した板ポリの範囲内に HierarchicalInstancedStaticMeshを使用して生成 配置について
  97. 97. #ue4fest 97/110 © SEGA服、肌色、VATアニメーションのばらつき └ マテリアルのPerInstanceRandomで実装
  98. 98. #ue4fest 98/110 © SEGA 目次 UE4への移行 • こうやってUE4が選ばれた • 初期検証 • 試合画面だけ移行 • 本移行 • 苦労したところを2つ UE4の活用 • 各種ビューア • UI作成 • シーケンサ • 観客 UE4のアップデート • プロジェクトは4.12~4.22.2 • 4.20⇒4.22のお話
  99. 99. #ue4fest 99/110 © SEGA エンジンのバージョンアップ メリット • 新機能(ミドルウェアも含) • バグ修正 • パフォーマンス改善 └ ランタイム └ ビルド時間 └ エディタ挙動 デメリット • エンジンコードの変更 └ 新しめの機能は変わりやすい • コンテンツと並行作業しづらい • マケプレアセットさしかえ対応 └ パスを変更していると面倒に コードには大体手を入れる必要があったが、対応できる範囲
  100. 100. #ue4fest 100/110 © SEGA リリースノートを見る(Preview版がおすすめ) アップデートのメリット探し
  101. 101. #ue4fest 101/110 © SEGA リリースノートを見る(Preview版がおすすめ) アップデートのメリット探し Cookerのパフォーマンス向上で、 開発イテレーションを高速化できそう!
  102. 102. #ue4fest 102/110 © SEGA 同様に4.22 Preview ビルド時間高速化で、 開発イテレーションを高速化できそう!
  103. 103. #ue4fest 103/110 © SEGA • 「Done for…」をプロジェクトに利用できるか検討 • 「Future Releases」はリリースタイミングが不透明 さらに先の機能はロードマップ https://trello.com/b/TTAVI7Ny/ue4-roadmap
  104. 104. #ue4fest 104/110 © SEGA HotFixの.2を待つ • リリース:Previewよりおよそ1ヶ月後 • HotFix :リリース後よりおよそ1ヶ月に1回 └ 数回アップデートがある。例:UE4.22.3 └ .2くらいまで待ちたい(2ヶ月) └ IssuesのTarget Fix検索でアップデートがあるかの判断ができる 目安:Previewから3ヶ月後くらいからの作業開始 アップデートの日時計画
  105. 105. #ue4fest 105/110 © SEGA 既知問題のデータベース • バージョン指定できる • 4.23に上げたい場合、 「fix:4.23」かつ、 「Unresolved」があるなら まだHotFixがありそう Unreal Engine Issues
  106. 106. #ue4fest 106/110 © SEGA 未解決Issueの修正予定バージョンを見る 修正予定バージョンの変更で前ページの検索に引っかからなくなる
  107. 107. #ue4fest 107/110 © SEGA 解決Issueは修正ソースへのリンクがある UE4.22.2をベースに、こちらの修正ソースを利用しています
  108. 108. #ue4fest 108/110 © SEGA C++ Transition Guide for 4.x を見る • 1バージョンアップ時、コード側で対応すべき情報が集まってくる • フォーラムに毎バージョン立てられます Transition Guideは含まれるバージョン全てでチェックする • 複数飛ばしの情報は質問しないと得られない • 4.16から4.20といったバージョン飛ばしのアップデートにおいて、 .17 .18 .19のTransition Guideを全てチェック 経験上、結局全てのバージョンのページを見ています アップデート作業
  109. 109. #ue4fest 109/110 © SEGA Full Rebuild UE 4.20 UE 4.22 パッケージング 8220 3970 (48.3%) その内のクック 3440 2330 (67.7%) 環境 ・CPU : Xeon E5 1620v4 ・RAM : 40GB ・分散ビルド : 有り ・ストレージ : SSD ・Content以下ファイル数: ほぼ10万個、70GB パッケージング・クック時間(単位:秒) パッケージ時間半分・・・!
  110. 110. #ue4fest 110/110 © SEGA 令和の開発は4.22以降で!

×