Top > Unreal Fes 2015 Yokohama

#contents

* 概要 [#j421a12f]

https://atnd.org/events/70010

- 間違ってたらすみません。
- 追いつかなくて講演をメモしきれていない箇所もあります。


* 資料とか他の人の纏めとか [#l51167f9]
- クラスメソッドブログ - [UE4] UNREAL FEST 2015 Yokohama レポート
http://dev.classmethod.jp/event/unreal-fest-2015-yokohama-report/

- Let's Enjoy Unreal Engine - UNREAL FEST 2015 YOKOHAMAで喋ってきたり色々とまとめ 
http://unrealengine.hatenablog.com/entry/2015/10/19/224135

- togetter - 「UNREAL FEST 2015 横浜」まとめ 
http://togetter.com/li/888637

- 僕の私のUnrealな日々 - 第4回UE4プチコン総括:3位をいただきました! 
http://unrealbussan.hatenablog.com/entry/2015/10/19/202653

** 参加外 [#yf819d2d]
*** エディタの拡張とブループリントを使いこなせば、あなたのゲーム開発はもっと拡がる! [#kac86585]
https://forums.unrealengine.com/showthread.php?88271-ピンボールコンストラクションキット

* バンダイナムコスタジオはUnreal Wayの夢を見たか?〜ガンシューチームが挑んだワークフローの抜本的改革〜 [#hee445f7]
https://www.unrealengine.com/ja/blog/unreal-fest-2015-yokohama-4

- スライド170枚
- ガンシューチームの話
-- LLA: ロストランドアドベンチャー
-- TC5: タイムクライシス5

- 業務の結果や今回の纏めが極本に。

** 悪いワークフローの例 [#c278cd49]

なにが問題なのか

- 計画の骨子より人員確保が先行している
- 最も変更してはいけない時期に最も変更が発生する
-- 賽の河原。石を積み上げては崩されて、を繰り返す。
- その変更オーダーは全員から出る
- 労力対効果は疑わしい

- ステージの情景が先に上がる。どんな敵が出るかも決まらないままUV、テクスチャも終わり、背景が完成
-- その後に敵が確定し、通路の幅や順番が変わったりする
-- モデルデータの後戻りは大変。作り直しになることも。


** 良いワークフローの例 [#mcc1070d]

- アンリアルウェイ
- ゲームの製作を始める前に、作り方、エンジンの設計思想を勉強してから

- ハイレベルコンセプト
 ↓
ブレスト/ポストイットノート
 ↓
シェリング(BSPブラシでレベル作る。遊びを確定)
 ↓
ビジュアル・パス(データ作成)
 ↓
スクリプティングパス(シーンのつながりとか、シネマとか)
 ↓
レベルスウォーム(実際に組み上げた後に足りないものを全員で洗い出し)
 ↓
ファイナルポリッシュ
 ↓
ビジュアルパス2(ライディングの修正とか9
 ↓
スクリプティング2(デザインが触った事によって再度調整)
 ↓
レベルスウォーム2()
 ↓
バグフィックス
 ↓
完成

- アンリアルウェイは一般的なワークフロー。UE無しでも実践される
- 物事が手戻りしないための仕組み

- 例えば
-- 1.ライティングアーティストがライティングする
-- 2.次の工程の担当者がこっちの方が良いとライティングを弄る
-- 3.越権行為。業務に支障をきたすとしてクビになることも。

- 纏め
-- 下流は上流の決定物を変更してはならない
-- 上流は下流の決定物を変更してはならない
-- 引き継ぎをきちんとしていない方が悪い

- その自身の工程の中では、裁量は移譲されるので自由に作業できる。

- 日本だと
-- アニメ業界がこれ
-- 漫画もそうだ
-- 少なくとも日本文化、民族性は関係ない


** ワークフローの実現例 [#zf827b28]

ナムコウェイ

- 改変の理由
-- レベルデザイナに関する懸念
--- フルスキルセットのレベルデザイナは用意が難しいので回避

-- グレーボックスと背景作業の並列化
--- グレーボックス製作が完全に終わってから、背景作業をゼロからスタートできない
--- 一部は平行して作業する事になる

- グレーボックス完成後はレベル触るの禁止
- モノコック形式からレゴ形式に(パーツを組み合わせる形式に
- TAがシェーダー作業の100%を作業。アーティスト出身


- 工程A
レベル企画
 ↓
コンセプトアート、不足機能開発(挙動、アニメーター)
 ↓
PoC/グレーボクシング(ゲームプレイを完成させる)
 ↓
ディレクターチェック
 ↓
 ↓
背景配置作業
 ↓
第2レベルデザイン(背景と合わせて微調整)


- 工程B
レベル企画
 ↓
固有プロップデザイン
 ↓
アウトソース開始
 ↓
受領確認
 ↓
インポート作業
 ↓
 ↓
不足分追加発注


- 工程AとBが終わった後
背景配置作業2
 ↓
完成


- 3ないルール
-- プロセスを逆流しない
-- 適当に承認しない
-- 後から言い出さない 


- 補足:ライティング
-- 第2レベルデザインの段階でやってる

- ワークフローは2度回せ(極本P.42)


** レベルデザイナ以外のワークフロー [#oad7587d]

- サウンド
wwise使用。
プログラマがロジックを組み込まなくても、速度とかパラメーターだけで音を設定できる

- アニメーター
ステートマシン設計と実作業、ボス戦の一部も作った。
NaturalMtoion
MorphemeNetowrk
CEDECに上がってる
-- (これかな?: youtube - 【CEDEC2015】バンダイナムコスタジオ x NaturalMotion 「タイムクライシス5におけるmorphemeケーススタディ」 
https://www.youtube.com/watch?v=uhV8EgmOY_k

- UI
ScaleForm Vfx



* マーケットプレースでアセットを販売してみよう!&CascadeパーティクルTIPS [#yc70fe1d]
https://www.unrealengine.com/ja/blog/unreal-fest-2015-yokohama-6
- 講演スライド - http://www.slideshare.net/frontakk/unreal-fest-2015-yokohama-cascadetips

** Cascade Tips [#rb54efb4]

*** Daymicモジュール [#h2a0c75d]

- EmitterからMaterialにパラメーターを
-- Cascadeの「Dynamic」モジュールから、Materialの「Dynamic Parameter」へ
-- Materialエディターでプレビューできない

- UVスクロール
-- Pannerでも出来るが、スピードを外から取れないので自前で実装

- パーティクルの繰り返し感を無くす
-- GDCのBlizzardのDiablo3資料
-- 炎。通常の炎テクスチャと雲模様テクスチャを合成する

*** LOD作成時の罠 [#i525c68f]

- エミッタをオフにすると
一度離れてオフになり、再度近づいた際オンになるが再生タイミングがずれる
-- エミッタをオフにするのではなく、Spawnの放出量をゼロにすると上手くいく

- 全てのエミッタをオフにすると、復活しなくなる
-- どれか一つに「Disable LOD Keep Emitter Active」

*** Meshが回転しない罠 [#e1e45e2f]

- レベルで回転しても回転しない
-- 「Required」の「Use Local Space」をオンにすると回転できるようになる

- MeshRotationRate等のモジュールが機能しない

*** Pivotを変更する [#f60d8947]

- 火花とかで使う。引き伸ばしの中心点を、真ん中ではなく根本にするとか。
- Pivot Offsetモジュールを使ってオフセットする。

*** responsiveAA有用 [#q558a995]

- デフォルトだと、細い文字とかが潰れる
- Cascade上だと問題ないが、レベル上に配置すると潰れる
- Materialエディター内にある
- 重いかも



* C++コードはいらない!UE4で作るお手軽マルチプレイネットワークゲームについて [#z246c36d]
https://www.unrealengine.com/ja/blog/unreal-fest-2015-yokohama-8
- 講演スライド - http://www.slideshare.net/masahikonakamura50/cue4

**ネットワーク [#wdc2fb9f]

- サーバー・クライアントモデル

- Listenサーバーモード
-- クライアントと同じようにゲームプレイできる。
- Dedicatedサーバーモード
-- クライアントのように画面はなく、コマンドプロンプトのような画面で動作する。大規模サーバー向け。


- サーバーへのログイン1
レベル起動時にオプション。
-- サーバー側:ConsoleCommand[open map?listen]
-- クライアント側:open 127.0.0.1

- サーバーへのログイン2
オンラインサブシステム。プラットフォームごとにある(Steamとか)
LAN内ならプラットフォームなしでも動かせる。
-- サーバー側でセッション作成:Create Session
-- クライアント側でセッション検索:Find Session
-- クライアントでセッションに参加:Join Session


* アンリアルエンジン4でノンフォトリアル描画しよう! [#o041406a]
https://www.unrealengine.com/ja/blog/unreal-fest-2015-yokohama-10

- 輪郭線をポストプロセスで。深度差で。
Sobelだと8点サンプリングが必要。重い。

- サンプリング数を減らしたい。
線の太さも変えたい。

- 1点だけ。法線方向にオフセットした1点。

- 稜線。法線の差。
- 法線でオフセットしてピクセルを取るので、太さを調整できる。
深度でも比較できるので、太さ調整できる。

- 水彩画。
彩度をコントロール


* サマーレッスンの制作を支えたUE4 [#v71186ec]

** なぜUE4を採用したのか [#f9b9f131]
- Elementalデモがすごかった。
- 当時考えてたこと
-- VRで重要なのは画面の情報量だ
→ 半分正解
-- 各パートが独立して施策可能な環境
- 最近のVR事情
-- 没入間、プレゼンス
-- 三人称視点、ソーシャル
-- 素早い施策、検証フィードバックが大事
 
** サマーレッスンの開発環境紹介 [#r0c30908]
- 従来のゲーム表現手法が通用しない。
-- 画角を変えられない。パン、カットを使えない。
-- UIをVR世界に合わせる必要がある。
 ↓
試作や優先度を変える必要がある

- VRレビュー会
-- 一度に体験できる人数が少ない
-- アニメーション、UI、サウンドの相互作用が多い

- VRコンソール
-- Depthが合わない時は片目で見る

- デモ環境を用意、イテレーションを回す


** UE4の理想と現実 [#ad6b374d]
- BlueprintでC++いらず
→ ほぼBPで完結
- C++を触ることになった主要因
-- プラットフォーム特有の要素
-- 修正パッチ、最適化パッチ
-- 自社製の音響Plug-in
→ C++の考え方を忘れてはいけない。
--- ラッピングのすすめ。printf等のデバッグとか
--- グローバルコンストラクタ問題。シーンに配置した際の順番。Construction Script, BeginPlay, Tick1フレーム目、れべるBP 
→容易にスパゲッティになる。

- マチネを使って演出
-- → マチネ+モンタージュ
--- マチネとAnimBlueprintと連携できない(プレイヤーが寄ると避けたり等の割り込みが出来ない)
--- 座標移動だけマチネ制御。
--- バージョンアップの度に挙動が変わる

-- → 2015年版はルートモーションのアニメーション
--- エクセルでシーケンス管理。

-- → Sequencerで解決するかも

- 物理ベースシェーディングで綺麗
-- PBRとUE4での扱い方を知っておく必要がある
-- イテレーションが早くて便利
-- エディターのビューとゲームで見え方が違う
PawnカメラでPostProcessを弄ってた。アーティストはビューで見てる。

- ライティングしない天球はどうするの?
-- 処理負荷の為に、デフォルトの天球を使用しなかった
-- Emissiveに入れる数値は?

- 部屋が暗いんだけど?
-- IndirectLightingCacheの調整
-- ライトマップ解像度の調整
-- レフ版(未使用)

- ライトマップ解像度はほとんど赤(高い)
-- VolumeLightingSamplingの距離は狭くしている

- CustomDepthを利用した凹み表現
- トーンマップバイアスを利用した黒フェード
- EyeAdaptationノードを利用したUI用マテリアル
- ダミーアクタを利用したシャドウマップまとめ

- ボタン一発でPS4起動
-- 比較的安定している
-- パッケージ化は非常に楽。
-- 自動ビルド、Cook環境は必須。


** 想定外だったこと [#x8c37504]
- よかったこと
-- マーケットプレイスで高いクオリティのアセットが見れる。
-- web上に情報がたくさんある

-悪かったこと
-- メジャーバージョンアップのコストが高い
-- 修正パッチがリリースブランチに反映されるまでタイムラグが大きい
-- レベル遷移は早めに着手。レベルストリーミングありきで組んでおく。


** まとめ [#vdaf56f0]
- VR
-- イテレーション速度重視で環境作る。
- UE4
-- 未経験の機能の導入は慎重に
-- バージョンアップコストを考慮した運用を

* 鉄拳にアンリアルを導入した背景 [#zc6a1687]

UE4.4の実装なので、古い話があるかも。

** 業務用鉄拳7制作時の背景 [#md769023]
- タッグトーナメント2の時。
-- 2vs2のタッグバトル
-- 今回は1vs1だしもっと凄いグラフィックスだよね? 
- ES3基盤想定。
-- 今回新基盤。もっと凄いよね?

- 鉄拳6から鉄拳7への絵的な進化が求められていた。
- 社内ライブラリの次世代開発と鉄拳7の発売タイミングが乖離していた。
- UE4に至った理由
-- 鉄拳がハイエンド至高
-- エピックゲームスは日本語サポートが優れていた。
-- UE3が優れていたのは分かっていたが、一年後という事もあり。
-- 次世代表現を売りにしたUE4への期待。

*** 検証とその結果 [#i591c97a]
- 求めるグラフィックス
- 鉄拳としての面白さ
- 60fps
- 使い勝手

- 物理ベースのシェーダーが綺麗
-- 背景は良くなる可能性を秘めている
-- エフェクトも色々できそう。
-- でも工夫も必要そう

- ゲームの制御は社内の仕組みで動かす。(通信対戦も)
-- 描画エンジンとしてUE4を使用。
-- 移植コストの低減。

*** 懸念点とその解決 [#ae19fd8a]

- アーケードでの対応実績がない。
- UE4が成長過程。(アップデートによる不具合、ミドルウェアのアップデート)
- ロケテはUE4.1を使用。製品はUE4.4。

- 問題が発生した際に調べにくい
- 不具合があった時に対応してもらえるのか


*** 完成後の振り返り [#v77df4c1]



** 技術解説 [#sbabbad6]

*** 短期間開発 [#r968dc2e]
-  ミドルウェアの採用
-- Scaleform
-- Wwise
-- Bink2

- コア部分。エンジンに依存せず、独立分離したモジュールとして開発。
-- UE4を描画部分として利用

- ゲームコアの実装
-- キー入力を受け手のキャラクタのスクリプト
-- アニメーションの計算、制御
-- コリジョン、ヒットチェック
-- ゲームのカメラ制御

- アプリから起動できるようにする。
-- 1.初期化
-- 2.ファイル読み込み
-- 3.毎フレーム、モジュールのmainを呼び出す

- DLLとしてプロジェクトに追加。エンジンに依存しない。


- 鉄拳モジュールからUE4
-- アニメーションBPのカスタムノードを作成。
-- ゲームカメラ。C++で。
-- パーティクルエフェクトの発生リクエスト→Cascade
-- サウンド発音リクエスト。→wwise
-- 地形のコリジョン情報問い合わせ。Levelに配置された壁ActorのTransform返す
-- 各種バトルイベントの通知。BPのイベントにして適時処理を記述。

- ゲームシーケンスはすべてC++で記述
-- 独自のタスクシステムをEngineLoopに組み込み
- レベルローディング
-- パーシスタントレベルにすべてのレベルをサブレベルとして追加した。
-- レベルストリーミングで読み込み。
- デメリット
-- ローディングが早くない。
-- 初期化段階はメインスレッドで起こるので処理落ちする。4.8, 4.9で改善されてるらしい。
-- 全部をサブレベルにすると、レベルが増えてくると破綻しそう。

*** キャラクタ表現について [#k74c8298]

- キャラクターのカスタマイズ仕様
--共通のベーススケルトンを持つSkeltalMeshをキャラクタのActorに追加。
-- 装備情報(追加される技とか)の管理はBPで実装。

- 不透明と半透明の描画結果の違い
-- 髪の毛、ほつれた胴着の裾を半透明で表現したい。
-- 半透明はライティングとシャドウに差異。
-- 不透明とアルファの2重で書いて解決。不透明にアルファを乗せる感じ。

-異方性反射
-- GGXを有効化。
-- シェーディングモデルとマテリアルパラメーターに追加。

- ライトチャンネル
-- キャラクタにだけ適用されるライト
-- 背景に馴染むのはいいが目立たせたい
-- マテリアルとライトにライトチャンネル情報を追加。
-- ライトチャンネル情報をGバッファの空きビットに格納。ライト処理でマスクする。

- 苦労した点
-- バージョンアップの追従が大変
--- ミドルウェアのインテグレーション待ち 
--- バージョンアップによって、アセットが壊れていないことをどうやって確認する?
→ 時間かけて全部確認した。
-- UE4に安定板の概念が無い。
--- 4.8でリリースを決めても、BugFixの4.8.4等の最新版が出ない。

- 良かった点
-- BP大活躍
--- 早いイテレーション 
--- PGでなくても読み書きしやすい
--- 処理速度が問題でC++に書き直したことはない
-- PBRによる美しいグラフィクス
--- アセットが正しく作られていること
--- ライティングやポストプロセスの仕様を把握すること
--- 機能を誤用すると破綻した絵になる


** ビジュアル製作 [#lc34cf1c]


* 感想 [#x1912359]

- 今回自費参加という事で4万円程出費しましたが、面白い講演も聴けましたし色んな人に挨拶出来ましたので参加して良かったです。
-- お仕事がマスター期間中だったので、当日朝5時に大阪出発、翌朝7時に横浜出発出社という無茶なスケジュール。次は余裕持ちたい。
-- 体調もよろしく無かったので近場に泊まりました。http://www.manyo.co.jp/mm21/
-- oO(次こそは前後に休みを取ってハマスタに行くんだ……!)

- VR体験会。知り合いに聞いた所、30分前に並んで整理券取れた、30分前に並んでも取れなかった、等なっていたようで若干本末転倒感が……

- 非公式懇親会に参加してきました。
-- 挨拶する人がほとんどTLで見る凄い人ばっかりでした。非常に楽しい時間でした。
-- 開催+誘って頂いて、関係者の方々ありがとうございます。
-- twitterアイコン付きの名札を下げておくのはやっぱり大事。名札を見て声をかけてくれる人も。嬉しい。自分からも挨拶に行きました。
-- 学生の頃から参考にしていた、もんしょ先生のサイン貰った!
&ref(UnrealFest2015Yokohama_01.png,,30%);

    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS