Unite2015 RoundTableに巻き込まれた話
概要
ここで強火さんと自分の写真が使われた(もちろん合法)件について、大前さんをおちょくりに行ったらRoundTableに巻き込まれた。
AssetBundle編ということで、Cacheとかに物申したいんだけどオラーって感じで絡んだのがよくなかった。
結果的にはとても面白い。現在進行形で。
AssetBundleの圧縮がDL後に解除される話について
端末にDLしたリソース、その場で自動的に展開されてしまうのが運命だったが、5.1から圧縮状態で置くことができるようになる。
ヘッダー情報のみをメモリ上に展開、必要なAssetBundle内の必要なファイルのみを読み出せるようになるとのこと。
圧縮形式はLZMA -> LZHAMになる。5.1から。すげえ、俺何にもしないでいいや。
LZHAMについていろいろやろうと思ったのが今年のあたま。
自分は野性の男さんのTwから存在を知った。
https://twitter.com/yasei_no_otoko/status/564614755499786241
公式でサポートされるなら、途中まで書いてた記事とコードは不要になったな、、!! 良い。
キャッシュAPIについての不満(from 俺)
WWW LoadCacheOrDownloadについて
public static WWW LoadFromCacheOrDownload(string url, int version, uint crc = 0);
versionってあるけどversionじゃないよね、みたいな話。
新しいAssetをDLしてincrementされたversion値を与えたら、低いversion値のAssetを自動的に消す機構が欲しいんですが
→5系でhashって名前に変わったよみたいな話。
で、過去のが消えないのは残っているんだけど、これ消していいんじゃね?みたいな話。
→Caching.SetCacheOverrideMode(ver上がったのが入ったら古いのを消すモード) or 消さないモード みたいな。
ぜひ!! ぜひ!!!
デフォルトで使えるものが増えるとうれしいんで!!
あとUnityの中のひとにもUnibook2の俺の章読まれてたのでそれはとってもうれしいなって感じだ。
Cacheしてるファイルが多いとCaching.readyがtrueになるのが劇遅になる問題
知らなかった。そんなことあるんだな。
2000ファイルくらいあると、Caching.readyがtrueになるまでに1秒くらいかかるらしい。
バグじゃね?とのことで、今後なんかあるんだと思う。
確かに2000ファイル程度で遅いのなんかおかしい。
MassProduct作成向けのフローを作って欲しい(from 俺)
素材からAssetBundleを作る、みたいなパイプラインがUnityについてくれるとうれしいなという感じ。
Editor上で個々のAssetBundleが作りやすくなることはうれしい、のだが、
N個のモデル x M個のテクスチャ とかのAssetBundleを用意するか? Unity上で??
という。
んでそのために今年のお正月を捧げて作ったわけですよ、AssetRailsを。
https://www.assetstore.unity3d.com/en/#!/content/27672
ルール、規約ベースでAssetBundleが「素材から」「コマンドラインで」作れるやつ。
無駄に苦しむのが嫌なので、Rail(Plipeline)を作っちゃったんだけど、Unityでそういうのを目指すことは無いんだろうか?
→なるほど。その方向は考えてなかった。
→いろんな会社のやつ見て考えてみたい、っていうかAssetRails知らなかった
はい。ですよね、、知らんよな、、、見た目ダサいしな、、
今度プレゼンするよ。
5系からTypeTreeがAssetBundleに入るようになったので、後方互換性はあるみたいな話
LZMAはLZHAMでも解凍できると思う。
下位互換はケースによってはやばい(クライアント側が古いみたいなケース)
なので、クライアント側が古いけどアンパンマン!新しいAssetBundleよ!みたいなことをするとヤバそうという話。
まあそれはそう。
IL2CPPのパッチに関しては4系のほうが適用が早い
とのこと。
5.1
時期とか話にでてたけど、詳しくは明日のroom1、 4thセッションで。
LoadFromCacheOrDownload と、CreateFromFile
ヘッダ情報を読みだして、AssetBundle内の本当に必要なものだけを読むようになる。
全部をメモリ上に展開しておくという動作ではなくなる。
素敵!! っていうかそういう設計のほうがいいだろJKでもありがとうみたいな感じ。
一つのAssetBundleを作るとき、それらをフルに使いきるべき、使いきれる組み合わせでBundleにすべし、みたいな呪縛が消える。
今日言えなかったこと
明日もあるんだけど、忘れそうなので書いておく。
以下2つ。
1.Importした画像ファイルをUnity内でノーオーバーヘッドでコピーしたい
Importが終わったファイルには、Unity内でIDが振られている。
で、それはAssetか?というと、Assetではない。
よってノーオーバーヘッドでのコピーができない。
コピーができないと、一個のリソースから別のリソースを作るとき、オーバーヘッドが悲しいのでなんというかはい。
以前試した、ここのあたりが詳しい。
UnityでのAssetになった画像ファイルのコピーでインポートを避けることは出来ないという結論
http://sassembla.github.io/Public/2015:01:08%2010-26-50/2015:01:08%2010-26-50.html
こんな問題抱えてるの俺しかいないはず。
で、Import済みのリソースをコピーできる(Unity内でのAssetではない物体のDuplicate)とうれしい。
再Importのオーバーヘッドを減らせる。
それ以外にも、モデルとかに関してもいろいろできるはず。
2.標準でJSONライブラリください
あのっあのっ
何度目だろう。ください、、くだs、、、
あると、、、その、、、なんだ、、、、楽、、、、、
というか他のライブラリが含まれているのが面倒くさくてですね、ええ。
たとえばクソみたいな広告やさんだと、ライブラリのネームスペース変えずにブッコンでくるんですよええ。ええ。
おかげでDuplicateしてんぞオラってビルドエラーになるんですわ。ええ。ええ。
デフォルトの力をみせてくれ、、、
おまけ:今回の提案での自分のスタンスを書いておく
・デフォルトで用意されているAPIが素晴らしいならできるだけデフォルトを使う
非カスタマイズ厨なので、頑張らないのが正義。
・デフォルトが残念な場合、可能であればデフォルトを素晴らしいものにする
逆割れ窓理論。良いものは良い使い手を作り出す。逆にAPIのデフォルトがクソだとそのプラットフォームは大変だ。逃げよう。
・最低限自分が得をする行動、提案をする
何処かの誰かが得をするかも、みたいなのはあんま信じない。最低限自分が得をすべき。レベルが低かったら誰かが殴ってくれることを信じている。
・作った人達の意図を最大限探求する
使ってみて合わない場合、意図を汲み取り損ねてるだけの可能性が結構ある。そんで意図を知るとなるほどってなる場合がある。
なるほどってならない場合もある。
・意図が合わないなら初めて作る
みたいな。