SlideShare a Scribd company logo
Unity の
AssetBundle 運用事例
@Lord of Knights


                 株式会社 Aiming
           リードソフトウェアエンジニア
                     細田幸治
                   2012/06/01
こんばんは
こんばんは
細田幸治といいます。

http://www.facebook.com/kouji.hosoda

MMORPG のサーバーを書いたり、
通信ライブラリを書いたり、
ブラウザゲームを作ったりして、
現在はスマートフォンでオンラインゲームを作って
ます。
AssetBundle
つかっていますか?
   ( ・∇・)ノ
話すこと
1. AssetBundle の特徴
   ○ 概説
   ○ メリット
   ○ デメリット

2. Lord of Knights での実例紹介
   ○ 何のために使ったか?
   ○ どう実装したか?
   ○ 運用ワークフロー
結論を言うと
● アップデート時のコンテンツ追加に便利

● だけどいろいろ注意点がある

● ポイントをおさえて使おう
AssetBundle の特徴
概説
●   Unity 専用の外部素材フォーマットのこと
●   GameObject、Material、Prefab などが入る
●   サーバーなどに置いてアプリで読み込んで使う
●   AssetBundle の作成は Unity Pro Only
メリット
1.   アプリケーションサイズを小さくできる
2.   Apple 審査をしなくてもコンテンツを追加できる
3.   キャッシュが効く
4.   アプリ本体と AssetBundle とでワークフロー(プ
     ロジェクト)分けられる
デメリット
1. 他の素材方式よりもメモリを消費する
  ○   AssetBundle クラス自体がアセットを内包した状態でメモ
      リに乗る
  ○   上記 AssetBundle クラスから Material などを Load すると
      それもメモリに乗る

          memory

www
                                Material,GameObject,etc.
           AssetBundle
  Load        クラス        Load
デメリット
2. 非同期読み込みになるので“待ち”の実装が必
   要
 ○   Resources.Load のように同期的には読み込めない
 ○   待ち時間処理のためにコードが複雑になりがち
デメリット
3. 通信状態によっては読み込めない
 ○   通信できない環境だと Load できない
 ○   タイムアウトでも Load に失敗する
 ○   Load できなくてもなるべく遊べるような設計が望ましい
デメリット
4. プラットフォーム間で互換性がない
 ○   Android、iPhone、WebPlayer でそれぞれ別ファイル
     フォーマット
 ○   AssetBundle のビルド時にプラットフォームを指定して書
     き出す必要がある
 ○   ビルド時のプラットフォームの切り替えに時間がかかる
 ○   ちなみに Editor ではどのフォーマットでも読み込める
デメリット
5. バージョンを指定しても更新されない時がある
 ○   ブラウザやサーバーのキャッシュに乗るため、更新したく
     てもうまく反映されない場合がある
 ○   読み込む際にファイル名の後ろにタイムスタンプなどをつ
     けてキャッシュ無効化するべし
 ○   例:http://www.foo.com/foo.asset?time=201106011930
デメリット
6. スクリプトは AssetBundle に入れられない
   (iPhone ではコードの動的生成 NG だから)
7. Unity がバージョンアップすると読み込めなくな
   る(Unity3.5.1 から下位互換されたかも)
  ○   3.4系のときは別バージョンでビルドしたAssetBundleを読
      み込もうとすると、実機でキャッチできないエラー出して読
      み込めなかった。
Lord of Knights 実例
何のために使ったか?
何のために使ったか?
● 追加コンテンツ
  ○ カードイラスト
何のために使ったか?
● 追加コンテンツ
  ○ チュートリアルの説明用スライド
何のために使ったか?
● 追加コンテンツ
  ○ アドバイスポップアップ素材
何のために使ったか?
● アプリサイズ削減
  ○ BGM (後にアプリ本体に埋め込み)
  ○ 背景画像(後にアプリ本体に埋め込み)
  ○ カード枠(後にアプリ本体に埋め込み)
  ○ などなど容量が大きい素材たち

AppleStore の3G回線でのダウンロードサイズ制
限が 20 MB だったときに使用した
↓
現在は 50 MB まで OK になったので再埋め込み
どう実装したか?
どう実装したか?
● メモリ管理
  ○ 最初は1つの AssetBundle に複数素材を入れていたが、
     ばらばらに分けて読み込み時のメモリを削減
 ○   メモリが少ないデバイス(iPod touch など)の場合は使用
     メモリ量が 120 MB 以上になったらシーン切り替え時に
     AssetBundle をいったん Unload するようにした
どう実装したか?
● “待ち”の扱い
  ○ 動的に扱う素材はインジケーターでアピール




 ○ 静的に扱う素材はフェードアウト中に先読み
どう実装したか?
● キャッシュ
  ○ 開発当時は Unity のキャッシュがまだなかった、と思う
  ○ 独自キャッシュの仕組みを実装
    ■ WWW.LoadFromCacheOrDownload と同じ挙動
  ○ 最新バージョン番号をサーバーから教えてもらい、クライ
     アントでキャッシュしているバージョン番号と一致しなかっ
     たら再読み込みする
 ○   ファイル名の後ろにクエリストリングでタイムスタンプをつ
     けて予期せぬキャッシュを避ける
どう実装したか?
● バージョン、プラットフォーム、言語の切り分け
  ○ 同じファイル名でもプラットフォームごとに違うフォーマット
     のファイルが必要
 ○   バージョン、プラットフォーム、言語でディレクトリ構造を作
     ることで同名ファイルを配置分け
     ■ /version1_0/iPhone/ja/Card_001.asset
     ■ /version1_1/Android/en/Card_001.asset
 ○   クライアントから条件を指定してファイルパスをサーバー
     から教えてもらう
運用ワークフロー
運用ワークフロー
● アプリ本体とは別のプロジェクトで作成
  ○ アプリ本体の修正を気にせずに作業できる
● ファイルサイズはなるべく小さくパック
  ○ AssetBundle ファイル単位でメモリに読み込むため
  ○ 同時に使わない素材は別ファイルに分ける
  ○ メモリ使用量と読み込み速度を気にかける
運用ワークフロー
● 規約
  ○ シンプルなフォルダ構造にして企画やデザインの人が直
     接いじりやすいようにする
 ○   プロジェクト内のフォルダ構造、ファイル名から自動的に
     出力ファイルの名前や配置場所が決まるようにする
● 一発ビルドコマンド
  ○ Editor スクリプトで一括ビルドコマンドを実装
  ○ 書き出されたフォルダをそのままサーバーに配置すれば
     OK
まとめ
● アップデート時のコンテンツ追加に便利
  ○ Apple の審査を待たなくて良い
● いろいろ注意点がある
  ○ 予期せぬキャッシュに注意
  ○ 非同期プログラミングが必要
  ○ 読み込めないときの対応をきちんとする
● ポイントをおさえて使おう
  ○ プラットフォーム毎にアセットを切り替えられるように
  ○ アセット1個1個はメモリと速度を気にして小さめに
  ○ Editor スクリプトを活用してワークフローを簡単に
質疑応答
● なにかあれば!
おわり

More Related Content

PDF
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
UnityTechnologiesJapan002
 
PPTX
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
DeNA
 
PPTX
大規模ゲーム開発における build 高速化と安定化
DeNA
 
PDF
UniRx完全に理解した
torisoup
 
PDF
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
 
PDF
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
モノビット エンジン
 
PDF
Observableで非同期処理
torisoup
 
PPTX
DeNAの最新のマスタデータ管理システム Oyakata の全容
sairoutine
 
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
UnityTechnologiesJapan002
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
DeNA
 
大規模ゲーム開発における build 高速化と安定化
DeNA
 
UniRx完全に理解した
torisoup
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
 
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
モノビット エンジン
 
Observableで非同期処理
torisoup
 
DeNAの最新のマスタデータ管理システム Oyakata の全容
sairoutine
 

What's hot (20)

PDF
NextGen Server/Client Architecture - gRPC + Unity + C#
Yoshifumi Kawai
 
ODP
Unity ネイティブプラグインの作成について
Tatsuhiko Yamamura
 
PDF
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
 
PDF
はじめてのScriptable Build Pipeline
Unity Technologies Japan K.K.
 
PDF
PHPからgoへの移行で分かったこと
gree_tech
 
PDF
ゲームサーバ開発現場の考え方
Daisaku Mochizuki
 
PDF
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
UnityTechnologiesJapan002
 
PDF
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
 
PDF
UniTask入門
torisoup
 
PDF
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
 
PDF
【Unite Tokyo 2019】バンダイナムコスタジオ流Unityの使い方
UnityTechnologiesJapan002
 
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
 
PDF
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
Manabu Koga
 
PDF
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
Mikito Yoshiya
 
PDF
UnityのクラッシュをBacktraceでデバッグしよう!
Unity Technologies Japan K.K.
 
PPTX
ゲーム開発とMVC
Takashi Komada
 
PDF
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
 
PDF
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
モノビット エンジン
 
NextGen Server/Client Architecture - gRPC + Unity + C#
Yoshifumi Kawai
 
Unity ネイティブプラグインの作成について
Tatsuhiko Yamamura
 
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
 
はじめてのScriptable Build Pipeline
Unity Technologies Japan K.K.
 
PHPからgoへの移行で分かったこと
gree_tech
 
ゲームサーバ開発現場の考え方
Daisaku Mochizuki
 
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
UnityTechnologiesJapan002
 
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
 
UniTask入門
torisoup
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
 
【Unite Tokyo 2019】バンダイナムコスタジオ流Unityの使い方
UnityTechnologiesJapan002
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
 
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
Manabu Koga
 
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
Mikito Yoshiya
 
UnityのクラッシュをBacktraceでデバッグしよう!
Unity Technologies Japan K.K.
 
ゲーム開発とMVC
Takashi Komada
 
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
 
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
モノビット エンジン
 
Ad

Viewers also liked (8)

PPT
BRDF レンダリングの方程式
康弘 等々力
 
PPTX
Shadow gunのサンプルから学べるモバイル最適化
Katsutoshi Makino
 
PDF
Extending the Unity Editor Extended
Masamitsu Ishikawa
 
PDF
知って得するUnity エディタ拡張編
Shota Baba
 
PDF
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
まべ☆てっく運営
 
PDF
Unity での asset bundle による追加コンテンツの扱い方
Kouji Hosoda
 
PDF
Unity エディタ拡張
Shota Baba
 
PDF
AssetBundle (もどき) の作り方
Mori Tetsuya
 
BRDF レンダリングの方程式
康弘 等々力
 
Shadow gunのサンプルから学べるモバイル最適化
Katsutoshi Makino
 
Extending the Unity Editor Extended
Masamitsu Ishikawa
 
知って得するUnity エディタ拡張編
Shota Baba
 
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
まべ☆てっく運営
 
Unity での asset bundle による追加コンテンツの扱い方
Kouji Hosoda
 
Unity エディタ拡張
Shota Baba
 
AssetBundle (もどき) の作り方
Mori Tetsuya
 
Ad

Similar to Unityのasset bundle運用実例@lordofknights (20)

PPT
AssetBundle と TextureCompression のおはなし
Mori Tetsuya
 
PDF
ここが変わる!Unity 5のスマホ開発  ~アセットバンドル、ビルド、プラグイン~
MakotoItoh
 
PDF
Unity 5 の AssetBundle について (浅く) まとめてみた - 2015/05/22 第31回 Unity 勉強会
Mori Tetsuya
 
PDF
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Mori Tetsuya
 
PDF
(Unityよくわかってない人のための)なんとなくわかるかもしれないAssetBundle
Yusuke HIDESHIMA
 
PPTX
Unity * スマートフォン開発で学んだこと
Katsutoshi Makino
 
PDF
Unity に於ける Android ビルド自動化のおはなし - 20141215 第27回 Unity 勉強会
Mori Tetsuya
 
PDF
20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」
Mori Tetsuya
 
PPTX
Deep-Dive into Scriptable Build Pipeline
Haruto Otake
 
PDF
Unity恐くないよ!!
nakamura001
 
PDF
20121123 アド部定例会 unityアプリに広告を入れる方法
Yasuyuki Kamata
 
PDF
Unity名古屋セミナー [Asset Store]
MakotoItoh
 
PDF
Unity×HTMLで作るiPhone オンラインゲーム開発事例
Kouji Hosoda
 
PDF
Go_to_UnityAssetStore_Publisher_2016edition
Takashi Jona
 
PDF
Let’s study unity
Takuya Arakawa
 
PPTX
アプリ開発・運用で楽をするために知っておくべき Unity Services
Yasuyuki Kamata
 
PDF
自分の作品が世界中のゲーム開発者に使われる日
Takashi Jona
 
PDF
20130330 nagoya unityアプリに広告を入れる方法 公開用
Yasuyuki Kamata
 
PPTX
メガ Unity ユーザーミートアップ 2012
cfm_art
 
PDF
Asset bundleなどの、Unity3d基礎知識
Nobukazu Hanada
 
AssetBundle と TextureCompression のおはなし
Mori Tetsuya
 
ここが変わる!Unity 5のスマホ開発  ~アセットバンドル、ビルド、プラグイン~
MakotoItoh
 
Unity 5 の AssetBundle について (浅く) まとめてみた - 2015/05/22 第31回 Unity 勉強会
Mori Tetsuya
 
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Mori Tetsuya
 
(Unityよくわかってない人のための)なんとなくわかるかもしれないAssetBundle
Yusuke HIDESHIMA
 
Unity * スマートフォン開発で学んだこと
Katsutoshi Makino
 
Unity に於ける Android ビルド自動化のおはなし - 20141215 第27回 Unity 勉強会
Mori Tetsuya
 
20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」
Mori Tetsuya
 
Deep-Dive into Scriptable Build Pipeline
Haruto Otake
 
Unity恐くないよ!!
nakamura001
 
20121123 アド部定例会 unityアプリに広告を入れる方法
Yasuyuki Kamata
 
Unity名古屋セミナー [Asset Store]
MakotoItoh
 
Unity×HTMLで作るiPhone オンラインゲーム開発事例
Kouji Hosoda
 
Go_to_UnityAssetStore_Publisher_2016edition
Takashi Jona
 
Let’s study unity
Takuya Arakawa
 
アプリ開発・運用で楽をするために知っておくべき Unity Services
Yasuyuki Kamata
 
自分の作品が世界中のゲーム開発者に使われる日
Takashi Jona
 
20130330 nagoya unityアプリに広告を入れる方法 公開用
Yasuyuki Kamata
 
メガ Unity ユーザーミートアップ 2012
cfm_art
 
Asset bundleなどの、Unity3d基礎知識
Nobukazu Hanada
 

Recently uploaded (6)

PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 

Unityのasset bundle運用実例@lordofknights