Successfully reported this slideshow.

Unity での asset bundle による追加コンテンツの扱い方

49

Share

Loading in …3
×
1 of 33
1 of 33

More Related Content

Viewers also liked

Related Books

Free with a 14 day trial from Scribd

See all

Unity での asset bundle による追加コンテンツの扱い方

  1. 1. Unity での AssetBundle による 追加コンテンツの扱い方 株式会社 Aiming リードソフトウェアエンジニア 細田幸治 2012/10/28
  2. 2. こんにちは!
  3. 3. 細田幸治といいます。 http://www.facebook.com/kouji.hosoda 株式会社 Aiming でエンジニアをしています。
  4. 4. スマホで オンラインゲーム作ってます http://lordofknights.jp
  5. 5. 今日は Unity3D で スマホオンラインゲームの リソースを どう扱うかの話
  6. 6. Unity3D 使かっていますか? ( ・ ∇ ・ )ノ
  7. 7. Unity3D の特徴 ● モバイルに強い ○ iPhone, Android対応 ● 安い(ゲームエンジンとしては) ○ スタートアップのリスクが低い ● オープンな文化(開発元もユーザーも) ○ 情報や便利ライブラリが手に入りやすい ● C#でスクリプトが書ける ○ .Net便利 ● AssetBundle ○ 追加コンテンツが作りやすい
  8. 8. Unity3D いいね! スマートフォン マルチプラットフォーム対応で すばやくゲーム作るのに 適している
  9. 9. スマホでゲーム 作っていますか? ( ・ ∇ ・ )ノ
  10. 10. スマートフォンゲームの特徴 ● インストール時のサイズ制限(50MB) ○ サイズが大きいとwifiじゃないとインストールできなくなる ● 通信回線が細い ○ ダウンロード待ちが長いとゲームから離れてしまう ● 競合するアプリ(ゲームその他)がたくさんある ○ 続けてもらうために継続的なアップデートが必要 ● ストア等の審査がある ○ iPhoneの場合、リリースまでに10営業日前後かかる ○ 審査の間、埋め込みリソースは変更不可能
  11. 11. オンラインゲームの場合は ● サービス開始してからが本番 ○ ユーザーが継続して遊んでくれるようにするために、効 率的に開発・運用出来ることが必要 ○ 毎週イベントやキャンペーン、新アイテムが追加される ■ サービスするほどリソース が増える
  12. 12. つまり 審査スケジュールに依存しない で追加コンテンツのリリースが 出来ないと死ぬる
  13. 13. という訳で
  14. 14. Unity3D で スマホオンラインゲームの リソースを どう扱うとよいかというと
  15. 15. 初期サイズ小さく 追加はAssetBundleで ● wifi なくても遊べるようにしたいなら ○ 初期サイズ小さく(50MB以下) ● 追加コンテンツをいつでもリリースできるように ○ AssetBundleを適切に使う
  16. 16. 以降はAssetBundleの 話
  17. 17. ● 特徴・できること ● 実装注意点 ○ 1.メモリ消費 ○ 2.非同期読込 ○ 3.通信状況悪いと読み込めない ○ 4.iPhone、Android で別フォーマット ○ 5.キャッシュ ○ 6.スクリプトは消える ● Editor Tips ○ 1.素材取り込み時の自動コンバート ○ 2.自動書き出し ○ 3.プラットフォーム切り替え短縮
  18. 18. 特徴・できること ● Unity 専用の外部素材フォーマットのこと ● GameObject、Material、Texture、Prefab など Unity で使える Asset なら大体入る ● サーバーに配置、アプリから HTTP アクセスで 読み込む ● AssetBundle の作成は Unity Pro Only ● ストアの審査なしでリリース可能 ● ダウンロードファイルのキャッシュが効く
  19. 19. 実装上の注意点
  20. 20. 実装注意点 1.メモリ消費 ● AssetBundle のインスタンス分多くなる ○ 同時に使わないものはファイル分ける ○ 使わなくなったら解放しよう memory www Material,GameObject,etc. AssetBundle Load クラス Load
  21. 21. 実装注意点 2.非同期読込 ● 最初から非同期前提に組もう ○ WWW.LoadFromCacheOrDownload で読み込んでから WWW.assetBundle でアクセス ○ Resources.Load のように同期的には読み込めない ○ キャッシュから読み込む場合でも非同期だからね ● 参考 ○ ロードオブナイツで使った非同期デザイン ■ http://www.slideshare.net/ppcchan/async-design- with-unity3d
  22. 22. 実装注意点 3.通信状況が悪 いと読み込めない ● サイズ小さめに(500Kb以下が望ましい) ● 動的と静的で読込方法を使い分ける ○ 動的に扱う素材は個別に待ちを入れる ○ 静的に扱う素材はフェードアウト中に先読み
  23. 23. 実装注意点 4.iPhone、 Androidで別フォーマット ● テクスチャとか端末最適化されてるため ○ ファイルサイズとか画質も最適化されるのでトレードオフ ● サーバー側でファイルの配置工夫しよう ○ プラットフォームごとにディレクトリ構造を作ることで同名 ファイルを配置分け ■ /assets_root/iPhone/Card_001.asset ■ /assets_root/Android/Card_001.asset
  24. 24. 実装注意点 5.キャッシュ ● 自動キャッシュの仕組みがある ○ WWW.LoadFromCacheOrDownload ○ ファイルごとにバージョンを指定して使う ■ バージョンでダウンロードかキャッシュかを自動判別 ● サーバー側のキャッシュに注意 ○ ファイル名の後ろにクエリストリングでタイムスタンプなど をつけてサーバーキャッシュ無効化するべし ■ 例 http://www.foo.com/foo.asset?time=20121028
  25. 25. 実装注意点 6.スクリプトは消 える ● スクリプトは AssetBundle に入れられない ○ iPhone ではコードの動的生成 NG だから ● 読み込んだ後にプログラム側で追加は可能 ○ アプリ本体側に事前にスクリプトを入れておき、 GameObject.AddComponent で読み込んだ GameObjectに動的に追加する
  26. 26. Editor Tips
  27. 27. Editor Tips 1.素材取り込み 時の自動コンバート ● Editorスクリプトでカスタマイズ可能 ○ AssetPostprocessor ● 読み込むファイル名やフォルダ名でコンバート 形式を自動切り分けしたりすると便利
  28. 28. Editor Tips 2.自動書き出し ● Editorスクリプトでカスタマイズ可能 ○ BuildPipeline.BuildAssetBundle ● コマンド一発でサーバーに配置できるフォルダ 構造で書き出し出来るようにすると便利
  29. 29. Editor Tips 3.プラットフォー ム切り替え短縮 ● ビルドプラットフォーム切り替え時はテクスチャ の再圧縮で数時間かかることも ● AssetServer !! ○ AssetBundle の書き出し用PCに入れておくとビルドプラッ トフォームの切り替えが一瞬で終わる ○ AssetServer 1人分は必須
  30. 30. 以上
  31. 31. 可能なことを把握して 楽しく便利に開発しよう!
  32. 32. 質疑応答 ● なにかあれば!
  33. 33. おわり

×