Project Titanから学ぶオープンワールドワークフローと次世代移動コンポーネントMoverの設計

25.4K Views

April 14, 25

スライド概要

2025年3月28日に開催されたGame Creator Conferenceでの講演資料となります。
4000人のアーティストが参加したアートジャムプロジェクトの成果であるProjectTitanサンプルを参考にオープンワールド制作のワークフローやMoverの設計を学びます。

profile-image

Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Project Titanから学ぶ オープンワールドワークフローと 次世代移動コンポーネント「Mover」の設計 Senior Software Engineer, Developer Relations Takashi Suzuki 2025 Epic Games Japan

5.

登録者 4,129

6.

登録者 4,129 アクティブユーザー 594

7.

登録者 4,129 チェンジリスト 18,839 アクティブユーザー 594

8.

登録者 4,129 チェンジリスト 18,839 アクティブユーザー 594 ファイル数 229,44 4

9.

Project Titan サンプル ゲームが公開されました! https://www.unrealengine.com/ja/news/the-project-titan-sample -game-is-now-available-explore-this-huge-open-world

10.

プロジェクト概要 本日の流れ Titanから得られる 知見と見どころ Moverの設計

11.

プロジェクト概要 本日の流れ Titanから得られる 知見と見どころ Moverの設計

12.

Project Titan 概要 ● 10週間のオープンアートジャムプロジェクト ● 8km x 8km ● 9つのバイオームを持つランドスケープ ● カスタマイズ可能な標準マテリアル ● モバイルからハイエンドまでをターゲット ● 様々なドキュメントやチュートリアル ● 追加のツール ● ソースコントロールとCI環境 ● Discordによるオープンディスカッション ● 弊社スタッフによる毎週の批評

13.

ありのままの状態 で公開 学習リソースとしては 不適切な部分があることを ご承知ください!

14.

ありのままの状態 で公開 ! 学習リソースとしては 不適切な部分があることを ご承知ください

15.

Project Titan チュートリアルビデオ ● ミニ(?)チュートリアル ○ 基本的なアセットの作り方 ○ ベースマテリアルの使い方 ○ ランドスケープレイヤーマテリアル関数追加 ○ ブロックアウト(ホワイトボクシング) ○ 環境の誇張表現 ○ PCGの利用 ○ 適切なコリジョンの生成 ○ ボリュームのあるフォリッジ ○ フォリッジのインタラクション ○ RVTの利用 ○ 最適化TIPS ○ 地域毎のレビュー動画 ○ などなど ProjectTitan Mini Tutorials https://dev.epicgames.com/community/learning/tutorials/yjLn/unrea l-engine-project-titan-mini-tutorials

16.

Project Titan ガイドライン ● 小さく始める ● 既存のアセットや資料を活用する ● アセットの再利用性を考慮する ○ タイルやトリムシート をできるだけ利用する ○ プロジェクト内でコピーを作らない ● 協調作業を受け入れる ○ 周りのアーティストとコミュニケーションを取る ○ 他者の作成したアセットの加工は推奨される ○ 既に存在するアセットに手を加える場合 連絡をとり24時間返答が無かったら許可と判断 ● バックアップをとること ● 単独のアセットをワールドに直接配置しない ○ レベルに直接建物を立てずにプレハブ を作る ● 作業を完了してから次のエリアに移動すること

17.

Project Titan サーバー群 ● ● ● ● クラウド上のP4サーバーとP4プロキシ HLODの自動ビルド 起動高速化用のクラウドDDC ○ トータルコストの90%ほどを占める トータルコストは $22,159

18.

Project Titan テクスチャ ● ● ● ● 2のべき乗であること ○ 64,128,256,512,1024,2048,4096 ○ Max 4096 アルベド ○ α無し圧縮フォーマット ノーマル ○ α無し圧縮フォーマット サーフェス(リニア) ○ チャンネル毎にパック ■ R - ラフネス/マスク ■ G - メタル/マスク ■ B - AO/マスク ■ A - 高さ ○ sRGBを外す

19.

Project Titan アセットの配置 ● ● ● ● ● ● ベースアセット ○ /Environment/_Core/*** 汎用的に使われるもの ○ /Environment/_Global/*** 環境用 ○ バイオーム名の下に配置 ○ 例)砂漠エリア用テクスチャ /Environment/Desert/Textures キャラクター ○ /Character/*** 命名規則 ○ モバイルなどで利用するチャンク化の際に問題になるので ファイル名の重複は避けユニークな名前を付ける ファイルサイズ制限は無し ○ 参加アーティストの自由度を優先するため バリデーターは用意しなかった

20.

Project Titan マテリアル ● 基本的に予め用意されたマテリアルから マテリアルインスタンスを使って作成する ○ \Environment\_Core\Materials\M_BaseMaterial など ○ カスタムマテリアル作成は要連絡 ● 一般的なマテリアルを概ねカバーできる ○ 一般的なAlbedo/Surface/Normalなどのテクスチャの有無 ○ VTやRVT、マスクなどにも対応 ● マテリアルレイヤー やマテリアル関数 の使い方の参考に

21.

Project Titan Naniteマテリアル ● ランタイムでのディスプレースメントや マスクマテリアルは非常に高価 ○ スタティックディスプレイスメントマッピング ○ 十分に詳細なサーフェイスが作られれば マテリアルでの法線マップが不要になるケースも Unreal Engine 5.2 アップデート ~Rendering/PCG~【GTMF 2023】 https://www.docswell.com/s/EpicGamesJapan/KDE2Q6-UE5_GTMF23_Rende ring_PCG#p33

22.

Project Titan 成果物 ● ● ● ● ● 200000を超えるファイル 80GBのアセット 12000のメッシュ 8000のテクスチャ 5400のマテリアルインスタンス

23.

プロジェクト概要 本日の流れ Titanから得られる 知見と見どころ Moverの設計

24.

Project Titan ワールドパーティション ● ワールドをセルと呼ばれる矩形で分割して制作する仕組み ○ CellSize : 25600 ○ LoadingRange : 25600 ○ 2D gird ● リージョン設定 ○ 1km四方で64分割 ● 自分の担当部分だけを小さくロードする ○ Titanでは2リージョンまでロードが おすすめされていた ○ エディタの素早い起動 &レスポンス

25.

Project Titan HLOD ● 遠景を最適化されたメッシュで描画する ○ ワールドパーティションでロードされていない エリアが見えるのはこの機能の働き ● 提供されたCIで更新される ○ ローカルではビルドしない ○ CIによる更新までは差が生じる ● HLODタイプ : Approximated mesh (近似メッシュ) ● HLODビルドに時間がかかりすぎる/終わらない/クラッシュ ○ セル内の合計頂点数が多すぎて メモリを食いつぶしていないか確認 ○ 大量に配置している小物をHLODから除外する ○ フォールバックメッシュや 最大LODの精度を落とす

26.

Project Titan ランドスケープ ● ランドスケープはアートジャム前に開発チームによって作成 されてアートジャム中はロック ● ユニークかつ広大なランドスケープを 少人数の開発チームで作成するのは困難 ○ プロシージャル と手作業の良いところを突きたい ● 専用プラグインを開発!

27.

Project Titan ランドスケープデザイ ナー ● ハイトマップのスタンプを置くような形 で ランドスケープを編集するプラグイン ○ ブループリント のみで構成 ● 非破壊編集 ● レベルを8x8の矩形に分割し必要な部分だけを更新 ○ リアルタイム編集 ● 8k x 8kのテクスチャを生成 ● プラグインを別プロジェクトに取り出して使うことも可能

28.

ランドスケープデザイナー 主要アセット ● ● /LandscapeDesigner/DemoMap ○ 表示されているのはランドスケープではなく WPOを使った仮表示 であることに注意 /Maps/IgnoredMaps/LandscapeDesign ○ Titan用マップの編集レベル ● SplatManager_VIS ブループリント ○ 主要機能が集約されている ■ スタンプを収集してレンダリングを行う ○ 8x8のグリッドに分割 ○ 「Save Weight Preview」 でウェイトマップを出力 ● LS_LandmassInterface ○ ランドスケープへの転送インターフェイス ● スタンプアクター BP_LSD_~ ○ BP_LSD_HeightStamp : 次ページで解説 ○ BP_LSD_MaskMaterial : ノイズなどを加算 ○ BP_LSD_SplinePath : スプラインに沿って加工 ○ BP_LSD_Weight : ウェイトマップ編集

29.

ランドスケープデザイナー BP_LSD_HeightStamp ● ブレンドモード ○ Lerp : ハイトマップをαとしてブレンド ○ Overlay : ハイトマップを加算 ○ Min : 最小値 ■ マイナススケールのスタンプで盆地を作る ○ Max : 最大値 ● その他のプロパティ ○ /LandscapeDesigner/Material/M_Mixを参照 ● Tags配列の2番目を参照してプライオリティ 的な動作 描画順序

30.

手順4 ランドスケープデザイナー ランドスケープ反映手順 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. LandscapeDesignerマップを開く LandmassBrushManagerアクターを削除する (恐らくセットアップが壊れているため) ランドスケープモードに入る LandmassBrushManagerを新規に配置する ランドスケープモードを抜ける SplatManagerVISアクターを選択する 詳細 > SetupManagerボタンを押す Landscape_LS_LandmassInterface_Cアクターを選択する 詳細 > BrushManagerプロパティを設定する 再び SplatManager_VISを選択する UpdateRenderTargetとUpdateLandscapeボタンを押す 手順9

31.

Project Titan イージーインポスター ● スタティックメッシュ選択 > Scripted Action > Generate Simple Card Imposter ● StaticMeshのLODの末尾に 交差したクアッドのメッシュを追加 ○ 生成されたマテリアルを割り当てると利用可能に ○ /Game/Environment/Foliage/Materials/Impostors/ にマテリアルやテクスチャが出力される

32.

Project Titan プレハブの利用 ● アセットを直接レベルに置くことは非推奨なので代わりに ○ レベルインスタンス ○ パックドレベルブループリント ○ モデリングツール ○ LevelToPCG ● グレーボクシング > レベルインスタンス化 > レベルを編集 というワークフロー ● Main World Only フラグ ○ パーシスタントレベルとして編集されている時だけ 有効化されるアクター ○ 編集用ライトなどに

33.

Project Titan PCG (プロシージャルコンテンツジェネレーション) ● 様々なPCGの作例 ○ スプラインで囲ったエリアを埋めるような樹木 ○ スプラインで柵/石畳の道/該当等々 ● 非常に便利だが 簡単に許容される負荷を突破してしまうので注意

34.

最適化TIPS スケルタルメッシュ ● スケルタルメッシュをワールドに配置するとアニメーション の負荷が定常的に発生してしまうことがある ● BP_NPCTempMarkerというWPセルとしてロードされた後非 同期でアクターを生成して管理する仕組みを後半に導入した が、残念ながら広まらず

35.

最適化TIPS Nanite ● ローポリゴンワークフローに慣れてしまっていると非常に保 守的なアセットが出来てしまう可能性 ○ Naniteの精度はパッケージ時にコントロールできるの で恐れずにアセットを作成する ● 長すぎるポリゴンもあまり望ましいものではありませんが アーティファクトが出なければ致命的ではありません ○ Naniteビューモードなどをつかって要確認

36.

最適化TIPS ユニークテクスチャ ● ● ● 同じような領域が多数あるが、UVが自動展開されていてユ ニークな専用テクスチャが貼れらたモデル 大きなテクスチャ解像度を必要としがち 再利用性が無くストリーミングプールを圧迫 ==>ワールドの構築に利用される一般的なアセットであれば 汎用性を考慮するべき ● ユニークで象徴的なアセット(ヒーローアセット)などにリソー スを割くのは問題ない

37.

最適化TIPS トリムシート ● ● ● 一つのメッシュに必要なディテールを 計画的にテクスチャに割り当てて利用する リソース的に大きなメリット 再利用性がある Felyx's Guide to Trim Sheets https://www.artstation.com/blogs/jennifermcgarry/y d4Q/jenns-guide-to-trim-sheets2

38.

最適化TIPS タイリングテクスチャ ● Quixel @ Fab https://www.fab.com/sellers/Quixel?listing_types=m aterial 素材の質感を持ったタイリングテクスチャ ○ マテリアルレイヤー ■ モジュラー式で複数の素材をブレンドできる マテリアル レイヤーの使用 @ 公式ドキュメント https://dev.epicgames.com/documentation/ja-jp/unre al-engine/using-material-layers-in-unreal-engine

39.

最適化TIPS マテリアルセクション ● マテリアルセクション数はメッシュあたり3つ程度を上限に

40.

最適化TIPS PCG ● 素早くメッシュを大量に配置できるが 簡単にパフォーマンスを悪化させる可能性 ○ HLODに含むかどうか ■ 含める場合はフォールバックが 適切な頂点数になってることを確認 ○ 影 ○ マテリアルのWorldPositionOffset ○ コリジョン ○ カリング距離

41.

最適化TIPS VSM ● ● (バーチャルシャドウマップ) 樹木などを中心にWPOを使ったメッシュが大量にあり、 VSMの更新を頻繁に呼び出す ○ WorldPositionOffsetDisableDistanceを設定 ViewMode > VSM > Cached Pages で確認

42.

最適化TIPS ソースコントロール利用上の注意 ● 恐らく選択的にアセットをサブミットしたことによる参照のリ ンク切れが多発した ○ サンプル公開に向けたクリーンナップ作業で エラー修正がとても大変だった ● 必ずコンテンツ全体をサブミットする ○ マップチェック ○ CIでのパッケージ作成時のログなどを通知

43.

プロジェクト概要 本日の流れ Titanから得られる 知見と見どころ Moverの設計

44.

An Introduction to the Mover Plugin https://www.youtube.com/watch?v=P4IKS5k47Wg

45.

Character Movement Component (CMC) ● ACharacterを対象 Mover Plugin ● アクター制限無し 5.4 / 5.5 Experimental

46.

Character Movement Component (CMC) ● ● ACharacterを対象 CapsuleComponent操作対象 Mover Plugin ● ● 5.4 / 5.5 Experimental アクター制限無し コンポーネント制限無し

47.

Character Movement Component (CMC) ● ● ● ACharacterを対象 CapsuleComponent操作対象 モノシリックで拡張にはC++が必要 Mover Plugin ● ● ● 5.4 / 5.5 Experimental アクター制限無し コンポーネント制限無し モジュラー式で柔軟な拡張

48.

Character Movement Component (CMC) ● ● ● ● ACharacterを対象 CapsuleComponent操作対象 モノシリックで拡張にはC++が必要 スイープによる移動 Mover Plugin ● ● ● ● 5.4 / 5.5 Experimental アクター制限無し コンポーネント制限無し モジュラー式で柔軟な拡張 物理ベースの移動 + スイープ移動

49.

Character Movement Component (CMC) ● ● ● ● ● ACharacterを対象 CapsuleComponent操作対象 モノシリックで拡張にはC++が必要 スイープによる移動 組み込みのネットワーク同期 Mover Plugin ● ● ● ● ● 5.4 / 5.5 Experimental アクター制限無し コンポーネント制限無し モジュラー式で柔軟な拡張 物理ベースの移動 + スイープ移動 ロールバックネットワーキング対応

50.

Character Movement Component (CMC) ● ● ● ● ● ● ACharacterを対象 CapsuleComponent操作対象 モノシリックで拡張にはC++が必要 スイープによる移動 組み込みのネットワーク同期 「枯れた」実装 Mover Plugin ● ● ● ● ● ● 5.4 / 5.5 Experimental アクター制限無し コンポーネント制限無し モジュラー式で柔軟な拡張 物理ベースの移動 + スイープ移動 ロールバックネットワーキング対応 CMCユーザーフレンドリー

51.

Character Movement Component (CMC) ● ● ● ● ● ● ● ACharacterを対象 CapsuleComponent操作対象 モノシリックで拡張にはC++が必要 スイープによる移動 組み込みのネットワーク同期 「枯れた」実装 まだしばらくは現役 Mover Plugin ● ● ● ● ● ● ● 5.4 / 5.5 Experimental アクター制限無し コンポーネント制限無し モジュラー式で柔軟な拡張 物理ベースの移動 + スイープ移動 ロールバックネットワーキング対応 CMCユーザーフレンドリー 移行の初期段階

52.

Mover MoverComponent 処理のながれ MovementMode Actor ProduceInput OnGenerateMove OnSimulationTick FMoverInputCmdContext FCharacterDefaultInputs FProposedMove FSyncState

53.

Mover ProduceInput ● アクターにInputProducerインターフェイスを追加 ○ ブループリントでも実装可能 ● 入力やAIなどからのパラメータを取り出し コンテナに格納 ○ FCharacterDefaultInputs ○ 独自の入力データ ● 移動処理のタイミングで呼び出される ○ 処理タイミングはバックエンドクラス設定 によって変化 ○ ネットワークフィジックスバックエンドで はTickが時分割される可能性 ProduceInput UCLASS(abstract, notplaceable) class TITAN_API ATitanPawn : public APawn, public IAbilitySystemInterface, public IMoverInputProducerInterface, public ITitanRaftPilotInterface, public ITitanCameraOwnerInterface {

54.

Mover MovementMode ● 実際の移動処理を定義 ○ C++またはブループリントで実装 ● CMCのモードと同じ考え ○ モジュラー形式で追加

55.

Mover 標準 MovementMode ● 従来のCMCにあったモードのデフォルト実装は エンジンに組み込みで提供 されます ● さらに物理で動作するモードも標準で提供

56.

Mover MovementMode の実装 /** * Base class for all movement modes, exposing simulation update methods for both C++ and blueprint extension */ UCLASS(Abstract, Blueprintable, BlueprintType, EditInlineNew) class MOVER_API UBaseMovementMode : public UObject { GENERATED_UCLASS_BODY() …(略) ● ● メンバ関数 ○ OnGenerateMove ■ 移動情報の生成 ○ OnSimulationTick ■ 実際に移動する ■ 同期用パラメータ アクション用パラメータ ○ 例えば移動速度などのパラメータは ムーブメントモードにあっても良い protected: virtual void OnGenerateMove(const FMoverTickStartData& StartState, const FMoverTimeStep& TimeStep, FProposedMove& OutProposedMove) const; UFUNCTION(BlueprintImplementableEvent, DisplayName = "OnGenerateMove", meta = (ScriptName = "OnGenerateMove")) FProposedMove K2_OnGenerateMove(const FMoverTickStartData& StartState, const FMoverTimeStep& TimeStep) const; virtual void OnSimulationTick(const FSimulationTickParams& Params, FMoverTickEndData& OutputState); UFUNCTION(BlueprintImplementableEvent, DisplayName = "OnSimulationTick", meta = (ScriptName = "OnSimulationTick")) FMoverTickEndData K2_OnSimulationTick(const FSimulationTickParams& Params);

57.

Mover TitanMovementMode ● スタミナの制御・判定 ● GameplayAbilityと連携してアクションを実装 ○ グライダー ○ グラップリング ● 入力判定とパラメータの変更 ○ スプリント ● モード内でのアクション遷移判定/制御 ○ 歩き⇔スプリント ○ 落下⇔グライダー

58.

歩行 +スプリント グラップリング 落下 +グライダー セイリング 物理シミュレーションで動く鉄鍋に位置を同期している

59.

アクター コンポーネント/ ゲームプレイアビリティ コンポーネント/ アクター ゲームプレイアビリティ ゲームロジック ゲームロジック ゲームロジック ゲームロジック 移動モード ゲームロジック CMC Mover 移動モード ゲームロジック 移動モード ゲームロジック

60.

CMC Mover PhysWalkingMode ● ● CMCではキャラクターは物理界で動いていない ○ 物理界では無限の重さ を持つ 静的なオブジェクト ○ 剛体から押し返されることはない ■ プレイヤーは「重量」を感じにくい Mover - PhysWalkingMode ○ 物理界で移動するので剛体の重さや運動量が 考慮される ○ 重い剛体には押し負ける ○ 物理ベースの遊びが実現可能に Mover PhysWalking

61.

Mover MovementMode の切替方法 ● SetMovementModeのような直接設定は不可能に ● FCharacterDefaultInputs::SuggestedMovementMode ○ ProduceInputからの切り替えリクエスト ● FMoverTickEndData::MovementEndState.NextModeName ○ ムーブメントモードから次の更新時のモードを指定 ● MovementModeTransition ○ ムーブメントモード毎に追加可能な評価関数 ○ モジュラー式に追加できる

62.

Mover MovementModeTransition ● モード遷移判定クラス ○ 特定のモードから特定のモードへの遷移 ● 実装メンバ関数 ○ OnEvaluate 判定を行い遷移先を返す ○ OnTrigger モード遷移が発生した時に呼ばれる

63.

Mover MoverComponent 処理のながれ MovementMode Actor ProduceInput OnGenerateMove OnSimulationTick FMoverInputCmdContext FCharacterDefaultInputs FProposedMove FSyncState

64.

MovementMode OnGenerateMove MovementMode OnSimulationTick ● 入力から移動量を計算 する ● FProposedMoveを参照し移動する ● 参照するデータ ○ 入力データコンテナ ■ CharacterDefaultInput ○ SyncState ○ SimBlackBoard ■ データ保存領域 ● 参照データ ○ FProposedMove ○ 直前のフレームのSyncState ○ SimBlackBoard ○ (CharacterDefaultInput) ● 出力 ○ ● 出力 ○ FProposedMove ○ MoveCompoentを呼び出し、 コンポーネントを実際に動かす SyncState

65.

OnGenerateMove MovementMode OnGenerateMoveと OnSimulationTick ● ● 二つの関数はそれぞれ 「移動量の算出」と「移動量の適用」を担う ○ 移動量はLayerdMove によって加工されるこ とがある 移動量 LayeredMove 移動量 移動量 LayeredMove ○ 一定期間の移動速度のオーバライドやミックス ○ ルートモーション ○ ホーミングやドッジなど OnSimulationTick LayeredMove

66.

Mover RootMotion ● LayeredMoveによって実装 ○ Play Montage (Mover Actor) ● MotionWarping ● AnimGraphからの ルートモーションも今後対応予定 ○ FLayeredMove_RootMotionAttribute

67.

Mover MovementModifier ● 一時的なパラメータや動作の加工 ○ 速度の操作 ○ アクターのパラメータの制御 ● 利用例 ○ しゃがみ

68.

Mover SyncState ● 1Tick毎に生成されるアクターの完全な状態を再現する ための構造体 ○ OnSimulationTickの中で状態が保存される ● FMoverDefaultSyncState ○ 姿勢 Location+Rotation ○ 速度 Velocity ○ 入力 MoveDirectionIntent ○ MovementBaseの情報 ● サーバーからの通信に乗る USTRUCT(BlueprintType) struct MOVER_API FMoverSyncState { GENERATED_USTRUCT_BODY() public: // The mode we ended up in from the prior frame, // and which we'll start in during the next frame UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Category = Mover) FName MovementMode; // Additional moves influencing our proposed motion UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Category = Mover) FLayeredMoveGroup LayeredMoves; // Additional modifiers influencing our simulation UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Category = Mover) FMovementModifierGroup MovementModifiers; UPROPERTY(BlueprintReadWrite, Category = Mover) FMoverDataCollection SyncStateCollection; …

69.

Mover ネットワーク同期

70.

Mover ネットワーク同期 エラー検出は クライアント側 入力のみ! 入力に加えて クライアント上の 移動結果もサーバーに送信 入力に反応して 移動が即座に処理される クライアントと サーバーの移動結果を 比較してエラーを検出 入力はバッファリングされ 移動処理は その場ではトリガーされない

71.

Mover バックエンドクラス ● ネットワーク通信時の動作を定義するクラス ○ NetworkPhysicsLiaison ■ NetworkPhysicsComponentを利用した 再シミュレーションを含む高価な同期機構 ○ NetworkPredictionLiaison(Default) ■ サーバーからの同期情報にエラーがあった場合に ステートを受け入れて再度移動処理を行う ○ StandaloneLiaison ■ ネットワーク同期を使わない ● Tick処理のタイミングにも影響を与える事に注意

72.

Mover AnimationBP連携 ● PropertyAccessノード ○ Moverの様々なプロパティにアクセス ● Titanの拡張 : GetTagsFromSyncState ○ ゲームプレイタグを直接取得

73.

まとめ ● ProjectTitanは4000人を超える参加者の情熱が詰まったプロジェクト ○ サンプルとしてありのまま で公開 ● チュートリアルビデオやベースマテリアルなど弊社の運営チームが作成した様々なコンテンツ ○ ランドスケープデザイナー ● 将来的にキャラクタームーブメントを置き換えるMover の素晴らしい実装例 ○ ゲームプレイアビリティのサンプルとしても有用 ○ MoverはCMCと同じ感覚で利用できるように絶賛開発中 ○ 物理ベースのゲームデザインを実現

74.

ご清聴ありがとうございました! 2024 Epic Games Japan, Takashi Suzuki