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