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.

【Unite Tokyo 2019】【リリースが先か】えっ!Addressablesを新規プロジェクトに?【ver1が先か】

3,051 views

Published on

2019/9/25-6に開催されたUnite Tokyo 2019の講演スライドです。
中山 正法(株式会社サムザップ)

こんな人におすすめ
・Addressable Assets Systemを導入してみたい人
・プロジェクトの技術選定に悩んでいる人
・勇気が欲しい人

受講者が得られる知見
・Addressable Assets Systemの使用の一例
・開発プロジェクトに未完成のパッケージを入れると起きる事象


Unityのイベント資料はこちらから:
https://www.slideshare.net/UnityTechnologiesJapan/clipboards

Published in: Technology
  • ..............ACCESS that WEBSITE Over for All Ebooks ................ ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, Copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes ,Download or read Ebooks here ... ......................................................................................................................... Download FULL PDF EBOOK here { https://urlzs.com/UABbn }
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, Copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

【Unite Tokyo 2019】【リリースが先か】えっ!Addressablesを新規プロジェクトに?【ver1が先か】

  1. 1. 【リリースが先か】 えっ!Addressablesを新規プロジェクトに? 【Ver1が先か】 所属団体名 / 株式会社サムザップ 登壇者名 / 中山正法
  2. 2. プロフィール H2 — 中山 正法 — 株式会社サムザップ ネイティブエンジニア
  3. 3. アセット管理について 3 — 運用型のアプリにおいては生命線 — フルネイティブ時代が到来して気を使うことが多くなった — Unityではアセットバンドルが提供されている
  4. 4. 4 皆さん
  5. 5. 5 アセットバンドルは 好き?
  6. 6. Addressable Assets Systemについて 6 — AASの概要 — 導入の経緯 — 実際の組み込みについて – 各バージョン – いろいろ起きた問題について
  7. 7. AASの概要 7 — Unity純正のアセット管理システム — アセットバンドルをベースにしている — 依存関係などの挙動は大体同じ — ファイル拡張子は違う — マニフェストは存在しない — 代わりにカタログファイルが存在する
  8. 8. AASの使い方 8 — PackageManagerからインストールできる — Unity備え付けじゃないのでVer Upの影響を受けにくい — 大きな修正の場合はUnityのVer Upを要請されることがある — 主なUI構成はAddressablesのウィンドウとプロファイラ — コード無しでビルドできる
  9. 9. AASの使い方 9 — アセットを増やすときはD&D — グループごとに管理できる – ビルド先、ロード先の設定 – プロバイダの指定 – ビルドの単位 – ひとまとまりにするか – バラバラにするか
  10. 10. — ドラッグ後はアドレスがパスの名で記入される — simplifyを使って短くする — パスのままでビルドを行うとその分ディレクトリが掘られる — Windowsでパス長制限に引っかかる可能性あり AASの使い方 10
  11. 11. AASの使い方 11 — ラベル機能がある — ラベルはグループではなくアセット 単位で付与できる — ラベルはアドレスとほぼ同列の扱 いなので、ロードの際に利用できる
  12. 12. — ビルドはボタン一つ — addressables windowの右上のボタ ンからできる — 各グループで設定したパスに向かってビ ルドされる AASの使い方 12
  13. 13. — ビルドはボタン一つ — addressables windowの右上のボタ ンからできる — 各グループで設定したパスに向かってビ ルドされる AASの使い方 13
  14. 14. — ロードはAddressable.LoadAssetAsync<>() — 実際のロードはグループに設定されたプロバイダが行う — プロバイダは実際にロードを担当するクラス — ベースクラスを継承して自作することもできる — AsyncOperarionHandleは残しておいたほうがいい — 後述のメモリ解放で使う AASの使い方 14
  15. 15. — メモリ解放はAddressable.Release() — 引数に対象のオブジェクトを入れる — 参照カウントがデクリメントされて0になるとメモリ解放 — より確実なのはAsyncOperationHandleを入れてしまうこと AASの使い方 15
  16. 16. — 実行モードは3種類 — 実機準拠のPacked Play Mode — アセットの依存関係は計算するがPrefabを読み込むVirtual Mode — 完全にPrefabで駆動するFast Mode AASの使い方 16
  17. 17. — 実行モードは3種類 — 実機準拠のPacked Play Mode — アセットの依存関係は計算するがPrefabを読み込むVirtual Mode — 完全にPrefabで駆動するFast Mode AASの使い方 17
  18. 18. — Fast Mode — 開発者への福音 — アセットをビルドすることなく、その場で動作確認できる — 開発中は基本的にこのモード — FastMode用のカタログがLibrary下に作られる AASの使い方 18
  19. 19. — Virtual Mode — FastModeの状態を維持しつつプロファイラで詳細な確 認ができるモード — 恐ろしく重い — これも専用のカタログが作られる — あんまりつかってない AASの使い方 19
  20. 20. — Packed Play Mode — ビルドしたアセットを読み込む、実機準拠モード — 実機でトラブルが発生したときはこちらで調査を行う — カタログはビルドしたものを使う AASの使い方 20
  21. 21. — プロファイラ — FastModeでは使えない — アセットの参照カウントがわかる ようになる — これに映ってる間はメモリから除 去されない AASの使い方 21
  22. 22. — アセットバンドルのマネージャーについて悩んでいた — 自作するのはだるい — グループ会社から提供してもらう道もあった — いろいろ考えて却下 AAS導入の経緯 22
  23. 23. — 自分では作りたくないが、人から施しも受けたくない — AASの記事をみて導入を検討した AAS導入の経緯 23
  24. 24. — 納期が決まっている — 技術的な挑戦は控えている — 開発は終盤 プロジェクトの概要 24
  25. 25. — Spineを使った2D RPG — サウンドと動画はCRIを利用している — アドベンチャーパートにLive2Dを使用している — これらを一緒に扱って差分を検知する必要がある プロジェクトの概要 25
  26. 26. 最初期の検証 26 — Ver0.2系 — UI系のバグが多く正常に動作しない — 最低限アセットバンドル様に動作することだけ確認した
  27. 27. 最初期の検証 27 — Ver0.2系 — UI系のバグが多く正常に動作しない — 最低限アセットバンドル様に動作することだけ確認した — しかしながら上述のバグが深刻なため、移行を断念
  28. 28. 最初期の検証 28 — Ver0.2系 — UI系のバグが多く正常に動作しない — 最低限アセットバンドル様に動作することだけ確認した — しかしながら上述のバグが深刻なため、移行を断念 — しばらくアセットバンドルでの開発をすすめる
  29. 29. アセットバンドルでの開発中 29 — ほぼロードAPIをラップするだけに留める — 依存関係の解決をランタイムで行わない — アセット構造をエンジニアが熟知 — ロード順を厳格に決めて実装していた — この時点でアセットの粒度を決めていたので移行後のパフォーマ ンスの変化に敏感になれた
  30. 30. 時は流れて年始 30 — Ver 0.5系 — UI系のバグもだいぶマシになっていたので、アセット登録からビ ルドまで比較的スムーズに実行できた
  31. 31. 時は流れて年始 31 — Ver 0.5系 — UI系のバグもだいぶマシになっていたので、アセット登録からビ ルドまで比較的スムーズに実行できた — ただしAndroidとiOSの実機にて動作しなかった
  32. 32. 時は流れて年始 32 — Ver 0.5系 — UI系のバグもだいぶマシになっていたので、アセット登録からビ ルドまで比較的スムーズに実行できた — ただしAndroidとiOSの実機にて動作しなかった — 意図せずプロバイダーのコードが削除されてしまっていた — 起動時のAASイニシャライズに失敗し起動すらできない状態
  33. 33. 33 monoで試してみた
  34. 34. 34 かろうじて 起動に成功
  35. 35. 35 そして・・・
  36. 36. 36
  37. 37. 37 ビルトインシェーダー 全滅
  38. 38. 38 ver 0.5系での移行を 断念
  39. 39. さらに時は流れて 39 — Ver 0.6系 — IL2CPPでのストリップ問題は解決 — アセットバンドルからの移行を開始
  40. 40. さらに時は流れて 40 — Ver 0.6系 — IL2CPPでのストリップ問題は解決 — アセットバンドルからの移行を開始 — まずはStreaming Assetsから読み込みさせた — そのあとダウンロードの実装
  41. 41. ダウンロード 41 — リモートから直接ロードは行わない
  42. 42. ダウンロード 42 — リモートから直接ロードは行わない — カタログデータからバンドルファイル名を取得 — 接続先のサーバーからwebrequestを利用してDL
  43. 43. ダウンロード 43 — リモートから直接ロードは行わない — カタログデータからバンドルファイル名を取得 — 接続先のサーバーからwebrequestを利用してDL — Persistent Data pathへ書き込みを行う — グループのロードパスはこちらを向いてる
  44. 44. ダウンロード 44 — UnityWebrequestのダウンロードハンドラを利用してる
  45. 45. ダウンロード 45 — UnityWebrequestのダウンロードハンドラを利用してる — お手軽にDL時のメモリプレッシャーを抑えてくれる
  46. 46. ダウンロード 46 — UnityWebrequestのダウンロードハンドラを利用してる — お手軽にDL時のメモリプレッシャーを抑えてくれる — DL時のダウンロードサイズ表示もカタログから取得している
  47. 47. ダウンロード 47 — UnityWebrequestのダウンロードハンドラを利用してる — お手軽にDL時のメモリプレッシャーを抑えてくれる — DL時のダウンロードサイズ表示もカタログから取得している — 差分に関してはファイル名にハッシュがついているので、ストレー ジにないものはすべてDLしている
  48. 48. CRI系ファイルの取扱 48 — 音と映像に使用している
  49. 49. CRI系ファイルの取扱 49 — 音と映像に使用している — bytesファイルに書き換えてAASで扱っている — 他のアセット違ってDL後に中身をロードして、別のディレクトリに cpkファイルを書き込んでいる
  50. 50. CRI系ファイルの取扱 50 — 音と映像に使用している — bytesファイルに書き換えてAASで扱っている — 他のアセット違ってDL後に中身をロードして、別のディレクトリに cpkファイルを書き込んでいる — その際はラベルを使ってCRIかどうか区別している
  51. 51. CRI系ファイルの取扱 51 — 音と映像に使用している — bytesファイルに書き換えてAASで扱っている — 他のアセット違ってDL後に中身をロードして、別のディレクトリに cpkファイルを書き込んでいる — その際はラベルを使ってCRIかどうか区別している — ちなみにUnity標準のビデオアセットをAASで取り扱おうとした が、当時はエラーで実機からロードできなかった
  52. 52. 0.7系 52 — 使用感はほとんど変わっていない
  53. 53. 0.7系 53 — 使用感はほとんど変わっていない — ただしStreamingAssetsに格納されるファイルの取り扱いが変 わった
  54. 54. 0.7系 54 — 使用感はほとんど変わっていない — ただしStreamingAssetsに格納されるファイルの取り扱いが変 わった — Library下に配置されて、アセットビルドのときだけ更新され、ア プリビルドのときだけStreamingAssetsに転写される
  55. 55. 0.7系 55 — 使用感はほとんど変わっていない — ただしStreamingAssetsに格納されるファイルの取り扱いが変 わった — Library下に配置されて、アセットビルドのときだけ更新され、ア プリビルドのときだけStreamingAssetsに転写される — エディタだけで確認してると、Setting.jsonの変更が反映されな かったりしてハマる
  56. 56. 0.8系 56 — 使用感はほとんど変わっていない — 名前空間がすべて変更され、非同期処理にはAsyncがつけられ た
  57. 57. 1.1.3 57 — ねんがんのver 1!
  58. 58. 1.1.3 58 — ねんがんのver 1! — しかしまた実機で動かない!
  59. 59. 1.1.3 59 — ねんがんのver 1! — しかしまた実機で動かない! — 翌日に1.1.4が緊急リリースされてやっと動く — ありがとうunity_bill !
  60. 60. 1.1.5 60 — これをもってpreviewが取れる — 以降はバグfixを中心行われる
  61. 61. 1.1.7 61 — いろいろ修正されている(詳しくはリリースノートで)
  62. 62. 1.1.7 62 — いろいろ修正されている(詳しくはリリースノートで) — バンドルファイルの命名規則にハッシュなしなどが選べるように なった
  63. 63. 1.1.7 63 — いろいろ修正されている(詳しくはリリースノートで) — バンドルファイルの命名規則にハッシュなしなどが選べるように なった — これにより内蔵ファイルなど名前に差分をつけたくないものも扱 いやすくなった。
  64. 64. 内蔵したいアセットについて 64 — アップルの規約により、アプリ起動直後にDLを走らせるとリジェク トされる可能性がある
  65. 65. 内蔵したいアセットについて 65 — アップルの規約により、アプリ起動直後にDLを走らせるとリジェク トされる可能性がある — グループ設定でロードパスとビルドパスをStreaming Assetsに すると内蔵できる
  66. 66. 内蔵したいアセットについて 66 — アップルの規約により、アプリ起動直後にDLを走らせるとリジェク トされる可能性がある — グループ設定でロードパスとビルドパスをStreaming Assetsに すると内蔵できる — ファイルの命名規則を、nohashにしておかないと依存関係をミ スったときにアセットを読み込めなくなるので注意
  67. 67. 内蔵したいアセットについて 67 — spriteAtlas使用時にはより注意が必要 — spriteAtlasを構成しているソースファイルが、DLしたいアセット と内蔵したいアセットの双方に組み込まれていると、依存関係が 発生してしまう — エディターのselect dependencyからは確認ができないので、 ハマりやすい
  68. 68. エラーハンドルについて 68 — ファイルがないとか、アドレスが間違っているとかを検知してハ ンドリングしないといけない
  69. 69. エラーハンドルについて 69 — ファイルがないとか、アドレスが間違っているとかを検知してハ ンドリングしないといけない — AysncOperationHnadleがSuccess以外のステータスを返し てくれなかった(8月現在) — 1.1.9で修正されたので、Exceptionをキャッチできるようになっ た
  70. 70. エラーハンドルについて 70 — ファイルがないとか、アドレスが間違っているとかを検知してハ ンドリングしないといけない — AysncOperationHnadleがSuccess以外のステータスを返し てくれなかった(8月現在) — 1.1.9で修正されたので、Exceptionをキャッチできるようになっ た — 特別な実装をせずに、何らかのエラーを検知したら、トップに戻し ている
  71. 71. そのほか遭遇した不具合 71 — サブアセットが取れない。。。
  72. 72. そのほか遭遇した不具合 72 — サブアセットが取れない。。。 — マルチスプライトのようにサブアセットを保持しているアセットを 取り扱う場合、LoadAssetAsync<IList<Sprite>>を利用できる のだが、実際使ってみるとスレッドエラーを大量に吐き出してハン グアップしてしまう
  73. 73. そのほか遭遇した不具合 73 — サブアセットが取れない。。。 — マルチスプライトのようにサブアセットを保持しているアセットを 取り扱う場合、LoadAssetAsync<IList<Sprite>>を利用できる のだが、実際使ってみるとスレッドエラーを大量に吐き出してハン グアップしてしまう — Unity 2019.3で直っているらしい
  74. 74. そのほか遭遇した不具合 74 — ProjectからAddressable Assetsをアタッチすると。。。 — The file 'none' is corrupted!
  75. 75. そのほか遭遇した不具合 75 — ProjectからAddressable Assetsをアタッチすると。。。 — The file 'none' is corrupted! — アタッチする側とアタッチされる側双方がAddressable Assets だと起きてしまう — 2019.3で直っているらしい
  76. 76. そのほか遭遇した不具合 76 — 2018.3からの新機能nested prefab
  77. 77. そのほか遭遇した不具合 77 — 2018.3からの新機能nested prefab — 中でmissingが発生していると、アセットのビルド時にUnityがク ラッシュする
  78. 78. そのほか遭遇した不具合 78 — 2018.3からの新機能nested prefab — 中でmissingが発生していると、アセットのビルド時にUnityがク ラッシュする — 不慮のクラッシュに見舞われたときは、prefabの中を確認すべし
  79. 79. まとめ 79 — AASはおおよそアセットバンドルを使うのに必要な機能が、だい たい搭載されていて便利 — バグも非常に多いが1.1.9までにだいぶ修正されている — 根っこはアセットバンドルだが、互換性がないので運用中のプロ ジェクトから乗り換えるのは厳しい — 凝ったロードする場合はプロバイダーを自作すると、読み込む部 分のAPIを統一できるのでスッキリする
  80. 80. 80 Thank you!

×