Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
AssetBundle と
TextureCompression のおはな
し
〜 Mobile Platform に於けるリソース管理〜
株式会社キッズスター
森 哲哉
こんばんは!
• Unity 、使ってますか!?
• Unity 、楽しいですね!
• 今日は AssetBundle と Texture
ついて語りに来ました!!

圧縮に
と、その前に…。
Who am I ?
• “ 森 哲哉” と申します。
• a.k.a. もんりぃ / T: @monry / F: 本名
• 29 歳 / ♂ / O 型 / 天秤座 / 既婚 / 趣
味 : 合唱

• 趣味は「お酒」と「合唱」です。
Who am I ?
•

“ 株式会社キッズスター” って会社で働いてます
。

•

未就学児〜小学生のお子さまをお持ちのファ
ミリーをターゲットにした知育 / 教育に関わる
アプリ・サービスを展開しております。

こえほん

森のえほん館...
レジュメ
• AssetBundle について
• TextureCompression について
前提
•
•
•
•
•

大前提として、 2D のお話しです!

•

もっと言うと NGUI に限定してます

iOS / Android なモバイル環境
Unity 4.x (Pro) / NGUI 2.6.x

•

Pro 版じゃない...
AssetBundle の概要
•

そもそも AssetBundle って…?

•
•

Asset を Bundle したモノ

•
•

よくある初回ダウンロードとか

素材を纏めて一つのファイルとして扱うた
めの技術
ソシャゲのカード...
AssetBundle の概要
• こんなの。

( 宣伝じゃないですよ?w )
AssetBundle の長所
• Unity が解釈出来るモノなら詰め放題
• ただし、 iOS は JIT 実行不可
• WWW クラスを経由して取得
• キャッシュとかよしなにやってくれる
• バージョニングにも対応
AssetBundle の短所
•
•
•

基本的にサーバ必要

•

Content-Type: application/vnd.unity を要返却

ファイル名ユニーク

•
•

basename で判定される
ディレクトリ掘って管理...
AssetBundle の運用
• じゃあ、その辺踏まえて、どうやるの?
ってなお話しを。

• ここから先は、弊社での事例をベースに
進めます。

• 一つでも参考になるモノがあれば幸いで
す。
AssetBundle の環境
• 初回リソースダウンロード
Amazon
Amazon
S3
S3

Amazon
Amazon
CloudFront
CloudFront

• 2 回目以降は
Amazon
Amazon
S3
S3

Ap...
AssetBundle の環境
•
•

チーム開発するなら git で管理

•
•

バイナリだから微妙っちゃ微妙
Asset Server ( 要 Team License) もアリか

Editor Script 必須

•
•

ググ...
AssetBundle の環境
• iOS / Android

の両方に対応させる場合、
Team License 買っとけ!

• BuildPipeline.BuildAssetBundle()

の際に
Import Asset が走る...
AssetBundle の設計
•

粒度 ( 弊社の場合 )

•
•
•

Atlas / Texture / AudioClip を個別にビルド
1 画面 (≠ シーン ) 内に最大 10 個を目安
初回 DL 時のキャッシュに結構依存
...
AssetBundle の設計
•

更新頻度 ( 弊社の場合 )

•

原則的に iOS の申請スケジュールが基
準

•

そもそも更新頻度が高いモノは API と
か経由した方が管理が楽

•

BASE64 なテキストを食わせるとか
AssetBundle の設計
•

初回 DL するネタ一覧 ( 弊社の場合 )

•
•
•

敢えてアプリ内 (Assets/Resources/) に .txt (TSV
な TextAsset) を保持

•

ファイル名 <TAB>...
AssetBundle の設計
• ファイル名
•

( 弊社の場合 )

プラットフォーム名 / 種別 @ シーン名 @ 画面名 @ ファイル
名 .unity3d

• プラットフォーム名は
Editor など

iOS, Android,...
AssetBundle の構築
• Editor Script

でがんばる。
Supporting Files/
 種別 /
  シーン名 /
   画面名 /
    ファイル名
この構造決め打ちでディレクトリ内の
ファイルを走査
AssetBundle の配信
• S3 を Origin とした CloudFront
• “ バージョン番号 / プラットフォーム /”
なディレクトリ以下に配置

• Editor Script

で書き出したディレクトリ
を丸っと PU...
注意点
•
•
•

適切な差分ビルドを行わないとダメ

•

何か良い案無いっすか?w

WWW はタイムアウトの実装が無いので、自前で
組む必要あり
CloudFront 使う場合、開発中は Origin から直接
DL した方が良い

•...
Texture Compression
• テクスチャの圧縮
• Inspector の Format

に
色々出てくるけど、要す
るにどういうコト…?
Texture Compression
•
•

デバイス毎に、展開出来るフォーマットと出来
ないフォーマットがある

•

GPU に依存

展開出来なかった場合は、無圧縮のテクスチャ
を一気にメモリに載せるっぽい

•

全画面テクスチャと...
Texture Compression
• で、最適なのは?
• iOS は PowerVR (PVR)
OK

にしとけば

• RGBA Compressed PVRTC 4 bits
がオススメ

• こだわるなら

Texture 別に...
そう、 iPhone ならね
。
Texture Compression
• で、 Android は?
• …。
• ……… 。
• 最適解はありません!

orz
Texture Compression
• と、言いたいところですが、 7 割以上

が Adreno に対応しているようなので
、 ATC が良いんじゃないかと。

出展 : NTT レゾナントさまの Remote TestKit 端末一覧
...
Texture Compression
• 非対応端末は…?
• ぶっちゃけ切り捨てる方が精神衛生上
よろしいのでは?

• 少なくとも「読めない」というコトは

無い ( っぽい ) ので、サイズ次第では
何とかなるかも。
Texture Compression
• WebPlayer / Standalone / etc… は?
• まだ作ったこと無いので分かりませ
ん! ( キリッ

• 寧ろ情報交換しましょう!
まとめ
•
•

AssetBundle

•
•

Editor Script が肝要
ちゃんと運用見据えて設計すべし

Texture Compression

•
•

Android のサポート次第
ドラスティックな判断も必要かも
Any Questions?
Thank you for your
attention!!!
Upcoming SlideShare
Loading in …5
×

AssetBundle と TextureCompression のおはなし

19,509 views

Published on

第18回 Unity 勉強会 にて発表しました。

Published in: Technology
  • Be the first to comment

AssetBundle と TextureCompression のおはなし

  1. 1. AssetBundle と TextureCompression のおはな し 〜 Mobile Platform に於けるリソース管理〜 株式会社キッズスター 森 哲哉
  2. 2. こんばんは! • Unity 、使ってますか!? • Unity 、楽しいですね! • 今日は AssetBundle と Texture ついて語りに来ました!! 圧縮に
  3. 3. と、その前に…。
  4. 4. Who am I ? • “ 森 哲哉” と申します。 • a.k.a. もんりぃ / T: @monry / F: 本名 • 29 歳 / ♂ / O 型 / 天秤座 / 既婚 / 趣 味 : 合唱 • 趣味は「お酒」と「合唱」です。
  5. 5. Who am I ? • “ 株式会社キッズスター” って会社で働いてます 。 • 未就学児〜小学生のお子さまをお持ちのファ ミリーをターゲットにした知育 / 教育に関わる アプリ・サービスを展開しております。 こえほん 森のえほん館 なりきり !! ごっこランド パズル & テイルズ
  6. 6. レジュメ • AssetBundle について • TextureCompression について
  7. 7. 前提 • • • • • 大前提として、 2D のお話しです! • もっと言うと NGUI に限定してます iOS / Android なモバイル環境 Unity 4.x (Pro) / NGUI 2.6.x • Pro 版じゃないと AssetBundle を Build できない AssetBundle の話が 8 割です :-P 間違ったこと言うかも知れませんが、ツッコミ大歓迎です!!
  8. 8. AssetBundle の概要 • そもそも AssetBundle って…? • • Asset を Bundle したモノ • • よくある初回ダウンロードとか 素材を纏めて一つのファイルとして扱うた めの技術 ソシャゲのカードの画像とか
  9. 9. AssetBundle の概要 • こんなの。 ( 宣伝じゃないですよ?w )
  10. 10. AssetBundle の長所 • Unity が解釈出来るモノなら詰め放題 • ただし、 iOS は JIT 実行不可 • WWW クラスを経由して取得 • キャッシュとかよしなにやってくれる • バージョニングにも対応
  11. 11. AssetBundle の短所 • • • 基本的にサーバ必要 • Content-Type: application/vnd.unity を要返却 ファイル名ユニーク • • basename で判定される ディレクトリ掘って管理とか㍉ プラットフォーム毎に別ファイル
  12. 12. AssetBundle の運用 • じゃあ、その辺踏まえて、どうやるの? ってなお話しを。 • ここから先は、弊社での事例をベースに 進めます。 • 一つでも参考になるモノがあれば幸いで す。
  13. 13. AssetBundle の環境 • 初回リソースダウンロード Amazon Amazon S3 S3 Amazon Amazon CloudFront CloudFront • 2 回目以降は Amazon Amazon S3 S3 App App (Cache) (Cache) App App (Memory) (Memory) Cache 任せ Amazon Amazon CloudFront CloudFront App App (Cache) (Cache) App App (Memory) (Memory)
  14. 14. AssetBundle の環境 • • チーム開発するなら git で管理 • • バイナリだから微妙っちゃ微妙 Asset Server ( 要 Team License) もアリか Editor Script 必須 • • ググればいっぱい転がってます この勉強会の過去のセッションにも
  15. 15. AssetBundle の環境 • iOS / Android の両方に対応させる場合、 Team License 買っとけ! • BuildPipeline.BuildAssetBundle() の際に Import Asset が走るため、リソース数 が多いとめっちゃ待つ。 • ので、 Cache Server 必須。
  16. 16. AssetBundle の設計 • 粒度 ( 弊社の場合 ) • • • Atlas / Texture / AudioClip を個別にビルド 1 画面 (≠ シーン ) 内に最大 10 個を目安 初回 DL 時のキャッシュに結構依存 • どうにかしたいんだけどね…。
  17. 17. AssetBundle の設計 • 更新頻度 ( 弊社の場合 ) • 原則的に iOS の申請スケジュールが基 準 • そもそも更新頻度が高いモノは API と か経由した方が管理が楽 • BASE64 なテキストを食わせるとか
  18. 18. AssetBundle の設計 • 初回 DL するネタ一覧 ( 弊社の場合 ) • • • 敢えてアプリ内 (Assets/Resources/) に .txt (TSV な TextAsset) を保持 • ファイル名 <TAB> バージョン <LF> 毎回起動時にこのリストをチェック WWW.LoadFromCacheOrDownload に任せて Cache が有するバージョンと異なるなら DL
  19. 19. AssetBundle の設計 • ファイル名 • ( 弊社の場合 ) プラットフォーム名 / 種別 @ シーン名 @ 画面名 @ ファイル 名 .unity3d • プラットフォーム名は Editor など iOS, Android, • 種別は Atlas, AudioClip, Texture など
  20. 20. AssetBundle の構築 • Editor Script でがんばる。 Supporting Files/  種別 /   シーン名 /    画面名 /     ファイル名 この構造決め打ちでディレクトリ内の ファイルを走査
  21. 21. AssetBundle の配信 • S3 を Origin とした CloudFront • “ バージョン番号 / プラットフォーム /” なディレクトリ以下に配置 • Editor Script で書き出したディレクトリ を丸っと PUT 出来ると楽ちん
  22. 22. 注意点 • • • 適切な差分ビルドを行わないとダメ • 何か良い案無いっすか?w WWW はタイムアウトの実装が無いので、自前で 組む必要あり CloudFront 使う場合、開発中は Origin から直接 DL した方が良い • CF 側の Cache Invalidation とか大変だし。
  23. 23. Texture Compression • テクスチャの圧縮 • Inspector の Format に 色々出てくるけど、要す るにどういうコト…?
  24. 24. Texture Compression • • デバイス毎に、展開出来るフォーマットと出来 ないフォーマットがある • GPU に依存 展開出来なかった場合は、無圧縮のテクスチャ を一気にメモリに載せるっぽい • 全画面テクスチャとか描画に 1sec 掛かるコト も。
  25. 25. Texture Compression • で、最適なのは? • iOS は PowerVR (PVR) OK にしとけば • RGBA Compressed PVRTC 4 bits がオススメ • こだわるなら Texture 別に実機で見 つつ適切に選んでね
  26. 26. そう、 iPhone ならね 。
  27. 27. Texture Compression • で、 Android は? • …。 • ……… 。 • 最適解はありません! orz
  28. 28. Texture Compression • と、言いたいところですが、 7 割以上 が Adreno に対応しているようなので 、 ATC が良いんじゃないかと。 出展 : NTT レゾナントさまの Remote TestKit 端末一覧 http://appkitbox.com/testkit/smartphone
  29. 29. Texture Compression • 非対応端末は…? • ぶっちゃけ切り捨てる方が精神衛生上 よろしいのでは? • 少なくとも「読めない」というコトは 無い ( っぽい ) ので、サイズ次第では 何とかなるかも。
  30. 30. Texture Compression • WebPlayer / Standalone / etc… は? • まだ作ったこと無いので分かりませ ん! ( キリッ • 寧ろ情報交換しましょう!
  31. 31. まとめ • • AssetBundle • • Editor Script が肝要 ちゃんと運用見据えて設計すべし Texture Compression • • Android のサポート次第 ドラスティックな判断も必要かも
  32. 32. Any Questions?
  33. 33. Thank you for your attention!!!

×