[UE4] UNREAL FEST 2015 Yokohama レポート #unrealfest2015

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。こむろです。

2015/10/18にパシフィコ横浜にて、UNREAL ENGINEの大型勉強会UNREAL FEST 2015 Yokohama が開催されました。1200名を超える開発者やアーティスト、学生など様々の方が集まり、朝10時から夜19時まで大変中身の濃い講演や展示を楽しんでいました。こちらに参加してきましたので、簡単にレポートします。

IMG_20151018_110940

今回は、VR体験としてOculus RiftとPSVRのVRコンテンツのタッチイベントも同時に進行されており、とても高い人気を誇っていました。整理券を配っていましたが、毎回一瞬で整理券が捌けてしまうほどの人気ぶりです。

UE4は個人的にまだ使い始めたばかりだったので、事例紹介やUE4を取り巻く環境の解説、今後のUE4の展開などの講演とテクニカルな内容を含んだ講演をバランス良く選んだつもりです。 *1

ゲーム業界の開発ワークフローの話しなど、なかなか聴く機会がない講演もあり、とても刺激になりました。

札幌の技術者も数多く来ており、自分がお会いしただけでも7名ほど確認できました。

基調講演:稲船敬二氏 「インディーズとしてのゲーム開発とIPの活用」

株式会社comceptのCEOである稲船さんの講演。 ロックマンのキャラクターデザインやバイオハザード2のプロデュースなど数多くの作品で知られています。

なぜインディーズでゲームを作るのか、Kickstarterで開発が開始されたMighty No.9について、そしてゲーム開発者としての経験を語りました。今現在ゲーム業界に身を置いている開発者やこれからゲーム業界を目指す学生などに向けた話であったため、別業界である自分にとってはなかなか耳の痛い話も数多く。

「不可能を可能にする」ことにこだわリ続けるのがゲーム開発。どんな時でもゲーム開発者ならば楽な方を取るな、などなかなかに熱い講演でした。今開発している「Mighty No.9」はKickstarterで出資を募って開発されています。クラウドファウンディングは単なるお金集めではなく、開発者にとって必要なのはそのファンの数。インディーズで高々100名に満たない人数で、巨大なゲーム会社に立ち向かうことが出来るのは、出資という形で自分の身を切って支援してくれているファンと一緒に開発をすることができる、といった話を聞くことができました。今までなかった新しいカタチでのゲーム開発を行っている稲船さんの話は、今ゲーム業界を生きる開発者の人にとっては響く内容だったのではないでしょうか。

バンダイナムコスタジオ 湊 和久氏「バンダイナムコスタジオはUnreal Wayの夢を見たか?~ガンシューチームが挑んだワークフローの抜本的改革~」

UE4極本 の執筆者でもあるバンダイナムコスタジオ湊さんの講演です。ゲーム開発の現場がどのように開発を行っているのか?そしてUnreal Wayとは?どのように改善したのか?など、個人的にとても興味深い内容でした。以下走り書きのメモと写真です。

  • Epic Gamesが使っているゲーム開発のワークフローを導入した
  • BNスタジオ ≠ BNゲームス
  • LLAとTCS(プロジェクトの名称)

  • 制作したゲーム

    • デットストームパイレーツ
    • BIG 3 GUN SHOOTING
    • デッドストームパイレーツ4D+
    • アンリアルパイレーツ(試用作)
  • NAMCOはUE3に初めて手を出した会社。黒歴史化(?)
    • UEが来たぞ、逃げろー
  • LLA(Lost Land Adventure): 戦場の絆と同じようにドーム型に入って楽しむアーケード筐体

  • TC5(Time Crisis 5): 「バカめ!横ががら空きだぜ」システム(ペダルが2つ)

プロジェクトの人員の割り振り

IMG_20151018_112254

UE4で極本は、上記2プロジェクトのフィードバックがはいってる。ほんとはプロジェクトに入ってくる人のための教科書的なものにしたかったけど間に合わなかった。

悪いワークフローの例

  • 何が問題なのか
    • 何を作るかは決まっていないが、いつまでに完成させるかは決まっている。
    • 人員の確保だけ先に
    • 見込みや草案を元に何となく制作が始まる
    • 作ったものを破棄してやり直す
    • 変えたくなってくるので、再度破棄してや入り直す
    • 締め切り間に合わず、延長駆け引き
    • なんか完成したのでリリース。
  • 計画の骨子の確立より人員確保が先行

  • もっとも変更しては行けない時期に変更が重なる

    • 変更オーダーは全員から出る
  • 出来は良い。ただ労力効果は疑問

  • 具体例

    • ステージ背景だけ先行
    • UV, テクスチャも終わり。この時点で何を作るか決まってない
    • 何を遊ぶか決定。「マップの順番を入れ替えたい」、「川の幅とか変えたい」という要望が出てくる
    • → 変更にコストがかかる。グラフィックは工程的に後ろ。工程が後ろになるほど死ぬ。先頭がやらかすと最後方が爆発する。

IMG_20151018_113144

良いワークフローの例

  • 手戻りがなく、成果物の品質の高い進行方向
  • CEDEC2012 UNREAL WAY
  • ゲームエンジンの設計思想に合わせた開発をすべき
  • CEDEC2011 グレイソン氏
    • レベルデザインとシネマティック
  • ハイレベルコンセプト → ブレスト、ポストイットノート → シェリング(4週間。遊び確定) → ビジュアルパス(5週間) → スクリプティングパス(4週間。ストーリー、ステージの繋がりとか) → レベルスウォーム(1週間。パーティクルとかもココでいれる。全員で洗い出し)→ ファイナルポリッシュ → レベルスウォーム → ビジュアルパス2(2週間) → スクリプティングパス2(4週間) → レベルスウォーム2(4週間) → バグフィックス → 完成

1レベル(28週間)

ヒアリング

  • アンリアルウェイは一般的なワークフローでUEなしでも実践されてる。(海外の会社)
  • 物事が手戻りしないための取り組みがすごい(一種の社会圧力)

IMG_20151018_113412

  • 下流は上流の決定物を変更してはならない
  • 上流は下流の決定物を変更してはならない

IMG_20151018_114056

  • ただし自身の工程においては最大の自由な裁量が与えられてる

  • アニメ業界がこれ(セル)

    • 日本は文化が違うから受け入れられないとかは嘘。日本文化や民族性は特に関係ない。やるところはやってる。

ワークフローの実現例

  • レベルデザイナに関する懸念
  • 当初は古スキルセットのレベルデザイナを揃えることを回避するプランを考えていた。考える人と手を動かす人は別にしようという考え
  • グレーボックスと背景作業の平衡化
  • グレーボックス制作が完全に終わってから、背景作業を零からスタートする体制は真似できない(したくても)

  • 導入したもの

    • レゴ方式
    • アウトソーシング
    • 強力なアートディレクター権限
    • テクニカルアーティストがシェーダ作業100%担当

レベル企画(Excelでもなんでもいい) → コンセプトアート、不足機能開発 → PoC/グレーボクシング → ディレクターチェック → 背景配置#1 → 第二レベルデザイン(背景の大幅な変更以外の微調整) → 固有プロップデザイン → アウトソース開始 → 受領 → インポート作業  :上記と平行して行われてる → 不足分追加発注 → 受領 → インポート

→ 背景配置作業#2 → 修復・最適化

フローは2イテレーション。昔は1イテレーション。1イテレーションだとグレーボクシングが通過しない

  • 3ないルール
    • プロセスは逆流させない
    • テキトーに承認させない
    • あとから言い出さない

この辺りの話はUE4極本にまとめてある

  • wwise

IMG_20151018_115813

  • Natural Motion

IMG_20151018_115909

  • Scaleform GFx

IMG_20151018_120034

とんでもなく濃い内容をとても短い時間で話していたため、膨大な情報量でした。自身は全く異なる業界ですが、ワークフロー改善についてとても参考になる部分が多かったです。ワークフローの改善についてはとても多くのヒントをもらいました。

株式会社historia CEO 佐々木 瞬氏「UE4専門会社が語るUE4のいま / 事例から学ぶモバイル開発のすすめ」

株式会社historia のCEOである佐々木瞬さんの講演です。UE4のトレンドからモバイル対応まで、実際の案件をこなした経験に基づく話しであったため、非常に説得力がある内容でした。以下メモと写真です。

事例

モバイル

UE4の今

  • 相談数:家庭用アーケードゲーム、映像、建築が多め
  • 受託数:建築が案件に結びつきづらい。相談数は多いが

IMG_20151018_130817

  • 家庭用ゲーム、アーケード
    • 大型、中型タイトルあり
    • 自社エンジンの限界
  • UE4技術者の不足
    • 市場に出てくるのは2年後くらい?今UEエンジニアは絶賛開発中のはず
  • 出来るエンジニアであればUE4の経験なくても需要はある。C++、オブジェクト指向

  • モバイルゲーム

    • 国内の動きは鈍め
    • 研究は多い模様
  • 事例は出始めてる
  • UE4のモバイル対応はこの先半年くらいで大きく入る

  • ホビーユーザー

    • フリー化、書籍によって増えた(ぷちコンの応募数)
    • ヒストリアブログの記事PV(上昇傾向)
    • UE4攻略Wiki
  • VR
    • プロユースはUE4が多い
    • ノンゲームでVR「も」対応
  • 映像
    • レンダリング時間短縮
    • VR, 4k、8k対応(今後高いクオリティが求められる)
  • 建築
    • ウォークスルーの相談が多い。
    • 通常のウォークスルー+VR
    • 単なる建築パースの置き換えだと難しいので予算が合わない。
      • 外側だけを作るだけではウォークスルー出来ないため、内部も詳細に作りこむ必要がある

IMG_20151018_132255

  • その他
    • 車、教育系に案件がある状況

UE4のこれから

  • 大型タイトル量産
  • モバイルタイトル
  • 映像
  • ノンゲームの案件

モバイル開発

  • scarlet fighters
  • 処理組込みはBlueprint Only
  • BP OnlyだとMacに持ってく必要がない
  • UIツールはUMG

  • PCプラットフォームと同じ環境で制作可

  • グラフィック制約
    • シェーダー
    • ライト
    • ポストプロセス
  • パフォーマンス制約

    IMG_20151018_133804

  • Deployはとても楽

  • iOS, Androidは大抵の端末で動く
  • 端末ごとに描画スケーラビリティの設定

  • UE4 → コマンドラインでIPA, APK → deploygateで配信 をJenkinsで管理

  • UE4のSoundClassを使ってサウンドを管理

  • 端末によってレベル差が激しい → 元素材のラウドネスを統一
  • 22.5khzモノラルに容量削減
    • iOSだけおかしい。おかしいところだけ44.1khzにした
  • DPIスケールがデフォルトではiPhone6に対応していない
  • LOD Bias→テクスチャの最適化
  • drawコールを減らす(まあ、普通のパフォーマンス・チューニングだよね)

  • 足らない機能

    • 追加アセットDL機能
    • Androidの容量が大きいのは機種ごとの3種類のTextureをぶち込んでるため。
  • 広告機能
    • 全画面広告、動画広告、バナー広告が足らない感
  • BPによるスクリプティングがかなり強力
    • 家庭用、モバイル、映像、VR、ノンゲームの5軸
    • モバイルタイトルは結構いける。半年から一年後くらいか。

UE4の案件についての実績やどういった業界で利用されているかなど、UE4案件の先端をいく広い知見を共有してもらいました。特にモバイル対応については、今後UE4は力を入れていくであろうということ、さらにまだまだ様子見なところも多くこれからの可能性を大いに感じる事ができました。

フリーランス 中村 匡彦氏「C++コードはいらない!UE4で作るお手軽マルチプレイネットワークゲームについて」

フリーランスプログラマーとして活躍されている中村さんによるUE4のネットワーク機能についての講演です。個人的に今回の講演の中で一番分かりやすかったのがこちらです。基本的にネットワークの話しが中心だったため、非常にすんなり理解する事ができた上に、UE4のBlueprintでのスクリプティングの強力さに驚かされました。 *2

ネットワーク+マルチプレイヤー

  • クライアント・サーバーモデル
  • UE4はエンジンがクライアントもサーバーも出来る
  • BPのみでマルチプレイヤーゲームが作れる
  • シングルプレイヤー → マルチプレイヤーにすぐ変更可能
  • ListenサーバーモードとDedicatedサーバーモード
    • Listenサーバーモード:サーバー機能を有しながらクライアントのように動作。テストしやすい
    • Dedicatedサーバーモード:サーバー専用モード。低リソースで動くため大人数プレイヤーを捌くときとかに有効
  • クライアント:ゲームロジックはサーバーにお任せ。PlayerControllerの情報をサーバーに上げる必要あり。

オンラインサブシステム

  • プラットフォームごとに用意されてる:Steam、PS Networkなど
  • オンライン機能をUE4にラッピングして使える
  • マッチングも可能
  • Use LANの場合は、設定ファイルでプラットフォームNULLを指定してあげる必要あり

Play in Editorの場合

  • マルチプレイヤーオプションでプレイヤー数を設定しておく。
  • 起動すると勝手に複数のクライアント画面が立ち上がる。10個とかやるとカオス
    • レプリケーション
  • サーバーがクライアントに対して情報を複製することによってクライアント間の同期をとる
  • ネットワークレプリケーションと呼ばれる
  • Actorのレプリケーション。デフォルトで設定がONになってる。自動的にActorの動きは同期される

  • レプリケート権限

    • レプリケーションはサーバーのみ
  • Switch Has Authorityマクロ。サーバーとクライアントを判断するマクロ。ロジック分岐の際に利用
  • Actor所有権限
    • クライアントでSpawnした場合、クライアントがActorの所有権を持つ
    • クライアント上のActorは同期されないのでサーバーへ自前で送信してやる必要がある
  • 変数のレプリケーション
    • BP変数はプロパティで同期設定可能。サーバーでレプリケート
  • RepNotify
    • OnRep_<変数名> の関数で変数が変更された場合に自動的にFireされる関数

RPC

  • UE4は3つの呼び出しをサポート
    • BPではカスタムイベントを生成する。
    • Multicast: Server to Client. 呼び出しをサーバーで行うと全てのクライアントで処理が実行。クライアントで実行するとそのクライアントだけ
    • Run on Server: Client To Server.
    • RUn on Owning Client: Server to Client.
  • RPC使い分け
    • Multicastが一番一般的。
    • Run on serverは、クライアントからサーバー上へ情報を通知する場合に使う
    • Run on Owning Client: Actorの所有権に準ずるのでServerで実行される場合もある
    • 所有権の確認。「is Locally Controlled」で判断する
  • Reliability
    • 信頼性。リアルタイムには向かない。信頼性が低いとパケットロスが心配
  • Net Cull Distance Squared
    • Actorのレプリケーションが届く範囲を設定。遠くのActorは同期しないように
  • Net Update Frequency
    • 通信頻度
  • Net Priority
    • 通信混雑度の優先度。
  • マルチプレイヤー化
    • シングルプレイヤーからマルチプレイヤーへ。
    • Run on Server.
    • static meshのReplicated設定を20個以上つけると落ちる。
    • Print Stringでデバッグ用
    • Client Localで流すのが正しい。Multicastで音だけ鳴らすとパケットロスする
    • BPの編集だけで簡単にいける
  • パッチ、DLC
    • 4.8から存在。MOD、UGCとして扱われてる
    • MMO Starter Kit(コミュニティ)
    • VaRest, JSON Query. BP上でHTTP通信
    • Twitter4UE(PR歓迎とのこと)

その場でライブノーディングを行い、実際にゲームをさくさくとマルチ・プレイヤー化していくのは見ていて大変わくわくしました。この辺りはすぐにでも試してみたいところです。ネットワーク系の話も多かったため、講演の中で唯一理解することが難しくなかったものでした。

【2015/10/20 追記】資料が公開されていました。


EPIC GAMES JAPAN 下田 純也氏 「アンリアルエンジン4でノンフォトリアル描画しよう!」

EPIC GAMES JAPANサポートマネージャの下田さんによるノンフォトリアル描画についての講演です。ノンフォトリアル描画については、トゥーンシェーダーしか知らなかったのですが、それ以外にも様々な表現手法があるとのこと。大変専門的なところでもあり、途中から単語を聞き取るのが精一杯でした。

ノンフォトリアル描画とは

  • 写実的ではない描画
  • トゥーンシェーダー。セルルックシェーダー
  • NPR(Non Photo Rendering)表現は他にもたくさんある

  • トゥーンレンダリング

    • セルルックシェーディング
    • プリキュアシリーズのエンディングなど
    • アルペジオ、シドニアあたり
  • UE4はフォトリアリスティックなレンダリングは得意

  • リアルタイムレンダー

UE3のノンフォトリアル描画について

  • ノンフォトリアルなタイトルはいくつもある。
  • GG xrdとか
  • 旧来
    • 影色の塗り分け
    • リニアライトの影響をとトゥーン用の1Dルックアップテクスチャで描画
    • アウトライン描画
  • 次世代トゥーン

    • アウトライン描画
    • ノーマルマップが多用される → ポリモデルのエッジライン描画だけでは役不足
  • GG xrd
    • 常識を覆した想像以上のNPR
    • GDC 15のGDC Vaultを参照
    • UE3世代だが、UE4でも十分参考になるとのこと

IMG_20151018_151420

UE4のノンフォトリアル描画について

  • ディファードレンダリング(シェーディング):シーン全体の色、法線情報を複数のGバッファに描画し、次のフェーズでシーンに対してライティング。 ピクセルごとに描画してるので、キャラなのかシーンなのかは判定が難しい。
  • フォワードレンダリング:オブジェクトごとにGPUのシェーダーにメッシュデータとライト情報を渡して描画。適用できるライト数に制限。一個のシェーダーに渡せるライトは1〜4個

  • ポストプロセスマテリアル

    • 法線が側面方向をむいてる面を黒く描画。リニアなライトの当たり具合を段階化して面を塗り分け
    • colorからVectorの長さ
  • エッジ抽出、面抽出

  • リアルタイムレンダリングにトゥーン反映
  • CGアニメの世界に入るVRが制作できる

単純化した数式などを交えて、どのようにUE4では表現を実現しているかを解説しました。 *3グラフィックスのレンダリング周りは大学時代に一瞬やったことがある程度の知識なので、昔の知識を総動員しましたが、メモを取るだけで精一杯という感じでした。こちらも内容が異常に濃く、もう1時間程度時間があっても良かったのではないかと思うほどでした。

【2015/10/21 追記】資料が公開されていました。


EPIC GAMES JAPAN ジョー コンリー氏/ロブ グレイ氏「Empowering your team with UE4 エディタの拡張とブループリントを使いこなせば、あなたのゲーム開発はもっと拡がる!」

最後は2時間を通して、EPIC GAMES JAPANサポートエンジニアのロブさんとジョーさんの講演です。UNREAL ENGINE 4の機能を拡張し、ゲーム開発のワークフローを改善するデモを行いました。EPIC PINBALLと称したピンボールゲームを作るために、どのようにエディタの機能を拡張し、デザイナーとプログラマーがどのように協業して作業をしていくのかを垣間見ることが出来ました。

EPIC GAMES JAPANのアイドル(?)ことロブの軽快なトークとUE4の操作に加え、ジョーの機能拡張についての詳細説明など、非常に楽しめる内容でした。

pinball_small

  • 10月くらいに完全版公開する予定
  • 詳しくはフォーラム見ておいてね
  • 自分でエディタを改造してワークフローを改善する
    • ピンボールゲームを例にする
  • 実際のスケールでボールを設定すると、物理エンジンのシミュレーションが微妙におかしくなる
    • スケールを工夫してボールの大きさを100cmにすると物理シミュレーションがうまく動く
    • 大きいから作業もしやすい
  • 物理シミュレーションを実験するときには、Blueprint使ってさくっと実験してみると良い。お手軽
  • 実際のピンボール台は6〜7度だけど、いまいち。
    • 編集しづらい
    • 台をフラットにして、ボールに下向きの推進力を加えるようにした
    • それっぽく見えればOK
  • CCD(Continuous Collision Detect)を有効にすると、衝突判定がうまくいく
    • 回転してるものにCCDを適用すると重すぎ
  • 物理サブステップ
    • 1フレーム1回以上実行する=サブステップ
    • 60fpsで物理シミュレーションを120回実行 → うまくいった
  • Persistence Contact Manifolds

Blueprintだけ

  • フリッパー
    • 初期位置のバーの角度と終わりの角度を決められる
    • 速度も決められるよ
    • どっちのShiftボタンで反応するかも設定
  • スリングショット
    • 弾くパワー
    • 物体に対して垂直方向?の力を加える
    • Radial Forceはダメ
  • ポップバンパー
  • ゲート
  • キッカーホール

  • 参考にしたのはVisual Pinball

壁とランプ

  • Visaul Pinball
    • ポイントをドラッグすると変形可能。
    • ポイントは増やせる。なめらかにさせる時はポイント数を増やす
  • UE4でどうやる?
    • スプライン曲線
    • スプラインメッシュ
    • 閉じてるループ
    • スプラインメッシュコンポーネント+コリジョン
    • コリジョンの設定
      • ポーンと衝突
      • 物理ボディと衝突
      • etc
    • 頂点数を多くするとメッシュがなめらかになる
    • 分割されると丸みを帯びた形に
    • これだけだと天井に穴が空いた状態
      • プリンシプルバーテクスとポリゴンの耳を使う
    • 三角分割関数
      • UE4にはあるので、Blueprint用に公開してあげる
      • BlueprintFunctionLibrary C++:ブループリントで呼び出し可能な関数の作成 スクリーンショット 2015-10-19 15.24.20
    • スプラインメッシュの頂点数とトップの頂点数が同じはずなのにずれてて穴が出来る
      • Get Location at Distance Along Sprineを使ってた
      • Get Location at Timeを使うと良い
    • 演算式ノード
      • 計算式を入れると自動的にパースしてくれる
      • 自分でBlueprintで計算式を組み立てる必要がない
      • 最近追加されたよ
      • 最適化されてるので自分で書くより早い
    • メッシュが見えない時は、トライアングルの頂点の指定順序が逆
      • 見えないところにGPU使うのは良くないので抑制されてる。裏側だと見えない。表側だと見える
      • BPを使って頂点インデックスの順序を変えるだけでOK。1→2→3 を 3→2→1 にすると逆になる

エディタの拡張

  • エディタの拡張は、生成するゲームには含めない。
    • エディタ専用モジュールが必要
    • ゲームのモジュールとはきっちり分けて管理する
  • UE4エディタのプロジェクトは .cs ファイルで記載されてる
    • MyCodeProject.Target.cs : ゲーム用のモジュールを管理する
    • MyCodeProjectEditor.Target.cs : エディタ用のモジュールを管理する
    • MyCodeProject.Target.cs では if (UEBuildConfiguration.bBuildEditor) を記述して、エディタをビルドする時は、モジュールを含める。
    • MyCodeProjectEditor.Target.cs は特に条件分岐は必要ない
  • ソースフォルダを作成して、明確にモジュールを分岐。以下をコピってくる
    • MyCodeProject.Build.cs
    • MyCodeProject.h
    • MyCodeProject.cpp
  • エディタの詳細タブのところをカスタマイズする
    • Key : Value形式
    • 1ラインのアイテム(ボタンを横長とか)
    • カスタムウィジェット(スレートウィジェット)
      • スレートUIフレームワーク
      • SWidget#OnPaint() で描画の詳細を指定することが出来るよ
      • ユーザー入力(キーボード、マウス)を受け取るSWidget巻数をオーバーライドする

エディタがこんなにも簡単に柔軟にカスタマイズできるというのに驚きました。さらにサンプルとはいえ、とてもクオリティの高いピンボールゲームになっていました。公開されたプロジェクトはぜひ中身を隅々まで見ておきたいところです。

まとめ

ゲーム業界が多かったですが、それ以外にも建築や映像関係など非常に幅広く支持されているゲームエンジンであることを感じることが出来ました。縁あって札幌のUE4 MeetupにLTとして登壇させてもらって以来、個人的にちまちまといじってはいますが、もっとこの機能を使ってみたい、こんな機能があるのか、プロが使うとこんなものが作れるのか、など非常に驚きと発見に満ちた一日でした。VRコンテンツはあまりに人気で全く整理券をゲットすることができなかったのが残念です。 *4

参照

脚注

  1. とは言っても若干テクニカル寄りだった気がしますが
  2. 最早自分レベルのプログラマーとか不要なんじゃないかと思う程度に
  3. 個人的には興味はあったのですが、途中からほぼついていけず(;゚Д゚)
  4. サマーレッスンとBullet Trainやりたかった・・・