#UE4Osaka
UE4のモバイル開発におけるコンテンツアップデートの話
- Chunk IDとの激闘編 -
Epic Games Japan 岡田和也
第3回UE4勉強会 in 大阪
#UE4Osaka
自己紹介
Epic games Japan サポートエンジニア
岡田 和也 ( おかず @pafuhana1213 )
#UE4Osaka
本日のお品書き
• 先日韓国で開催されたG-Star 2017の話
• モバイル開発におけるコンテンツアップデートの話
• Project Launcherの話
#UE4Osaka
G-Star2017って?
韓国最大のゲームショウ
• 韓国版TGS(東京ゲームショウ)のイメージ
• G-Star 2016
• 来場者数:211,398人(4日間)
• TGS 2017
• 来場者数:254,311人 (4日間)
#UE4Osaka
ICARUS M
リネージュ2 レボリューションと同じく
netmarbleが開発
PC向けのMMORPG
「ICARUS ONLINE」がベース
韓国版の事前登録受付中
#UE4Osaka
OVERHIT
昨年末に国内でリリースされた
「HIT」と同じ会社(NatGames)が開発
クオリティヤバイ!!!
日本展開決定!
(韓国版は2017/11/28に配信予定)
#UE4Osaka
この他にも沢山のUE4モバイルタイトルが…!
4GamerのG-Star 2017特集記事
http://www.4gamer.net/words/011/W01184/
Project EX Blade & Soul Revolution
#UE4Osaka
UE4 + モバイルの
今後に乞うご期待!
宣伝タイム終わり
#UE4Osaka
本日のお品書き
• 先日韓国で開催されたG-Star 2017の話
• モバイル開発におけるコンテンツアップデートの話
• Project Launcherの話
#UE4Osaka
今日話すこと
• キャラクタ・アイテム・マップなどの追加
今日話さないこと
• 不具合修正
• 各プラットフォームを介する大幅アップデート
#UE4Osaka
なぜコンテンツアップデートを取り上げるのか?
運営型ゲームにおいて
コンテンツアップデートに掛かるコストは重要だから!
アセット間の依存関係DLサイズによる負荷人 / 時間的コスト
#UE4Osaka
コンテンツアップデートを
• より早く
• より簡単に
• より安全に
行うための機能・フロー作りが重要!
#UE4Osaka
CEDEC2017( 8/31 ) とある講演にて
スライドへのリンク
#UE4Osaka
CEDEC2017( 8/31 ) とある講演にて
スライドへのリンク
#UE4Osaka
2017/11/25 現在
UE4公式ブログ
https://www.unrealengine.com/ja/blog
#UE4Osaka
まだ記事が
アップされてない!?
はあああああ!?
#UE4Osaka
ごめんなさい
#UE4Osaka
Battle Breakersと
モバイルチームに凸って
色々聞いてきました
(記事の公開は4.19の頃みたいです)
#UE4Osaka
色々変わっててヤバイ
#UE4Osaka
なので、今日は最新情報を共有
• UE4.19で入る機能についても触れます
今回の内容はPC, モバイルで利用可能です
• HTML5は未検証
• コンソールに関してはUDNでどうぞ
#UE4Osaka
紹介する機能
Chunk機能
• 各アセットを管理するID
Asset Manager
• アセットの事前読み込み(裏読み)
• Chunk単位でのロード
Asset Audit Window (UE4.19で改良)
• Chunkに含まれるアセットの確認
• Reference ViewerとSize Map
#UE4Osaka
Chunkの日本語訳
• 大きいかたまり
• 厚切れ
• かなりの量
• たんまり
• どっさり
• (ずんぐりして)がっちりした人
https://ejje.weblio.jp/content/chunk
#UE4Osaka
UE4におけるChunk
複数のアセットを管理するための単位
• Chunk ID (デフォルト:0)
システム
(ChunkID:0)
追加キャラクタ
(ChunkID:1)
追加レベル
(ChunkID:2)
#UE4Osaka
初回リソースダウンロードの場合
50MB Chunk ID = 0 800MB Chunk ID = 1
#UE4Osaka
追加キャラクタ
(ChunkID:1)
#UE4Osaka
追加キャラクタ
(ChunkID:1)
#UE4Osaka
追加キャラクタ
(ChunkID:1)
#UE4Osaka
キャラクタを一人追加するだけでも、
様々なアセット・データを用意する必要がある!
• Blueprint
• マテリアル
• テクスチャ
• ゲーム部分に関する各パラメータ
• などなど
#UE4Osaka
Chunk IDの設定方法 (UE4.16以前)
各アセット毎のChunk IDを手動で設定
• Editor設定の
”Allow ChunkID Assignments”を有効に
#UE4Osaka
#UE4Osaka
間違いなく
事故る!!!
#UE4Osaka
Chunk IDの設定方法 (UE4.17以降)
UE4.17で正式リリースされた
Asset Managerに含まれる、Chunk IDの設定機能を使用
UE4.17 リリースノート
公式ドキュメント:
アセット管理
公式ドキュメント:
クックとチャンキング
#UE4Osaka
できること
Assetクラス単位での一括設定
• フォルダパスで制限可能
フォルダ単位での一括設定
• サブフォルダにも反映可能)
コレクション単位での一括設定
Asset, BP単位での個別設定
参照アセットへの設定反映
などなど
#UE4Osaka
Asset Managerって?
アセットの非同期読み込み(裏読み)を
使用・管理するための機能
以前はC++でのみ提供していました(Streamable Manager)
公式ドキュメント:アセットの非同期ロード
#UE4Osaka
Asset Managerがないとき
STAGE 1 STAGE 2
ロード開始 ロード完了
#UE4Osaka
Asset Managerがあるとき!
STAGE 1 STAGE 2
裏読み開始 ロード開始…
あ、もうあるやん!裏読み終了
#UE4Osaka
非同期読み込みのメリット・デメリット
メリット
• ユーザの体感ロード時間を大幅削減!
• アセットを呼び出す際のカクつきを回避!
デメリット
• 非同期読み込みする為のアセット管理・処理が必要に
• メモリ管理に注意(特にPC以外)
#UE4Osaka
非同期読み込みを使用する前に
• サブレベル
• オブジェクトプール
の利用も検討すること!
https://www.slideshare.net/EpicGamesJapan/robo-recallvr
#UE4Osaka
Project設定 → Game → Asset Manager
#UE4Osaka
Primary Asset Types to Scan
Asset Managerの
管理対象アセットを定義
(プライマリーアセット)
• AssetのClassと
フォルダパスによる抽出
• Assetを直接指定
#UE4Osaka
Primary Asset Types to Scan
Asset Managerの
管理対象アセットを定義
(プライマリーアセット)
• AssetのClassと
フォルダパスによる抽出
• Assetを直接指定
定義に基づいて
裏読みするアセット候補が決定
#UE4Osaka
Rulesで設定可能な項目
• Priority
• Apply Recursively
• Chunk ID
• Cook Rule
#UE4Osaka
Rulesで設定可能な項目
• Priority
• 複数のRules適用対象に
なった場合の優先度
• Apply Recursively
• Chunk ID
• Cook Rule
#UE4Osaka
Rulesで設定可能な項目
• Priority
• Apply Recursively
• プライマリーアセットが
参照しているアセットにも
設定を適用するか
(セカンダリーアセット)
• Chunk ID
• Cook Rule
#UE4Osaka
Rulesで設定可能な項目
• Priority
• Apply Recursively
• Chunk ID
• -1の場合は何も設定しない
• Cook Rule
#UE4Osaka
Rulesで設定可能な項目
• Priority
• Apply Recursively
• Chunk ID
• Cook Rule
#UE4Osaka
Cook?
#UE4Osaka
UE4のビルドの流れ
Build Cook Stage Deploy Run
Package
各種アセットを
対象プラットフォーム用に
コンバート
#UE4Osaka
Cook対象範囲
一般的に、cook対象になるのは
指定したレベルとそのレベルが参照しているアセット
Cookしたいけどレベルに紐付けたくないケースがある
• フォルダ単位で強制cookする設定もあるけど…
#UE4Osaka
Cook Ruleを活用することで
より柔軟にCook対象範囲を制御可能!
Unknwn:
• 対象アセットを
参照している別アセットが
CookされるならCookする
Never Cook
• Cookしない
別アセットに参照されている場合は
エラー発生するので注意
Development Cook
• Development, Test時はCookする
Shipping時は Cookしない
(テスト・デバッグ用アセット向け)
Always Cook
• 常にCookする
#UE4Osaka
Development?
Test?
Shipping?
#UE4Osaka
ビルド設定
• Debug(ビルド版のみ)
• DebugGame
• Development
• Shipping
• Test(ビルド版のみ)
公式ドキュメント:
ビルドコンフィギュレーションの
リファレンズ
#UE4Osaka
ビルド設定の使い分け
Debug / DebugGame
• エンジン / ゲーム コードのデバッグ
Development
• 普段の開発(コードのデバッグも浅く可能)
Test
• CPUプロファイル
Shipping
• 配布・販売時
#UE4Osaka
Cook Ruleを活用することで
より柔軟にCook対象範囲を制御可能!
Unknwn:
• 対象アセットを
参照している別アセットが
CookされるならCookする
Never Cook
• Cookしない
別アセットに参照されている場合は
エラー発生するので注意
Development Cook
• Development, Test時はCookする
Shipping時は Cookしない
(テスト・デバッグ用アセット向け)
Always Cook
• 常にCookする
#UE4Osaka
Asset Managerの更にいいところ
Should Acquire Missing Chunks on Load
まだダウンロードしていないアセットを
Asset Managerでロードしようとした場合、
自動でダウンロード・インストールしてくれる!
#UE4Osaka
Asset Managerがないとき
#UE4Osaka
Asset Managerがないとき
公式ドキュメント:Mobile Patch Utility ノード
#UE4Osaka
補足:ManifestDir と CloudDir
ダウンロードする
Chunkのデータ
(Chunk ID ≠ 0) Chunkをダウンロードするには
ManifestとCloudフォルダのURLが必要
鯖
#UE4Osaka
この手法のデメリット
ヒューマンエラーが起きやすい環境
• 各Chunk毎のURLを管理する必要がある
• Chunkのデータを利用する度に
Asset Registryによるチェック処理を追加する必要がある
なにより面倒くさい!!!
#UE4Osaka
(5スライド前) Asset Managerの更にいいところ
Should Acquire Missing Chunks on Load
まだダウンロードしていないアセットを
Asset Managerでロードしようとした場合、
自動でダウンロード・インストールしてくれる!
#UE4Osaka
現在の実装状況(2017/11/25)
社内のモバイルタイトルで試験運用中
おそらく、4.19のタイミングで実装が整うはず…
申し訳ありませんが、4.19公開までは
Asset Registry + Mobile Patch Utilityノードを
ご使用ください
#UE4Osaka
現在のコードを見る限り、おそらくこんな形に
1. Asset ManagerのShould Acquire ~ を有効に
2. HttpChunkInstallerプラグインを有効に
3. DefaultEngine.iniに↓な感じのコードを追加
[StreamingInstall]
DefaultProviderName=HTTPChunkInstaller
[HTTPChunkInstall]
XXXXXX = XXXXX (HttpChunkのCloudDirを設定)
[HTTPOnlineTitleFile]
XXXXXX = XXXXX (HttpChunkのManifestDirを設定)
#UE4Osaka
ここまでのまとめ
• 複数のアセットをChunk IDで管理する
• Asset Managerを使うことで
非同期ロード・Chunk ID一括設定・Cook Ruleを利用可能
• ダウンロード・インストールも自動的に行ってくれる(4.19以降)
#UE4Osaka
Asset Managerに関するドキュメント・記事
公式ドキュメント
• アセット管理
• クックとチャンキング
解説記事
• UE4 アセットマネージメントフレームワークについて
• 【UE4】AssetManagerを使用したレベルストリームの高速化
#UE4Osaka
Asset Manager最高!!!
#UE4Osaka
だがしかし
#UE4Osaka
Asset ManagerによるCook ID管理の問題点
大雑把な指定しかできない
• Classとフォルダパスを指定するだけ
各設定の更新・管理しづらい
• 大量の項目を管理するには適してない
(Battle Breakersでは26個ほど)
複数人での作業ができない
• DefaultGame.ini に保存されるため
#UE4Osaka
#UE4Osaka
つらい
#UE4Osaka
Primary Asset Label
を使おう!
#UE4Osaka
Primary Asset Label
Primary Assetに関する設定を
Asset Managerの外で行う事が可能!
より柔軟にRules適用対象の
アセットを選択可能!
Primary Asset Labelはアセットなので
複数人作業・バージョン管理が可能!
#UE4Osaka
Primary Asset Labelの作り方
#UE4Osaka
Primary Asset Labelの各設定
Asset Managerと同じ
Rulesを適用する
アセットの条件を設定
#UE4Osaka
Primary Asset Labelの各設定
Label Assets in My Directory
• Labelが配置されているディレクトリと
そのサブディレクトリに含まれる
アセットに対して、Rulesを適用
#UE4Osaka
追加キャラクタ毎にフォルダ分けをしておけば
LabelによるChunk ID管理が簡単に!
#UE4Osaka
Primary Asset Labelの各設定
Is Runtime Label
• ラベルアセット自体がcookされ、
ランタイムで利用できるようにする
• これはラベルアセットの設定を適用する
各アセットには影響しません
• RulesのCook Ruleに従います
#UE4Osaka
Primary Asset Labelの各設定
Explicit Assets / Blueprints
• Asset / Blueprint単位でRulesを適用
Asset Collection
• コンテンツブラウザの
コレクション単位でRulesを適用
• 追加キャラクタをコレクションで
管理することで、Chunk ID設定をラクに
#UE4Osaka
Primary Asset Label 最高!!!
#UE4Osaka
だがしかし
#UE4Osaka
Primary Asset LabelによるChunk ID管理の問題点
LabelによるChunk IDを想定した
アセット・フォルダ・コレクション構成を構築する必要がある
• お手数ですが、よろしくお願いします…
Labelの数が大量に増えてしまう恐れがある
• Asset Managerによる大雑把な設定と併用することで解決
あるアセットに対して
どのChunk ID / Rulesが適用されるかが分かりづらい
• 1つのアセットに対して、複数のLabelが適用候補になる可能性
#UE4Osaka
UE4.19で改良された
Asset Audit(監視)機能の
出番!!!
#UE4Osaka
Asset Audit ウィンドウ
(UE4.19版)
#UE4Osaka
UE4.18以前
Asset Managerが管理している
プライマリー / セカンダリーアセットの一覧を表示
• 各アセットのChunk IDは確認可能
#UE4Osaka
UE4.19から
• Chunk ID単位で確認可能に
• 各Chunkの容量を一覧表示
• 各Chunkが持つアセットを
リファレンスビューワーと
サイズマップで確認可能!
#UE4Osaka
改良されたリファレンスビューワー
Chunk ID:0が管理しているアセット
#UE4Osaka
改良されたリファレンスビューワー
対象アセットを管理しているプライマリーアセット
#UE4Osaka
改良されたサイズマップ
Chunk ID:0が管理しているアセットのサイズを可視化
(メモリ使用量とはイコールではないので注意)
#UE4Osaka
プラットフォーム毎に確認する事も可能
ローカルでCookした場合、
Cook後のデータをプラットフォーム毎に確認可能
• Cook前後でアセットのサイズは変化するため
より正確なチェックが可能
• 「モバイルでは不要なアセットが入ってた!」
といった問題をチェックが可能
#UE4Osaka
Chunk間でアセットが重複していた場合
チャンク間の親子関係を定義することで
無駄なアセット重複を回避可能
• 子チャンクは親チャンクが持つアセットを含まない
DefaultEngine.iniにて
[/Script/UnrealEd.ChunkDependencyInfo]
+DependencyArray=(ChunkID=100,ParentChunkID=11)
+DependencyArray=(ChunkID=101,ParentChunkID=11)
#UE4Osaka
ここまでのまとめ
• Primary Asset Label と Asset Managerを
併用することで、より柔軟にChunk IDを設定可能
• 各アセットのChunk ID、Chunkが持つアセットは
Asset Auditウィンドウなどから確認可能
#UE4Osaka
コンテンツアップデートの流れ
1. 各アセットへのChunk IDを設定
• Asset Manager
• Primary Asset Label
2. Chunk用パッケージを作成し、サーバーに配置
• ???
3. Chunk用パッケージをダウンロード
• Asset Manager
#UE4Osaka
エディタ上でのパッケージング
FileメニューのPackage Project
• Project設定の
Packageカテゴリで各設定を行う
Project Launcher
• カスタムプロファイルで
各設定を行う
#UE4Osaka
Package Projectの場合
#UE4Osaka
Package Projectに関するドキュメント・記事
• 公式ドキュメント
• プロジェクトのパッケージ化
• 解説記事
• [UE4] 4.9におけるパッケージングまとめ ~小規模タイトル編~
#UE4Osaka
エディタ上でのパッケージング
FileメニューのPackage Project
• Project設定の
Packageカテゴリで各設定を行う
Project Launcher
• カスタムプロファイルで
各設定を行う
#UE4Osaka
Project Launcherって?
パッケージを作成・実機への転送をしてくれるツール
• 実行ファイル( .exeなど ), パッチ, DLC
• 様々なプラットフォームに対応
• 処理のプリセットを作成・編集可能
(プロファイル)
• Cook・Launch時に渡すコマンドを指定可能
• 公式ドキュメント:コマンドライン引数
• などなど
#UE4Osaka
いつ使うの?
通常のパッケージ作成・Launch機能よりも
細かい設定・調整をしたい場合
• Project 設定のPackaging設定では足りない
• リリース後に修正パッチを配布したい
• キャラクタを追加するためのDLCを作りたい
• コンソール開発時にゴニョゴニョしたい
• などなど
#UE4Osaka
これまで 「いい感じに」 してくれた部分を
手動で設定する必要も出てくるため注意!
#UE4Osaka
Project Launcherの開き方
#UE4Osaka
各プラットフォームへの
Launch用プロファイル
カスタムプロファイル
#UE4Osaka
#UE4Osaka
Config
Debug / DebugGame
• エンジン / ゲーム コードのデバッグ
Development
• 普段の開発(コードのデバッグも浅く可能)
Test
• CPUプロファイル
Shipping
• 配布・販売時
#UE4Osaka
Data Build
By the book
• 前もって必要なアセットを指定してCookしておく
On the fly
• アセットサーバをPC側に立てて、
実行アプリケーションから要求があった際に
Cookを行う手法
Do not cook
• アセットをcookしない
#UE4Osaka
おさらい: UE4のビルドの流れ
Build Cook Stage Deploy Run
Package
Project Launcherの構成から
#UE4Osaka
おさらい: UE4のビルドの流れ
Build Cook Stage Deploy Run
Package
実行ファイルの作成
#UE4Osaka
おさらい: UE4のビルドの流れ
Build Cook Stage Deploy Run
Package
各種アセットを
対象プラットフォーム用に
コンバート
#UE4Osaka
おさらい: UE4のビルドの流れ
Build Cook Stage Deploy Run
Package
実行ファイルやアセットを
ひとまとめにするために
別の場所にコピー
#UE4Osaka
おさらい: UE4のビルドの流れ
Build Cook Stage Deploy Run
Stageでまとめられた一式を
指定した実機に送る
#UE4Osaka
おさらい: UE4のビルドの流れ
Build Cook Stage Deploy Run
送ったファイルを
実機上で実行
#UE4Osaka
おさらい: UE4のビルドの流れ
Build Cook Stage Deploy Run
Package
Stageでまとめられた
実行ファイルやアセットを用いて
パッケージ作成
#UE4Osaka
Host
PC
1. アセットを先に転送
2. ゲーム起動
Cook by The Book の流れ
必要なデータを前もってPC上でCookし、
先にゲーム機に転送しておく
• ゲームはローカルのデータを見て動く。
0. 先に、アセットをCook
#UE4Osaka
Host
PC
Asset
Server
2. Asset Serverにアセットを依頼
3. Assetが
CookeされてなければCook
あれば、それを転送
4. 転送
1. ゲーム起動
0. Asset Sever
を立てておく
Cook On The Fly の流れ
PC側にアセットサーバを立てて、
ゲーム実行時に必要なアセットを逐次Cookする方法
#UE4Osaka
Cook On The Fly の注意点
毎起動時、アセットサーバからアセットを読み込んでくるので、
毎回、非常にロードが遅い。
• ロード時間の計測は不可能
• 大規模になればなるほど、ロード時間の大きさにより
イテレーションが回しにくくなる。
ロードするものが少ない軽いシーンでは有効。
#UE4Osaka
Data Build
By the book
• 前もって必要なアセットを指定してCookしておく
On the fly
• アセットサーバをPC側に立てて、
実行アプリケーションから要求があった際に
Cookを行う手法
Do not cook
• アセットをcookしない
#UE4Osaka
各プラットフォームへの
Launch用プロファイル
カスタムプロファイル
#UE4Osaka
#UE4Osaka
各設定・よく使うオプションについて
#UE4Osaka
プロファイル名(説明)・プロジェクト指定
ここでプロジェクトを指定しないと、
Cook対象のレベル一覧(後述)が表示されないので注意
• Any Project(任意のプロジェクト)のままでもOK
#UE4Osaka
ビルド設定
• チェックボックスでビルドON・OFFを切り替え
• Build UAT
• UAT = Unreal Automation Tool
#UE4Osaka
Cook – By the book
Cooked Platforms
• 対象のプラットフォームを選択(複数選択可)
Cooked Cultures
• 対象言語を選択
• 公式ドキュメント:ローカリゼーション
• Asset Localizationに関する記事
• ローカライゼーションダッシュボードに関する記事
Cooked Maps
• Cook対象のレベルを選択
• Cookされないレベルはゲーム中使えないので注意
#UE4Osaka
Cook – By the book (Release/DLC/Patching Settings)
Releaseパッケージ用の設定
• Create a release version~
• Releaseを作る際は必ず有効に
• DLC / Patchの場合は無効に
• Name of the release to create
• Releaseのバージョン名(数字以外もOK)
• DLC / Patchを作る際に必要になるので注意
#UE4Osaka
Cook – By the book (Release/DLC/Patching Settings)
DLC / Patchパッケージ用の設定
• Release version this~
• ベースとなるReleaseのバージョン名
• Generate patch
• Patchを作る際は有効に
• Build DLC
• DLCを作る際は有効に
#UE4Osaka
#UE4Osaka
Cook – By the book (Release/DLC/Patching Settings)
DLCパッケージ用の設定
• Name of the DLC to build
• DLCのバージョン名
• include engine content
• ベースとなるReleaseに含まれていない
エンジンコンテンツを含むか否か
• 無効の場合、DLC内のアセットが
エンジンコンテンツを使っているとエラー発生
#UE4Osaka
Cook – By the book (Advanced Settings)
Iterative cooking
• 変更があったアセットだけをcook対象に
• 2回目以降のcook時間を大幅短縮!
Compress content
• 圧縮の使用有無
• 基本的に推奨(コンソールは話が変わるので注意)
#UE4Osaka
Cook – By the book (Advanced Settings)
Store all content in a single file
• アセットを1つのPakにまとめる
• 無効にすると、パッケージに
どのアセットが含まれるかを確認可能
• Chunk機能を使う場合は必ず有効に
• Generate Chunks
• Chunk機能を使うか否か
#UE4Osaka
Cook – By the book (Advanced Settings)
Don’t include editor content ~
• エディタ上でしか使わないアセットを
パッケージに含めるかどうか
• パッケージサイズを大幅削減!
• もしあるアセットが
エディタコンテンツを参照していると
エラーが発生するので注意
#UE4Osaka
Cook – By the book (Advanced Settings)
Create Http Chunk Install data
• サーバからChunkをダウンロードする場合は
この設定を有効に
Http Chunk Install Data Path
• どのフォルダにダウンロード用の
Chunkデータを出力するか
Http Chunk Install Release Name
• Chunkのバージョン名
#UE4Osaka
Cook – By the book (Advanced Settings)
Cocker build configuration
• ビルド設定
Additional Cooker Options
• エディタ上では用意されていない
より細かな設定を追加
• 例:
-nodebuginfo : DebugFilesの生成をOFF
#UE4Osaka
Package / Archive
Package
• パッケージの出力先を設定
Archive
• バックアップ用
• Packageとほぼ同じ内容を
別フォルダに出力
#UE4Osaka
Deploy
生成したパッケージの転送先の指定
• Launchする場合は設定必須
• 複数の端末に同時に転送できる!
#UE4Osaka
Launch
Deployしたパッケージの起動設定
• 言語設定や
Command Line Parameterの設定
#UE4Osaka
For Jenkinsおじさん
Project Launcher実行時に出力される
Parsing command lineを参考に
コマンドからのパッケージングを
組むことをオススメします
#UE4Osaka
ここまでのまとめ
• Package Projectでお手軽にパッケージング可能
• Project Launcherを使うことで
より詳細な設定(プロファイル)を作成可能
#UE4Osaka
最後に
Chunk IDとその他のエディタ機能を使うことで
コンテンツアップデートがより簡単にできるようになりました!
モバイルだけでなくPCでも利用可能なので
是非活用して、ユーザに長く愛されるコンテンツを
作って頂けますと幸いです!
#UE4Osaka
ご清聴
ありがとうございました!
本講演に関する質問はこちらからどうぞ!
E-mail : kaz.okada@epicgames.com
Twitter : @pafuhana1213

UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -