YAMADA TAISHI’s diary

ゲームについてとか私の日記とか。このブログのあらゆるコードは好きにどうぞ。利用規約があるものは記事内のGitHubのRepositoryのリンクで貼られていると思うので、そちらを参照ください。

【勉強会】「Unity AssetBundle 完全に理解した」に行ってきました

こんにちは、やまだ たいしです。

Unityのちょっと踏み込んだ勉強会を主催している完全に理解したシリーズの「Unity AssetBundle 完全に理解した」に行ってきました!
今回は、その概要と感想です。

イベントページ connpass.com


目次


概要

AssetBundleの勉強会です。
スマホゲームや、さまざまな運用においては切っては切り離せないAssetBundleですが、
仕組みの理解の難しさやUnity Proしか使えないからか圧倒的に資料が少なく勉強が難しいです。
特殊な運用をすると引っ掛かりがちなAssetBundle。他の方はどうやって使っているのでしょうか。

私は古いAssetBundle(未だにWWWでの実装)の改修業務を任されるかも知れなかったので、AssetBundleの理解を深めるために参加してきました。
勉強会の内容については動画やスライド資料が上がっているため、ここでは感想をメインに書いていこうと思います。


動画

www.youtube.com


講演


お前はまだ本当のAssetBundleを知らない

殺意駆動開発 (@toru_inoue) | Twitterさんによる「お前はまだ本当のAssetBundleを知らない」です。
内容はAssetBundleを使った実務的な運用方法やAssetBundleそのもの(更新可能要素)についての解説でした。

講演内容に直接的に関係はないですけど、
私はいきなりアセバンって略称を使われ「えっ!?アセットバンドルってアセバンって略すの一般的なの!?」って最初から困惑してました。
また、Unity Serialized AssetもUSAと略されて頭の中は「カモンベイビーアメリカ」と脳内で曲が流れてました。
そして、そのままのスピードで「Unity Serialized Asset」と「Byteから生成できるAsset」と「コードから生成できるAsset」の解説を行ってくれました。
初っ端からいきなり置いてきぼりだったので不安でした。

しかし、その後のAssetBundleを使った実務的な運用方法については、なんとか理解できました。
私もガッツポーズでRelease!したい!
必要にかられてAssetBundleを実装した場合、どのタイミングでコンテンツをダウンロードするか、
大体こんな順番で変化するよっていう内容を見せられなるほどなぁ。確かにそうだと納得。
ツイッターのタイムラインにも、ワンパン実装してるだとか常時アップデートだとか賑わっていました。
AssetBundleと一口に行ってもダウンロードコンテンツのダウンロードボタンを設置する形だけでなく様々な形式があるのだと初めて知ることが出来ました。
イカした使い方というよりも実務に寄り添った良い内容を知ることが出来たように思います。

www.dropbox.com


ごっこランドを支える技術 〜AssetBundle 編〜

もんりぃ先生 (@monry) | Twitterさんによる「ごっこランドを支える技術 〜AssetBundle 編〜」です。 内容はAssetBundle の基礎の解説と運用事例でした。
まさに私が欲しかった内容!
次々と基礎の部分の用語を解説してくださいました。
コレについては脳内で「なるほど」の連発していた気がします。
講演を見るまで*,manifestファイルがmanifestの実態だと勘違いしていました。今知ってよかった!!!
後、Caching周りについては全く知らなかったため勉強になりました。
依存関係についてもあまり知らないまま現在プロジェクトで使っているものは放置していたので、ちょっと気にしようと言う気になりました。
AssetFileHashをファイル名にするっていうのは意外な運用方法だと思ったので覚えておこうと思いました。
ちなみに私のプロジェクトの場合、アプリのバージョンごとにデータを作成しデータを格納して運用しています。(確か)
後、今回は解説されませんでしたが、Slackからコマンドを投げる記事については、現在のプロジェクトの環境を構築するときに参考になりました。
基礎から解説してもらい、運用方法も知れたので満足出来た講演内容でした。

speakerdeck.com


誰もAddressableを語らないのなら…俺が語るしかないッ

椿 (@tsubaki_t1) | Twitterさんによる「誰もAddressableを語らないのなら…俺が語るしかないッ」です。
内容はそのまま、Addressableについてです。

テラシュールブログでお馴染み椿さんによる講演!
Addressableって実際どうなの?って言いつつも、周りはあまり触ろうとしないので、お待ちかね!っといった感じがしました。

普段からブログを書いていらっしゃるからか、とてもプレゼン資料が見やすいように感じました。すごーい。
Addressableについては全く知りませんが、「機能つかったことないけど、こっちの方が便利そうやん?」とわかった気にさせてくれる資料や説明は舌を巻きました。
どうでもいいけど、途中の動画でVSCodeが出てきて「椿さんはVSCode派かぁ。」って思いました。
Addressableを理解するなら外せない資料が誕生した瞬間でした。
後で見直そう……。

www.slideshare.net


LT

後はLTなので感想もサクッと短く書きます。


LT1: AssetBundleダウンロードサイズ表示対応


Cova (@8bitdots) | Twitterさんによる「AssetBundleダウンロードサイズ表示対応」です。

manifestファイルを使いダウンロードサイズを取得するのは、なるほど!と思いました。
私のプロジェクトではバンドルのビルド時にファイルサイズを記録したtxtファイルを生成し、
バンドルファイルをインストールはじめにそのtxtファイルを取得してダウンロードサイズを出すようにしていたので
その手もあったのかと感心しました。

speakerdeck.com


LT2: Unload(true)って使ってますか?

FROST (@2Lt_FROST) | Twitterさんによる「Unload(true)って使ってますか?」です。

冒頭でUnload(true)使ってますか?って聞かれましたが、「え、どうだったかな覚えてない……」って感じでした。
Unload(true)を使ったほうが良いんだということを知れただけでも良かったかなと漠然と思いました。

docs.google.com


LT3: サーバ無しでAssetBundleを使う

やまだ (@tty_yamada) | Twitterさんによる「サーバ無しでAssetBundleを使う」です。

もくもく会などで何度かお会いになってる方で、同じやまだ馴染みなので、どんな内容を話してくれるのかと期待しながら聞いてました。
と思ったらいきなり結論が「AssetBundleはサーバを用いた方が良い」だったので、「そりゃないよw」とクスリときました。
話を聞いている限り課題はありそうですが、出来なくはないのだなぁと知ることが出来たので良かったです。

docs.google.com


LT4: 複数プロジェクトで同一AssetBundleを使い回す時の注意点

ふーなん (@kannan_xiao4) | Twitterさんによる「複数プロジェクトで同一AssetBundleを使い回す時の注意点」です。

最初、タイトルを見たとき「おっ!使い回せるのか!?」って思ってLTを聞いてました。
しかし、内容をみて青ざめました。何だ、このゴリ押し感……。
そもそもUnityのYAMLが変わったら多分死ぬやつだ……って見ていて思いました。私は絶対しません。

speakerdeck.com


まとめとか

今回は色んな方々の話を聞いて、皆それぞれカスタマイズしていて色んな運用方法が見えてきたので面白かったです。
AssetBundle関しての資料少ないから、こそなのか個性が出ているように感じました。

後、懇親会で何人かの人に話を聞きました。
普段サーバーサイドでAssetBundleの導入をしなければ、ならなかったため今回参加した方や
AssetBundleを担当することになったため今回勉強するために参加した方などがいました。
アプリ側だけでなくサーバーサイドの方も興味のある内容なのだなと認識できたので良かったです。

勉強会を通して、やはり、Addressableが使えるようになっておいた方が良さそうだなぁと感じました。
とは言いつつもまだまだ普通(?)のAssetBundleも使っていくことになりそうなため、今回学んだことを覚えておいて損はなさそう。
全体で分からなかった箇所がいくつかあったので、私自身が分からないところに気づくことが出来た良い勉強会になりました。