RaspberlyのブログRaspberlyのブログスマートフォン用の表示で見るRaspberlyのブログUnityネタをメインとした技術系ブログです。にゃんこ大戦争や日常なども。勉強会/イベント-Unity完全に理解したシリーズ勉強会のレポート(メモ)です。#AssetBundle完全に理解した動画はこちらから視聴できます。全てミクシィさんです。お前はまだ本当のAssetBundleを知らないwww.dropbox.comASについては話しません。いろいろなパーンを紹介します、しかし時間が足りないため資料の方を見てください。今日はAB以外についても知ってもらいます。ABを扱うということは、アプリを運用するということです。運用を完全に理解しましょう。更新可能要素について実はABだけではない、Assetを更新する方法はいろいろあります。この更新できるものをUpdatableと呼びます。USAUnityがシリアライズしたAssetのこと。USAをアプリ外から入れるのはABのみ。BytesByteから生成するAsset。Codeコードから生成するAsset。USAを使うならAssetBundle理想の運用と現実Updatableを使ってAppを運用するわけですが、ガッツポーズしたらユーザのリソースをアップデートしてほしい。現実はそうはいかない。いう運用があるのか歴史にまとめてみた。任意アップデート期ユーザが特定の画面でアップデート常時アップデートリソース全体を取得するのではなく、使用時に使う分だけアップデート。Updatableごと要素と運用の突き合わせ3つのUpdatableと4つの運用の組み合わせに制限はない。AB使わなくても更新はできる。Unityの場合、アップデートにはABが真っ先に候補でてくるが、ABは敷居が高い。これはABが悪いのではない、運用をするための解としてABがあるだけ。考えるべきはUpdatableと運用の理想的な組み合わせを考えること。いうとABは必須ではない。最高の来世ストリーミングゲームの登場。運用に対しては特に変わりはない。変わることは、サーバとの距離がなくなるので、データダウンロードでは無く。DeckこれからAB完全に理解したい人、運用方法に悩む人向けの内容。技術書店に当選しました。け54ABとはなにかAssetをBundleしたもの。Unity上でランタイムで動的読み込みすること。いわゆるダウンロードコンテンツ。Unity3.5から使えたもの、5で大幅改善された。メリットビルドされたアプリサイズを削減できる。playは100MBまでしかアップロードできないが、これに対応できる。ビルドすることなくAssetを更新できる。ABをとりまく構成要素この辺の技術を組み込むことで構築できますAssetBundle圧縮されたバイナリファイル、圧縮アルゴリズムで固めたものそのもの。Assetの情報がちょっとでも書き換わるとこのHashも変わる。中身は単なるAssetBundle、名前が違う。特殊な点としてLoadされた時点でSceneManagerからアクセスできるようになる。依存するAssetBundleがある場合は予めLoadしておく必要がある。NameABの名前インスペクタで設定。AssetBunleBuildで設定できる。この名前はビルド時にパスとして利用される。拡張子として.unity3dが使われる?他とぶつからないようなものがいい。AssetBundleVariantSD/HD、画質の切り替え、ローカライゼーション用。Addressableがサポートしていないので非推奨。Manifest目録、ビルドする時に作られる。各ABのハッシュ値、依存関係が含まれる、がファイルサイズは持たれない。ハッシュ値や依存関係を問い合わせる時は、AssetBundleNameを使って問い合わせます。ビルドすると.manifestというファイルが作られる。これはサーバとかにアップするものではない。UnityWbRequestAssetBundleABをインターネットから取得する。ローカルからも取得できる。Webから取得するならこれを推薦。AssetBundleCreateRequestABをロードする時に使うAsyncOperation。UnityWebRequestを使うときは登場しない。AssetBundleReauestさっきはABそのままだったが、ロードされたABからAssetを取り出す時に使うもの。CachingWebRequest経由で取得したものをキャッシュしてくれる。BuildPipelne.BuildAssetBundlesABを使う上で必須、ABやManifestを構築するのに使う。この辺を抑えておけば完全に理解したといっても過言ではないAssetBndleDependencyAB内のAssetもまた、ABである状態を依存と呼ぶ。この依存情報はManifestに記録される。依存するABを事前に呼んでおかないと、依存元を読んだ時にMissingになる。適切に設定しないとABコピー問題がおきる。運用事例についてごっこランド。詳しい構築は調べればでるので調べてください。ビルドサーバJenkinsおじさんが頑張っているまとめABの回りの概念を理解することでABの運用は怖くないということがわかると思います。ビルドサーバがあると楽、ただくそ大変。Yamamurawww.slideshare.netAddressableとはなんぞやAssetの制御を簡単にする機能。前までAssetBundleManagerと呼ばれていました。・ABがどこにあるのか気にせず利用できるようにする、特定のキーワードで取得できる。・遅延ロード、大きなシーンを読み込んだ時、遠距離のものは即座にロードする必要はないときに遅延でロードさせることができる。・ABのパッチをあてることができる、ABの一部だけを差し替えたり更新できるようになる。ネットワークの動作を確認することができる。ASの用語ABとは別に用語が増えている。好きに書き換えられるグループアセットを格納するグループ、スキーマとか設定をつけることができるスキーマグループごとのビルド設定、どうビルドするのかなどの設定プロバイダーどうやってロードするのかという設定ASの想定ASは何がしたいのか、全てのアセットをABに含みたいのだと思う。使わないものがあるとIDが無駄になるので状況によって消したい。ちなみにすべてABにすると、ビルドデータにアセットが一切含まれない。時間がかかるので、状況に応じてモードを使いわけるのがいい。想定2ABはアセットを取得して組み立てるではなく、組みあがったアセットを使う。プレハブにアドレスを設定してそれだけを取得するのではないかなと思います。二つのABで同じ素材を保持するということになってしまう。Analyzeにチェックすると、重複チェックしてくれます。全て非同期でやっています。即座に生成することはできない、最短でもLateUpdate時。自分の状況に合わないときはカスタマイズすることができます。プロバイダーを拡張することもできます。ここでデモwww.youtube.com現状どうなのか素直に使えるなら楽になった、ビルドインシェーダーも含まれている。テストケースがまだ甘い、エラーを特定するにはコードを見るしかない。安定するのはもうちょっと先。Deckそもそもなぜこんな話をするのか。IOSで追加のダウンロードをさせる場合はサイズを表示しなければならなくなった。細かい不明点はあるがABのサイズ表示をしたい。ABにはサイズ取得メソッドがない、公式でない以上自分で作るしかない。今回はYAMLを加工してどうにかするアプローチをしました。みなさんはunload(ture)を使っていますか?これはABを強制解放することができます。結果、使っているのに解放されてMissingになったりする。その点falseは安全。ところでこれ誰が管理しているのかというと、unityのresoucesが管理しています。見方を変えると、任意の単位でいくつかのAssetの解放ができる。サーバ無しでAssetBundleを使うdocs.google.com最初に結論から、サーバを使った方がいいなぜサーバがいいのか・サイズを小さくできる・リソースの差し替えをバイナリの更新無しでできるむしろなぜローカルで使う必要があるのか・通信しなくてもゲームをさせたい・会社がサーバを用意している間の一時しのぎ・ストレージ代を抑えたい通信しなくてもプレイさせたい・初回DL中のミニゲームに・チュートアルまではダウンロードさせない・完全オフラインモードどうやってローカルでやるか、ストリーミングアセットで対応します。・ABのキャッシュ・metaファイルのguid本題、どう使いまわすのか・キャッシュしないWebGLではブラウザキャッシュがかってにききます・ABビルドを行うprojectは1つだけにするちゃんと読み込めます・自前でシングルマニフェストを生成する自前でjsonなどで管理キャッシュについてhashコンフリクトさえ起こらなければ大丈夫hashの代わりにCachesAssetBundleとか使えryキャッシュは自前実装すれば複数とか関係ないguidによる参照の問題テクスチャとかオーディオなら大丈夫、ghuidで管理されている。問題はC#やシェーダー、これらはビルドインされていることが前提となっている。・C#スクリプトをmetaごと複数して読み込む・DLL化して取り込むAB考えないならパッケージマネージャーを使った方がいい。DLLの置き換えでMissingになる問題は力技で解決。まとめGUIDによる参照関係に気を付けましょう。2019これほど食欲がなくなる寿司を見たことがあるだろうか・・・?よく懇親会のネタで、お寿司のエビは人気がないとは言われますがこれほどとは。この時はエビ、イカ、ホタテとたまごが少々。2019#AssetBundle完全に理解した自分の死霊はこれ。Assetアプリの実行中に読み込むことでAssetとして展開できる。2019弊社は拡張子なしですが、拡張子は決めたほうが良いです。その方が幸せになります。2019ごっこらんどすごい...。個別にプロジェクト開発して、ビルドサーバでマージしてアセバン作ってる??ここ、Jenkinsの知見とかスクリプトとかも公開してほしいー。ファイルサイズなどを乗っけ直した独自Manifestを生成するアプローチ。2019感想ブログmonry.hatenablog.com過去の完全に理解した勉強会raspberly.hateblo.jpraspberly.hateblo.jpraspberly.hateblo.jpraspberly.hateblo.jp間違っている箇所、消してほしいツイートがありましたらコメントにお願いします。#15勉強会のレポート(メモ)です。2日目イベントのレポート(メモ)です。勉強会のレポート(メモ)です。#2Roppongi.unity1勉強会のレポート(メモ)です。完全に理解した勉強会のレポート(メモ)です。アーカイブおすすめアセット参加グループUnityUnityゲーム開発者ギルドリンクはてなブログブログをはじめる週刊はてなブログはてなブログProはてなブログをはじめよう!Raspberlyさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。