Unreal Engine 5 早期アクセスの注目機能総おさらい
Part2
Epic Games Japan Support Team
こちらの講演は Part 1 があります
本講演では Unreal Engine 5 早期アクセスのプログラマ・エンジニアの方に向け
た機能を紹介します。
Part1 ではアーティスト・デザイナ向けの機能について紹介しています。
ノンゲーム向けセッション
World構築機能のアップデート
World Partition
World Partition
● World Partition とは?
● UE5で新しく追加される大規模なワールドを管理するための機能・方法
● 新しいデータ管理および距離ベースのレベルストリーミングシステム
https://docs.unrealengine.com/5.0/ja/WorldFeatures/WorldPartition/
● 大規模ワールドを構築するシステム
● UE4では World Composition を利用することで実現、ただし利用する際に機能的な制限が多
く組み込むには多くの工夫が必要だった
● UE5では(将来的に)World Composition が廃止となり、World Partition がデフォルトの
ワールド作成方法となる
● World Partition では既存の問題を解消してより使いやすいものになる
World Partition
 [特徴]
● グリッドベースでワールドをセル単位に分割
● セル単位で部分的に領域のロード/アンロードが可能
● プレイヤーとの距離によって自動的にロード/アンロードが可能
Level Instance
 [特徴]
● 個別にデザインしたレベルをActorとして配置できる
● ランタイム時に同一レベルや複数のインスタンスをストリーミング可能
● ”レベル内にレベルインスタンスを配置すること”もできるのでレベルの階層化が可能
WPを有効にした
パーシスタントレベル
一部をレベルインスタンス
として編集・配置
細部をレベルインスタンス
として階層化
Data Layer
 [特徴]
● UE4の Layer システムの代わ
りとして機能
● 複数のActorをレベルエディタ
で動的にロード/アンロードが
可能
HLOD
 [特徴]
● セル単位で一括したHLODの生成
をサポート
● コマンドレットで自動作成
(現時点ではこの方法のみ)
● HLODは主に3つのタイプ
● Instancing
● Merged Mesh
● Simplified Mesh
Unreal Insights
Unreal Insights
Unreal Insights
https://docs.unrealengine.com/4.26/ja/TestingAndOptimization/PerformanceAndProfiling/UnrealI
nsights/Overview/
Unreal Insights | Live from HQ | Inside Unreal
https://www.youtube.com/watch?v=TygjPe9XHTw
Memory Insights
https://docs.unrealengine.com/5.0/en-US/PerformanceAndPlatformFeatures/MemoryInsights/
Memory Insights : Memory Trace [-Trace=Memory]
Memory Insights : Tag Trace
Memory Insights : Callstack Trace
Timing Insights : Task Trace [-Trace=Task]
Timing Insights : Task Trace
Timing Insights : ContextSwitch Trace [-Trace=ContextSwitch]
Timing Insights : Render Graph Trace [-Trace=RDG]
One File Per Actor
umap umap
OFPA
One File Per Actor
One File Per Actor
● レベル上の1アクターに対して1つのパッケージ(ファイル)が割り当てられる
● アセットのチェックアウトもアクター毎
● 複数の開発者が同時に同じレベルに対して作業できる
● レベル上のアクターを操作してもそれを格納したレベルは編集マークがつかない
● 平行作業のためのサブレベル分割は不要
● 大きなレベルでは万単位のファイルが追加されることになります
● ファイル増加に伴いソースコントロールの負荷は増加
● パッケージビルドではクック時に単一のumapパッケージに纏められます
One File Per Actor 有効化 (レベル単位)
● ワールドセッティング > WORLD >
「外部アクタを使用」にチェック
● チェックボックスを外すことで
もとの「内部アクタモード」に
戻すことが可能
One File Per Actor 有効化 (アクター単位)
● アクタの詳細中の
「パッケージ化モード」を「外部」にする
● アクターが作成されたときの初期設定は
レベルの設定による
One File Per Actor の保存先
追加・変更されたファイルは緑で、
削除されたアクタは赤で表示されます。
外部アクタは__ExternalActors__フォルダ以下に
マップのパス+ハッシュ値で保存されます。
__ExternalActors__フォルダはコンテンツブラウザから不可視
基本的にエンジンが自動で制御するので直接操作しない
Large World Coordinate
LWC
※イメージです
LWC(倍精度ワールド座標)
UE4は広大なレベルを扱うには単精度浮動小数点の精度により
「ワールド基点の再設定(World Rebasing)」が必要で、マルチプレイに対応して
いないなど、開発難度が高かった
UE5は将来的にすべての座標が倍精度に拡張され広大なワールドを直接的に扱え
るように変更されます
Chaos Update
Chaosとは
UnrealEngineのために作成された次世代の物理シミュレーションシステム
UnrealEngine5ではChaosがデフォルトで有効になり
PhysXのサポートは収束へ
Chaosのモチベーション
● 今後の発展に向けた抜本的な改良の基盤
● 改良され、より洗練されたパラメータやUI
● エンジン内で完結したより効率的なワークフロー
● エンジンとの密接な結合
● エンジン内の他の仕組みと連携
● 使いやすいデバッグ機能
● 他のコードと同様にコンパイルデバッグが可能
● 互換性
● 基本的なコリジョンや物理シミュレーションの設定は概ね互換性を持つ
Chaos Update
● Physics 非同期シミュレーション
● Physics デバッグ表示機能
● Cloth バックストップの改良
● Cloth パラメータのランタイム設定
Chaos Physics
非同期物理シミュレーション
非同期物理シミュレーション
● プロジェクト設定のTickPhysicsAsync
● ゲームスレッドで物理シミュレーション
の終了を待たないモード
● CPUリソースに余裕があれば
1Tickの時間を全てシミュレーションに
充てることもできる
● シミュレーション用フレームレート指定
● 固定デルタタイム
同期物理モードの動作
物理シム終了待ち
物理シム
非同期物理モードの動作
シミュレーションの
同期待ちが無い!
物理シム
同期物理モード vs 非同期物理モード
TickPhysicsAsync=1
TickPhysicsAsync=0
非同期物理モード(低頻度シミュレーション)
ゲームのフレームレートより低いシ
ミュレーション頻度
各Tick毎の剛体の位置は物理シミュ
レーションデータを補間して使う
シミュレーションされた剛体に直接イ
ンタラクションする場合、遅延を感じ
ることがあることにご注意
t.MaxFPS=60 AsyncFixedTimeStepSize=1/20
GameThread 3Ticks
非同期物理モード(高頻度シミュレーション)
指定フレームレートを最大値として
タスクグラフスレッドでシミュレーショ
ンを繰り返す
物理シミュレーションの負荷があまり大
きくないが、より高精度なシミュレー
ションが望ましい場合に有効
t.MaxFPS=60 AsyncFixedTimeStepSize=1/180
固定デルタタイム
● 固定デルタタイム設定を使うと
一回のシミュレーションTickで進行する時
間が固定される
● 例えば性能の違うプラットフォームでも
同じシミュレーション結果が得られる
● 剛体のマルチプレイでの同期
16.6ms 16.6ms 16.6ms 16.6ms 16.6ms
t.MaxFPS=25 AsyncFixedTimeStepSize=1/60
DedicatedThreadTickMode=Fixed
Chaos Physics
デバッグ描画機能
物理シムデバッグ描画機能
デバッグ描画用コンソールコマンド
● p.chaos.debugdraw.enabled 1/0
● 大元のデバッグ描画有効化フラグ
● p.ForceDisableAsyncPhysics 1/0
● 非同期物理シムの無効化
非同期物理有効時は正しい描画ができません
● p.chaos.solver.DebugDraw.LineThickness 1.0
● デバッグ用描画の線の太さ
● p.chaos.solver.DebugDraw.DrawScale 1.0
● 矢印などの大きさ
● p.Chaos.DebugDraw.MaxLines 30000
● 最大描画ライン数
● p.Chaos.DebugDraw.Radius 1000
● デバッグ表示の描画半径
● showflag.temporalaa 0
● カメラが動いた時にブレにより見辛くなるのでTAAを無効化します
p.chaos.solver.debugdrawshapes 1
デバッグ描画用コンソールコマンド
● p.chaos.solver.debugdrawshapes 1/0
● コリジョンメッシュ表示
● p.chaos.solver.debugdrawcollisions 1/0
● 接点表示
● p.Chaos.Solver.DebugDrawBounds 1/0
● バウンディングボックス表示
● p.Chaos.Solver.DebugDrawTransforms 1/0
● トランスフォームのボックスや重心の表示
● p.Chaos.Solver.DebugDrawIslands 1/0
● シミュレーションアイランドの表示
● p.Chaos.Solver.***
● 物理シムソルバー用CVarの名前空間
p.chaos.solver.debugdrawcollisions 1
デバッグ描画用コンソールコマンド
● p.Chaos.ImmPhys.***
● リジッドボディ アニムノード用CVarの名前空間
● p.Chaos.ImmPhys.DebugDrawShapes 1/0
● p.Chaos.ImmPhys.DebugDrawShowStatics 1/0
● p.Chaos.ImmPhys.DebugDrawShowKinematics 1/0
● p.Chaos.ImmPhys.DebugDrawShowDynamics 1/0
● p.Chaos.ImmPhys.DebugDrawCollisions 1/0
● p.Chaos.ImmPhys.DebugDrawJoints 1/0
● p.Chaos.ImmPhys.DebugDrawJointFeatures 6/0
● p.Chaos.ImmPhys.DebugDrawSimulationSpace 1/0
● p.Chaos.ImmPhys.DebugDrawParticles 1/0
Chaos Cloth
バックストップの改良
バックストップ
オリジナルのメッシュ
法線
バックストップは質点毎に法線の逆方向に仮想のコリジョン球を配置し、質点が
指定した距離から裏側にめり込まないようにする設定です。
シミュレーション後の
メッシュ
バックストップ球
バックストップの旧設定
バックストップ距離
バックストップ半径
旧設定ではバックストップ距離だけ後退した点を中心に球が設定されている。
重要なのは質点と球の表面までの距離なので、「半径」を考慮して「距離」を設
定しなければならなかった。
バックストップの改良
新設定ではバックストップ距離で指定される点が球の表面上に置かれるように設
定される。つまりデザイナーはバックストップ半径をある程度大き目にとってか
らバックストップ距離を調整するだけで良くなりました。
旧設定 新設定
Chaos Cloth
パラメータのランタイム設定
パラメータのランタイム設定
いくつかのパラメータはランタイムで
パラメータを変更することが出来るようになりました
Unreal Engine 5 早期アクセス
Gameplay Update
Epic Games Japan
岡田 和也
Game Features
&
Modular Gameplay
どんな機能?
プロジェクトにおける様々な要素・実装を分割し、
コンポーネントのように自由に付け外しすることためのフレームワーク
Fortnite のパイプラインから着想を得て製作
しっs
しっs
しっs
◯◯ システム
期間限定イベント
ミニゲーム
メイン実装・アセット メイン実装・アセット
しっs
ミニゲーム しっs
期間限定イベント
しっs
◯◯ システム
不要なアセット・実装はいらない!考えたくない!
敵との戦闘中
戦闘スキル
ミニゲーム
マップ移動用
過去の開催イベント
不要なアセット・実装はいらない!考えたくない!
敵との戦闘中
戦闘スキル
従来の課題・よくあるトラブル
1つのBPに実装が集中してしまった!
作業分担もできない!
実装の分割はできたが
アセット・システム間の参照関係が複雑になってしまった!
● 不要なロード・メモリ確保が発生
● システムの ON / OFFが気軽にできない
● 機能追加・コンテンツ更新のたびに
メイン実装に増える処理分岐・チェック用処理
従来の対策・解決方法
Actor, Component, Level で分割
● 基本機能なので実装・対応自体は簡単
● 参照関係の整理、ON・OFFの管理が大変
Module, Plugin で分割
● 参照関係を明確にしやすいが実装・管理が大変
● C++必須になるのでプログラマ頼りに
● 動的なON・OFFが不可能
従来の対策・解決方法
Gameplay Ability System で分割
● 実装の切り分け・ON/OFF を促す仕組み
● 参照関係を一方通行にしやすい
● データドリブンで調整・量産が可能
● 大きな単位(ミニゲームなど)での
実装・アセットの分割には不向き
● 良くも悪くも自由度が高く
プロジェクト側で用意・実装する部分が多い
近接攻撃用の実装・アセットを付与
これらの良いとこ取りをしたのが
Game Features & Modular Gameplay
Game Features とは
プロジェクト本体から独立した
実装・アセットを格納・管理するプラグイン
Game Features の キホン
実行中に指定のGame Featureを
動的に有効・無効化可能
(右図のノードは古代の谷サンプルの独自実装)
コンソールコマンドからでも切り替え可能
● LoadGameFeaturePlugin <プラグイン名>
● UnloadGameFeaturePlugin <プラグイン名>
Game Features の キホン
対象のGame Featureを有効・無効にした際に
実行する処理(Action)をData Asset で設定
Action の 例
● 対象のキャラクターに
Component, GameplayAbility を 付与
● Level Instance を指定のレベルに追加
● ユーザ入力設定( Enhanced Input )を追加
Enhanced Input
従来のユーザ入力設定(Input Action) を
アセットで設定・追加できる仕組み
コード・BPを追加することなく、
入力設定を細かく調整可能
公式ドキュメント:
https://docs.unrealengine.com/5.0/ja/
GameplayFeatures/EnhancedInput/
Game Features の キホン
対象のGame Featureを有効・無効にした際に
実行する処理(Action)をData Asset で設定
Action の 例
● 対象のキャラクターに
Component, GameplayAbility を 付与
● 専用のキー入力設定を追加
● Level Instance を指定のレベルに追加
Modular Gameplay が担当してるのはここ
古代の谷サンプルでの活用
● プレイヤーにドローン生成処理・演出機能を付与
● ↑用のキー入力設定を追加
● ドローン操作への遷移演出用カメラを生成 など
古代の谷サンプルでの活用
● プレイヤーに攻撃・前転・歩行機能を付与
● ↑用のキー入力設定を追加
● 道中の破壊可能オブジェクトの配置
● Ancient One と関連アセットの配置 など
Show Plugin Contentを有効に
Game Features のつよみ
Game Features のつよみ ①
プロジェクト本体 から完全に独立している!
   プロジェクト本体はGame Features への参照を持てず、
   参照関係は『Game Features ▶ プロジェクト本体』への一方通行のみ
     プロジェクト本体への影響を気にすることなく、
     機能の無効化ができる!
 これは実装作業・作業分担する上でも大きなメリット!  
参照関係が一方通行だから、安心して無効化できる
● 本編とは無関係の
ミニゲーム
● プレイ中のモードでは
不要な機能や
レベル上のギミック
● チーム内レビューが近いけど
〆切に間に合いそうにない
実装途中のシステム、
演出、モデルなど
Game Feature間の依存関係は設定可能
参照関係を設定せずに
他のGame Featureのアセットを
参照した際に出るエラー
Game Feature間の依存関係は設定可能
プロジェクト設定のAsset Referencing Policy
プラグインのパスなどで一括設定可能
各Game Featureがプロジェクト本体の
アセットを参照できるのはこの設定のおかげ
Default Project Content Rule から
プロジェクト本体がGame Featureに
参照関係を持つことを可能にすることも…
Game Features のつよみ ②
プロジェクト側で
Action を自由に追加可能!
 
 Modular Gameplay 機能が実装をサポート
 
 古代の谷サンプルにて
 様々なActionが実装されてるので是非確認を
 
 無効化時に追加したものを削除する処理を
 入れることを忘れずに
UE5 早期アクセスにて標準搭載の Action
各Actionの詳細は公式ドキュメントにて
https://docs.unrealengine.com/5.0/ja/GameplayFeatures/
GameFeaturesAndModularGameplay/
Data Registry:
 (Composite) Data Tableのように
 キーに応じたデータを取得するための機能
 従来の機能に比べて
 より柔軟かつ拡張性が高い仕組みに
 https://docs.unrealengine.com/5.0/ja/
 GameplayFeatures/DataRegistries/
Game Features のつよみ ③
プログラマが追加した処理(Action)を
データドリブンで実行可能!
(下準備が済めば)UE5、プロジェクト内の
様々な機能・処理をノンコードで呼び出せる!
(下準備が済めば)可能性は無限大!
その他
● プラットフォームに依存する処理はないため、
様々な環境下で使用可能
● 内部処理にてAsset Managerと強く連携
ロード・アンロード処理、Primary Asset 管理などに対応
● DLCのように使用することも可能
Game Featureの有効の可否を購入済みフラグで制御すればOK
● UE4.27で使用することは未サポート。あくまでUE5専用の機能
参考資料
公式ドキュメント - ゲームプレイ フレームワークの新機能 -
https://docs.unrealengine.com/5.0/ja/GameplayFeatures/
公式ドキュメント - 「古代の谷」サンプル -
https://docs.unrealengine.com/5.0/ja/ContentAndSamples/ValleyOfTheAncient/
Modular Game Features | Inside Unreal
https://www.youtube.com/watch?v=7F28p564kuY
株式会社ヒストリア様によるブログ記事
[UE5] プレイヤーの技などをプラグインで実装できる! GameFeaturesプラグインの紹介
https://historia.co.jp/archives/21145/
Game Features に関するまとめ
UE4では難しい、または面倒だった
プロジェクトにおける要素・実装の分割をエンジンがサポート
データドリブンで
より複雑な制御・管理をすることが可能になり、
非エンジニアができることが更に増えました!
他の機能と同様に、ゲーム実装に関しても
これまでのワークフローから大きく変化することに!
是非触って検証してみてください!
OnlineSubsystemEOS
OnlineSubsystem とは
Online Subsystem とそのインターフェースは、Steam、Xbox Live、Facebook
などのオンライン サービスの機能にアクセスする共通の方法を提供します。
複数のプラットフォームで提供したり複数のオンライン サービスをサポートした
りするゲームを手がける場合は、Online Subsystem を使用すると、デベロッ
パーは各サービスのコンフィギュレーションの調整を行うだけで良くなります。
https://docs.unrealengine.com/4.26/ja/ProgrammingAndScripting/Online/
Online Subsystem (OSS)
OSS A OSS B OSS C
...
Online
Service A
Online
Service B
Online
Service C
Game Application
Epic Online Services (EOS) とは
https://dev.epicgames.com/ja/services?lang=ja
UE と EOS
UE と EOS
Online Subsystem (OSS)
...
OSS EOS
Epic Online
Services
OSS A OSS B OSS C
Online
Service A
Online
Service B
Online
Service C
UE と EOS
OSS EOS の有効化
● Engine.ini に下記を追加
[OnlineSubsystem]
DefaultPlatformService=EOS
bHasVoiceEnabled=true
[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsyste
mEOS.NetDriverEOS",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
[/Script/OnlineSubsystemEOS.NetDriverEOS]
bIsUsingP2PSockets=true
https://dev.epicgames.com/portal/
実際の使い方
サンプルを動かす
DevPortalで、実際にLobby/Voice chatルームが作成されていることを見せる
OnlineSubsystemEOS の機能
● EAS/EGS Auth
● EAS Presence
● EAS Friends
● EGS/EAS Ecom
● EOS Sessions
● EOS Stats
● EOS Achievements
● EOS Leaderboards
● EOS Player Data Storage
● EOS Title Data Storage
● EOS p2p Sockets
● EOS Metrics (session based analytics)
● EOS Voice
最新学習リソース・コミュニティ・サポート
ご紹介!
最新学習リソースをご紹介!
おしながき
● 公式ドキュメント
● 公式サンプル
● Unrealオンラインラーニング
● 公式Youtube
● SlidoShare・ホワイトペーパー
● Qiita
● コミュニティのブログ
● 参考書情報
● インストラクターガイド
公式ドキュメント
Unreal Engine に関する公式日本語ドキュメント
https://docs.unrealengine.com/5.0/ja/
公式ドキュメント
UE4とUE5でドキュメントはプルダウンで切り替え可能
公式サンプル
Unreal Engine 5 早期アクセス向けサンプル「古代の谷」
公式サンプル
30を超える Unreal Engine 4 向けサンプルはランチャーのラーニングタブから!
Unrealオンラインラーニング
Epic Games の提供する無料のビデ
オ学習ポータルサイト
現在 100 以上のコースを日本語に
て提供中
https://www.unrealengine.com/ja/on
linelearning-courses
Unrealオンラインラーニング
タグによるフィルターはオススメ!
初心者向けや業界別のタグによるコースをフィルタリング可能!
https://www.unrealengine.com/ja/onlinelearning-courses
公式Youtube
Unreal FestなどのEGJ公式オンラ
インイベント配信などを行ってい
ます
https://www.youtube.com/chann
el/UCUI8jWalKaZ3HsT_-0qTqWg
Slideshare・ホワイトペーパー
国内のUnreal Engineに関する過去
の講演資料がアップされていま
す。
https://www.slideshare.net/EpicGa
mesJapan
Unreal Engineに関する過去の公式
資料がアップされています。
https://www.unrealengine.com/ja/re
sources
Qiita
サポートチームから UnrealEngine
に関するノウハウを公開中!
https://qiita.com/organizations/epic
gamesjapan
Qiita UEグループページ
参考書籍情報
Epic Games Launcher のUE4タブに書籍情報を掲載中
インストラクターガイド
教育者向け学習リソース
実際の授業での使用を想定した資
料やテスト、用語集などを配布中
https://www.unrealengine.com/j
a/educators/resources?sessionIn
validated=true
コミュニティ情報
おしながき
コミュニティ
● AnswerHub
● Forums
● Epic Online Services Support
● Udemy
● 最新情報
AnswerHub
Unreal Engine に関する質問などを投稿して
頂くことでコミュニティ内から回答やアドバ
イスを受け取れる場です。
質問とは別に回答も可能です。
https://answers.unrealengine.com/spaces
/16/view.html
Forums
Unreal Engineに関するディスカッションを
国内外問わず行う場
日本語トピックのみを見れるカテゴリも!
https://forums.unrealengine.com/
Epic Online Services Support
コミュニティベースのサポートサイトにてディスカッションや質問、解答が可能
https://eoshelp.epicgames.com/s/
Udemy
コミュニティ内から制作販売され
た高クオリティのチュートリアル
を購入可能!
● 入門チュートリアル
● FPS制作チュートリアル
● 高クオリティな背景制作
チュートリアル
など...
https://www.udemy.com/topic/u
nreal-engine/
最新情報
Unreal Engine に関する最新情報は各種SNSから発信しています!
● Twitter
● Facebook
● Youtube
● unrealengine.com
● Epic Games Launcher
サポート情報
おしながき
サポート
● 不具合報告
● 誤訳等の報告
● Unreal Developers Network
● Epic MegaGrants
不具合報告フォーム
Unreal Engine に関する不具合を発見した場合
にレポートを Epic Games に提出するための
フォーム
https://epicsupport.force.com/unrealengine/
s/?language=en_US
詳しい報告手順はこちら:
https://www.unrealengine.com/ja/support/r
eport-a-bug
日本語ドキュメント 誤植&誤訳 投稿所
Unreal Engine や日本語ドキュメント内の誤植
や誤訳などを発見した際はぜひこちらからご報
告お願い致します
https://forums.unrealengine.com/t/topic/29
122
Unreal Developers Network
ライセンス契約を結んで頂いた方向けの EpicGames によるサポートページ
サポート方法は AnswerHub と同じ質問に対して回答行う形式
Epic Games のスタッフに対して直接質問を投げかけて頂けます。
Epic MegaGrants
EpicGames による総額1億ドルの予算の中から
開発者に対して資金提供を行うプログラム
https://www.unrealengine.com/ja/megagran
ts
詳しくはこちらのEGJオンラインラーニングを
ご視聴ください!
https://youtu.be/opny2jsBisM
Unreal Engineのライセンスについて
Epic Games Japan
William Bernard ・ベルナル ウィリアム
プレゼンテーションのリンク
Unreal Engine のライセンスオプション:
https://www.unrealengine.com/ja/download/creators?lang=ja
Unreal Engineの法人向けのライセンスオプション:
https://www.unrealengine.com/ja/custom-license
Epic Games Storeについて:
https://www.epicgames.com/store/ja/about?lang=ja
Unreal Engineについてよくある質問ページ:
https://www.unrealengine.com/ja/faq?sessionInvalidated=true&lang=ja
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2

Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2