【UE5】Unreal Fest 2022 レポート(4)

shuntaendo.hatenablog.com


35 UE5 Features You Probably Don't Know About - おそらくあなたが知らないUE5の35の機能

youtu.be

UE5の機能紹介。
Epic Gamesスタッフによる講演。

エディター

・コンソールコマンドの検索方法
ツールバーの [Help] からコンソールコマンドを検索できるサイトに飛べる。

 


・Console Valiables
コンソールコマンドをまとめて制御できます。

 

shuntaendo.hatenablog.com


・ABTest
コンソールコマンドから2つ描画設定を比較できます。




・アセットのリロード
保存していない編集内容の破棄などの用途にも使える。




・Advanced Search Syntax
コンテンツブラウザで条件を記述してフィルターを掛けられる。

shuntaendo.hatenablog.com


・Asset Registry
Asset Registry に情報を追加してリスト化、ソートできる。




・Cube Grid
ステージなどの地形をすばやく作れる機能。

[UE5] 初めにステージを作るのに最適!Modeling ModeのCubeGrid機能紹介|株式会社ヒストリア


・Fix Pivot Tool
メッシュのピボットを編集できます。




・Geometry Script
ブループリントでメッシュの形状を制御できる機能。

ジオメトリ スクリプトのユーザー ガイド | Unreal Engine ドキュメント


・Common Conversation
会話ツリーを作成できる機能。




・Sequencer Player Camera Blend
プレイヤーカメラとシーケンサー内のカメラのブレンド方法。




・Screen Transform
カメラ(スクリーン)基準でトランフォームギズモを操作する。




・Statistics Viewer
統計情報を見れるツール。

 


GPU情報のキャプチャ
「r.RHISetGPUCaptureOptions 1」を実行し、ProfileGPUでキャプチャするとエレメントごとのコストが表示される。




・Procedural Foliage Volume
ボリューム単位でフォリッジを配置できる。

 


・カメラ固定移動
ビューポートで Shift を押しながらアクターを移動するとカメラも追従する。




・カメラのブックマーク
Ctrl + 1, 2, 3 でブックマークしたカメラに移動できる。




・タスクバーの非表示
"Shift + F11" でタスクバーを非表示にできます。

ブループリント

・Bluepritn C++ Header Preview
ブループリントからC++ヘッダーの自動生成ができる。




・Waveform Collapse プラグイン
Waveform Function Collapseアルゴリズムを扱えるプラグイン

Wave Function Collapse | Unreal Engine Documentation

The Wavefunction Collapse Algorithm explained very clearly | Robert Heaton


・Move Component Toノード
シンプルな非同期ノード。コンポーネントの移動を制御できる。



マテリアル

・Custom Decal Responses
UE5 からデカールのレスポンスをカスタマイズできる機能が追加された。

 


・Custom Primitive Data
スカラーパラメータの設定から Use Custom Primitive Data を有効にすると、レベル上のアクターの詳細パネルからアクターごとにパラメータを設定可能。

 


・Interpolate Material Instance Parameters
共通の親を持つ2つのマテリアルをブレンドすることができる。

 


・Runtime Virtual Texture
RVTを使えばランドスケープとメッシュをなじませることができる。

UE4 ランタイムバーチャルテクスチャーとランドスケープによるメッシュ境界のブレンド - Let's Enjoy Unreal Engine


・Texture Baking
エンジン内の様々な情報をテクスチャにベイクできる。




・Placeable Volumetric Fog
マテリアルで表現した配置可能なフォグ。

 


・Named Reroutes
マテリアルグラフを整理できるリルートノード。




・Shadow Pass Switch
任意の影の形を出せるマテリアルノード。

shuntaendo.hatenablog.com

エフェクト

・水の浮力
Water プラグインでは、オブジェクトを水上に浮かせることもできる。

Unreal Engine の Water システム | Unreal Engine 5.1 ドキュメント

[UE4] Waterプラグインを使ってプールを作成する|株式会社ヒストリア


Niagara Debugger
"Tools > Debug > Niagara Debugger" からNiagaraデバッグツールを起動できます。

Niagara でのデバッグ | Unreal Engine ドキュメント


・配置可能な雲
Volumetrics プラグイン内にある機能。




Niagara Fluid
流体エフェクトを作れる。コリジョンもサポート。

Unreal Engine の Niagara Fluids | Unreal Engine 5.0 ドキュメント


Niagara Baker
Niagara の動きを Flipbook にベイクできる。



Niagara Life Cycle Track
シーケンサーで Life Cycle を制御できる。




Niagara GBuffer Access




Niagara Simulation Stages



物理

・Chaos Cache Manager
Chaos の動きを記憶できる。



アニメーション

・Blend Space Graph
ABP上で Blend Space を編集できる。




・Bake To Control Rig
シーケンサーにControl Rigの動きをベイクできる。




・キーフレームの単純化
シーケンサーのキーを削減して単純化できる。

 


・Linked Animation Sequence
Control Rig で Sequencer と Animation のリンク。




・Animation Mirroring
アニメーションを簡単に反転できます。

Unreal Engine でのアニメーションのミラーリング | Unreal Engine 5.0 ドキュメント


・Property Access
引数と変数やPure関数をバインドさせることができる。



サウンド

・Isolate Audio
コンソールコマンドからサウンドの再生、停止を個別に制御できる。







The Unbreakable Team: Maintaining Build Stability in Unreal Engine - UEでビルドの安定性を維持する

youtu.be

アラートシステム、自動化された単体テストと統合テスト、データ検証について。

ビルドフロー

エディタのコンパイルから起動まで以下のステップがある。

  1. Compile Editor
  2. Cook Content
  3. Compile Client
  4. Compile Server
  5. Compile Blueprints
  6. Validate Assets
  7. Run Tests Client
  8. Run Tests Server
  9. Boot Editor with Cooked AngelScript
  10. Boot Server

各処理にかかる時間(クライアントのみ)




Run Test に Cook は必要ないので異なるマシンで並行して実行する。




各処理を並列化することで高速化を測る。

 

エンジンのアップデートフロー

Angelscript を使用しているのでフローが通常のものとは違う。Github と Perforce で管理を分ける。



メインのワークフロー

P4V にもカスタムツールを組み込んでサブミットされたチェンジリストごとに検証するステップを挟んでいる。




エンジン内のファイルかそうでないかで検証レベルを変えている。




サブミット時の専用GUI。レビュアーなどを設定。
JIRAとも連携している。




同期ツール。機能は最小限にした。



ビルド失敗時のサポート

長いログファイルをパースしてエラーの該当箇所を表示する。




Slackチャンネルに通知。







Cross-play, P2P, and Unreal Engine—Easier Said Than Done - UEでのクロスプレイ、P2P

youtu.be

クロスプレイP2Pゲームをリリースするために必要なこと。

概要

クロスプレイはプレイヤーに人気だが、開発の観点だとまだ標準化されていない。

OUTRIDERS というゲームで実装した事例を紹介する。

store.steampowered.com

設計

まずはターゲットとするプラットフォームを決める必要がある。
プラットフォームの数によってテストしなければいけないパターンの数が大幅に変わってくる。

次にゲームデザイン
PCではキーボード&マウスとコントローラーで入力可能だが、コンソールではコントローラーのみなど。

マネタイズモデルを考える。
プラットフォームによってマージンされるパーセンテージも違う。




他にもDLCが存在する場合は、1人が所有していれば他のプレイヤーにも共有される、など考慮しなくてはいけない点が多数ある。



クロスプレイの構成

Unreal のプレイヤー間の通信は、UDPプロトコルを想定した作り。

開発環境ではIP接続で問題ないが、リリースするものでは使えない。
主な理由は2つ。

1.同じLANネットワーク内から接続している状況が非常に稀であるため
したがってある種の NAT traversal を実装する必要がある。

2.セキリティ上の理由
PCからコンソールにアクセスしている場合、IPが分かれば住所などを特定されかねない。

・中継サーバー
プレイヤー間で直接通信させようとすると、ファイアウォール、NATなど様々な問題が出る。
プレイヤー間を橋渡しするだけの中継サーバーを用意する。橋渡しするだけであれば割りと安価に運用できる。




Epic Online Service のような無料のサーバーを使用しない限り、運用コストは掛かる。

dev.epicgames.com


・BACKEND
BACKENDの観点から仕組みを作る。

例えば、プラットフォームAからプラットフォームBに対してメッセージを送った場合、
Bはすぐ受け取れる状態かわからないので、一時的にBACKENDに保存しBの受け取れるタイミングで渡す。




他にも下記のようなものがある。

クロスプレイではなんでも中継する仕組みが重要。
クロスプレイの実装はとても困難。技術的ハードルもその他のハードル(法律やポリシー)もかなり高いがやる価値はある。