ぷらこあ

ゆるふわゲームクリエイター / イベントオーガナイザーを目指してます

meetupCARTA #2 スマホゲームにおけるUI/UXデザインに参加しました

carta.connpass.com

なぜいまスマホゲームのUIUXに向き合うのか

自己紹介

1) 市場規模が大きく成長

www.itmedia.co.jp

  • スマホゲーム市場は国内規模だけでもうすぐ1兆円規模
  • 他の市場に比べて平等に開発チャンスを感じれる市場
  • より大きなプロダクトの開発に携えるスマホゲームは良い
    • 規模が大きいプロダクト: 良い事も悪い事も反応が大きい (分かりやすい)

2) スマホゲームの性質

  • UIUXデザイン力を向上させるには試行回数が大事
  • 試行回数が増える性質を備えている
    • ゲームである: 設計段階で考慮する要件が圧倒的に多い
    • BtoCである: ユーザからの直接的なフィードバック
    • 運用が入る: リリース後も最適な形へと磨き上げられる

3) ゲームのノウハウを学習出来る

  • コンシューマの時代から人が熱中するコンテンツのノウハウが数多く蓄積されてきた

ゲームニクス: ゲーム内にたまった5つの原則 (サイトウアキヒロ氏)

www.slideshare.net

  • ゲームニクスはおもてなしの文化
    • さりげないおもてなし、和の心そのもの
  • 1) 直感的で快適なインターフェイス
  • 2) マニュアル不要のユーザビリティ
  • 3) はまる演出
  • 4) 段階的な学習効果
    • 躓かないように、もしくは時にはわざと躓かせる
  • 5) リアルとバーチャルのリンク
    • リアルにどれだけバーチャルな部分をリンク出来るか

まとめ

  • (1) 大きな市場で平等に勝負出来る
  • (2) 試行回数を上げてUIUXデザイン力UP
  • (3) ゲームに溜まる熱中するノウハウを吸収できる
  • なぜいまスマホゲームのUIUXに向き合うのか?
    • UIUXに関わる人が成長できる環境だから

シリーズを越えて試されるUIUX

自己紹介

  • 坂本 康朗さん (株式会社モブキャストD3企画部 部長)

ゲームにおけるUIとは

  • ユーザとゲームにおける接点/接触面
  • これは決して視覚に限った話ではない
    • 視覚/聴覚/触覚のアプローチ

あるゲーム開発を振り返って読み解くUIUX

lumines.game

www.youtube.com

LUMINESシリーズのUX

  • 視覚: ヴィジュアル/エフェクト
  • 聴覚: サウンド/BGM/SE
  • 触覚: 操作感
  • パズルゲームだけど音楽を操作しているような感買

スマホで同じUXを実現する為に

  • 1) 直感的な操作性を目指した画面の向きの変更
    • どうやって画面の向きを決めているか?
    • 最初は横画面で作っていた
      • 前作以前のユーザの声 ... etc
    • 最終的には実際のプレイ結果を元に調整して縦画面に
      • スワイプとフリックの誤操作が肝だった
        • 指の可動範囲と動く向きの考慮が出来ていなかった
      • 大事なのは、想い通りの場所にブロックを動かせることだった
    • 学び
      • 過去の常識を疑う勇気
      • ユーザが答えを知っているとは限らない
      • UI(画面の向き含む)は操作性が最適である事が前提
  • 2) 全てがサウンドに連動した演出
    • ルミネスにおいてはサウンドは最も重要なUI
    • 連動すると意味が生まれ、理解が進み、結果的に没入感が増す
    • 1) 楽曲(BGM+SE)とその順序
      • 楽曲にはストーリーがある
      • メロディで盛り上がりを表現
    • 2) SEとクォンタイズ
    • 3) 楽曲に合わせたアニメーション

モブキャストのゲーム共通機能/資産

  • Coffeeプロジェクト
    • Common-Feature: 共通機能を研究開発するプロジェクト
  • Untiyゲーム開発でよりよいものをより早く作る為の当たり前のものを用意する
  • UIUXについてはデザイナではなく職種関係なく考えていく必要がある
    • 当たり前の気持ち良さを提供したい
    • 気持ち良さの感覚を揃えるために、基準のUIを作ってしまう

ゲーム開発にプロトタイピングが有用な件

自己紹介

  • 楠 薫太郎さん(株式会社DeNA Games Tokyo デザイン部 部長 / クリエイティブディレクター)

プロトタイピングって?

  • プロダクト開発に関わるメンバーの脳内イメージ/認識を共通化すること
    • 脳みその中のイメージは人それぞれ
    • 脳内イメージの共通かはプロダクト品質や開発スピードが向上

スマホゲーム開発って大変じゃない?

  • コンテンツボリューム多い
  • 画面遷移多い
  • 仕様も複雑 (ユーザにとってではなく開発者にとって)
  • 様々な機能が複雑に関係し合っている
  • 運用をみこした設計も必要
  • ...etc

なぜゲーム開発でプロトタイピングなのか

  • 開発に参加している中で個人的に一番解決したかったポイント
  • 企画/仕様: 資料上である程度認識が合う
  • UI/インタラクション: 認識が合わない
    • モノが無いとイメージ出来ないから

プロトタイピングツール

プロトタイピングツールでできること

  • 実際にタップした時のインタラクションを細かく実装できる
  • 実機で手軽に確認できる
  • 実機確認をエンジニア工数を使わずにデザイナー作業のみで完結できる
  • UI設計に置いてもタップ領域や視認性等も同時に調整出来る
  • ツール自体に様々なインタラクションのライブラリがある

プロトタイピングツール使用結果

  • 考慮漏れを防ぐ事が出来た
  • 実際にユーザが触る者に近いものを早く作れ、ブラッシュアップ工数捻出につながり品質向上
  • 改善点の洗い出しが早くなり、開発スピード上がった
  • 作業のやり直し、コミュニケーション工数の減少

ポイント

  • 特性や影響範囲を見極めてプロトタイピングツールを使う必要がある
  • インタラクションを多用する機能改修では有用
  • 全体の遷移設計等はワイヤーフレームでカバー

スマホゲームUI/UXデザインの今とこれから (ディスカッション)

  • Q. 楠さん: ゲームのプロトを最初の段階でも使った? 運用中だけ?
    • タイミングの話、たまたまリリース後に注目した
  • Q. 楠さん: デザイナーが主に使う?
    • 企画の人がプリミティブなイメージで触るのもあり
    • 直接グラフィックを触るデザイナーさんのほうがスピード上がりそう
  • Q. 尖ってるアプリはある?
    • 楠さん: モンスト幽幽白書でコラボ、CMのコラボ演出のUX
    • 坂本さん: 遊具王デュエルリンクス、外国の人に見せると子供向き、30代(世代)の方がハマってる、懐かしめる要素が詰まってる
    • 鷲山さん: 挑戦していると思うHIDE AND FIRE、白猫テニス、プレイ感が広がるタイトル
  • Q. UIUX論の社内での布教
    • 鷲山さん: スマホに限定すると今までの(FPからの)流れもある、ちゃんとUIUXやらないと通用しない時代になっている、会社向けにも重要性を発信する、開発プロダクトの底上げが出来る環境の整え
    • 楠さん: UIUXそのものの布教はやってない、UIUXはなんであるのかを考えると、クオリティ向上が大本、本質として市場が大きい状態で勝てるように
    • 坂本さん: モブキャスト、UIUXデザイナーという職種が無い、職種問わず(プランナー/デザイナー)考える
  • Q. UIUXを考える人が社内にいる?
    • 鷲山さん: UIデザイナーはいる、基本的には挙手制、やりたい領域が多い程接触する職種の人が増え、役割が多岐に渡る
    • 楠さん: 鷲山さんの言う通り、やる領域が多く、組織やタイトルによって役割が違う、UIデザイナーを定義すると逆に出来なくなるリスクがある
  • Q. 組織横断的なUIUXデザイナーの成果はどのように評価されている?
    • 楠さん: 次からやろうと思っているのが今期の自信作、どういうコンセプトで何を達成したい為にやったのかというプレゼンと評価、アウトプットを見る仕組みを整える
  • Q. 色々な人が絡んでいるので、どうその人の成果として見極めるか?
    • 鷲山さん: 評価軸、事業成果と個人のスキル/アウトプット、技術が高いけど事業成果は低いから評価低いよね、みたいなことにならないように... 周りの評価も加味してあげる
  • Q.今後この業界で活躍して行く上で大事なポイントは?
    • 楠さん: プレゼン聞いててやられた「おもてなし」は大事、サービス精神、人を楽しませる事が大好きな人は成長/活躍出来るフィールド
    • 鷲山さん: 括るのは難しい、非ゲーム業界から入ったのでこういうことやってないと作れないみたいなのはない、小さい頃や昔の幼少期の原体験、昔ながらの遊びに体験のベースが詰まってる、「ああいう体験に似てるよね」みたいなことを話せる人は向いている、開発は何作ってても大変なので挫けないやつ
    • 坂本さん: 技術はやれば伸びる、興味が無いと伸びない、ゲームに対して興味が無い人はゲームは作れない、好きなジャンルや得意不得意あると思うけど何でも良い
  • Q. プロトタイピング自体の動きに左右されないか、どこまで突き詰めればいいか
    • 楠さん: 設計をどこで終わらせるかは難しい、メンバーや技術力にも左右、どこまでやるかを決めてやるだけなので開発メンバーと話す感じ

DCEXPO2016 に行ってきました

  • 技術的なことは Qiita に、成果物やイベントについてはブログにと出し分けを始めました。
  • ストックよろしくお願いします (宣伝)
  • 久しぶりのブログです。DCEXPO2016の事前予約デー(10/27)にお邪魔して来たのでざっくり感想。

DCEXPO2016とは?

DCEXPO2016 | コンテンツ技術をテーマとした国際イベント

  • デジタルコンテンツEXPOのこと
  • コンピュータグラフィクスや3D、VR、インターフェースに関するイベント
  • コンテンツが先行しているので技術詳しくなくても楽しめる

最初に感想

  • 「技術が魅力的なコンテンツを支える」ということを身近なに体験できるイベントだった
  • (自分の職能的にVR/ARとかモーショントラッキングとかあまり強い縁は無いのだけど) 最新鋭のエンタメはそういうの使ってより現実と空想の垣根を超えたコンテンツを (普及率はともかく) 僕達に押し付けてくれるので、見ておいて損は無かったなーというのは印象として持った

一部コンテンツを紹介

8k VRシアター

8kvr.net

  • HMDを使用しない新しいVR「8K:VR Theater」の第一作:サカナクションのVR映像「碧」を体験
  • サカナクションのAOIのライブ/PVのような映像
  • がまるで目の前に、ライブ会場の最前列で見ているように感じる
  • (極端な言い方をすると動くフィギュアが目の前にある感覚)
  • ヘッドマウントディスプレイ(HMD)無しで簡易的な3Dメガネのみで体験できる
  • (これが重要で、簡単/疲れないっていうのがVRの垣根を限りなく下げている / VRよりもARに体験は近いかも)
  • レーザーや立体音響等の演出が更に奥行きを表現している
  • 音楽シーンやアニメ/演劇等の様々なシーンで活用出来そう

Qoncept 4D Tracker

  • 卓球 (やバレーボール) のラリーのトラッキング/解析および再現
  • スピン量や速度まで考慮したツール
  • トレーニングへの活用から新しいスポーツ演出までカバー出来そう

Project Alice

  • VRでFPSなコンテンツ
  • 銃にアタッチメントを物理的に装着することで、ショットの種類が変わる
  • 二丁拳銃も出来て、ファミ通Appの人も言ってるけど「男心をくすぐるコンテンツ」
  • 他のプレイヤーの位置や銃、アタッチメントをHMD内でトラッキングしており、HMDを付けたままでも位置を認識できる
  • HMD内で現実のものを認識出来る体験はリアリティを感じていいなぁ
  • ただアタッチメントのほうが滅茶苦茶重くて、10分くらいの体験だったけど左腕筋肉痛に....
  • 体験には整理券が必要だった

ハシラス | オムニジャンプ

  • 株式会社ハシラスという日本のVRコンテンツの先駆者によるコンテンツ
  • サンシャインの上でやってるコンテンツもこの人達によるもの
  • ガジェットを使った体験演出が得意なのだけど、今回はトランポリンを使ったコンテンツ
  • 上から吊り下げたゴムを身体に装着し、跳躍力を高めながら減速を緩やかにし、安全性を担保しながら高く飛べる
  • 更にHMD内では現実よりも高く飛んでいるように見せているため、脳はかなりの跳躍を感じる(らしい)

Unlimited Corridor (無限回廊)

  • 自分の足でVR内を無限に歩き回れるシステム『無限回廊 – Unlimited Corridor』の動画が公開
  • VR空間内で歩き回れる技術はViveが有名だがルームスケール (動ける領域) には限りがある
  • しかし、このコンテンツは無限に歩き回れることが出来るのが特徴
  • 「リダイレクテッド・ウォーキングとはHMDに表示する映像に補正を加えることで、実際には曲がって歩いているにもかかわらず、まっすぐ歩いていると感じさせる技術」

失禁体験装置

  • ニコニコ超会議辺りから非常にバズってたコンテンツ
  • 「介護をする上で要介護者の気持ちが分かる」というコンセプトはかなり真面目で好感を抱く
  • 最初に水を飲ませる導入、腹部への圧、生暖かさや濡れてる感触 (実際には濡れてない) 様々な仕掛けが再現率を非常に高めていた

その他色々

  • ドミノに加速度センサを付けて、倒れる際に文字を表示する「残像ドミノ」
  • 鍵盤に任意の振動/視覚的演出を与えることによる他楽器の再現「Hap TONE」
  • リアルタイムで自分の動きと3Dモデルの動きを動悸させる「きぐるみライブアニメーターKiLA
  • 東京大学苗村研究室による「人々が集う場における情報メディアの未来 」
  • ...などなど、多数の展示

【Unity道場10】アセット運用ベストプラクティス に参加しました

eventdots.jp

参加しました!私的メモです(ˊ꒳ˋ*)

公開された資料

speakerdeck.com

まとめ

  • Resourcesには動的に差し替えるコンテンツのみを入れる
    • Resources以下のファイル全てに対し、初期処理が発生する
    • Resources以下に多量のアセットを配置することで膨大な初期化処理が発生
    • Asset以下にある全てのResourcesが対象なので、外部アセットにも注意
  • UnityはInstanceIDを元にアセットの参照を行っている
    • InstanceIDが参照出来ないケースではMissingになるので注意
    • 特にAssetBundleアンロード時等で注意
  • AssetBundleの取得はUnityWebRequest + DownloadHandlerがオススメ
    • UnityWebRequestはUnity5.4から正式版になった
  • AssetBundleの圧縮形式はUnity5.3から採用されたLZ4がオススメ
    • ただし使用環境によって最適解は異なるので特徴見極める必要がある
  • ベストプラクティスを信じない
    • 環境やゲームの内容によって最適解は異なる

メモ

unityでアセットを利用する

アセットをインポートしてそのまま使用する

Resourcesフォルダを使用する

  • 動的に差し替えられるアセット
  • ファイル名(拡張子は無し)で取得
  • リリース後に変更出来ない
  • スクリプトにてコンポーネントに設定する
// Resources直下に置いたファイルを取得する
var spriteRenderer = GetComponent<SpriteRenderer>();
spriteRenderer.sprite = Resources.Load<Sprite>("FilePath");

AssetBundleを使用する

  • リリース済みのアプリにアセットを追加できる
  • asset群を束ねた(bundke)もの
  • Unityが使用可能なアセットを1つ以上格納するアーカイブ

アセットの依存関係

  • 依存するアセットも同時にロードされる
  • e.g) Prefab => Sprote

AssetBundleにおいて生成されるもの

  • Manifest
    • 依存関係を表示する
  • Asset AssetBundle
    • アセットを格納する
  • StremedSceneAssetBundle
    • シーンを格納できる
    • SeneManagerから呼び出せる
    • シーン情報とシーンが参照するアセット群が含まれる

AssetBundleManager

  • AssetStoreからダウンロード出来る
  • 機能
    • シミュレーター機能
      • AsserBundleをビルドせずにAssetBundleからロードした事にする
    • LocalServer機能
    • Build機能

アセットとオブジェクトのシリアライズについて

  • オブジェクトの状態を保存し、復元する
  • Unityはシリアライズに依存している
    • e.g) PrefabとSceneの関係
    • e.g) オブジェクトとアセットの関係
  • 実行時にでシリアライズしてオブジェクト構造を再現する
  • アセットインポート時(D&D時)
    • TextureやAudio, Model等のネイティブデータを参照するUnityEngine.Objectシリアライズ
    • ネイティブデータ: ハードウェアによってフォーマットが決定しているもの
      • プラットフォームによってTextureの参照する可能な形式が異なる
    • UnityEngine.Objectが中間に入ることで統一されたIFで各PF向けのネイティブデータが読み込める
  • UnityEngine.Object : データは1:1の関係
  • prefab/scene => GUID/LocalIDでUnityEngine.Objectにアクセス => .meta => ネイティブデータにアクセス

GUID

  • 重複しないIDでアセットを識別
  • GUIDハインポート時に背呈され .metaデータが失われない限り維持される
  • renameやパスの変更でも維持される
  • 以下にも割り当てられる

.meta

  • アセットをインポートする祭に作成される
  • metaを残したままファイルを上書きする事で参照/設定を維持したまま更新出来る
  • 初期設定は隠しファイルになっている

LocalID

  • GUID : .meta は1:1の関係
  • ただし1つのアセットに複数のアセットを持つ事がある
  • e.g) Atalas化したSprite
  • GUIDとは別にLocalIDにて識別する
  • .metaに記載されている&の後の数字がLocalID

アセットのライフサイクル

  • UnityEngine,Objectを経由したロードされる
  • 実行時にはGUID/LocalIDを変換したInstanceIDでアセットを参照する(高速化のため)
    • ゲーム起動時に全てのアセットに対して生成が行われる
  • 不要になったらアンロードするが、InstanceIDは残る

Resourcesについて

  • テキストベースでInstanceIDにアクセスし、任意のアセットを引き出す
  • Resourceフォルダ以下に配置したアセットにInstanceIDを登録する

内部動作的

  • アプリ起動時にInstanceIDとファイル名とフォルダパスをキャッシュする
    • Resources/Prefabに紐づいているアセットはキャッシュされない
  • アプリ起動時にLookup用のテーブルを作成する
  • 単一のファイルにシリアライズされる

デメリット

  • (Resourcesを不適切に使う事によって) アプリの起動時間やビルド時間が延びる
    • Resources以下に全てのアセットを配置することで膨大な初期化処理が発生
      • ルックアップテーブルも広がる
  • カスタムコンテンツの配信に向いていない
  • 差分更新が出来ない
  • アセットを圧縮できない
  • Androidはアクセスに追加コストが発生する

AssetBundle

  • AssetBundleのロード時にAssetBundle内に含まれるアセットのInstanceIDが読み込まれる
  • AssetBundleを跨いだ依存関係を設定することができる
  • AssetBundleの持つネイティブデータへInstanceIDを経由してアクセス
  • AssetBundleをアンロードするとInstanceIDが失われる
    • 参照先をUnloadした場合、参照もともUnloadし、再度Loadする必要がある
  • 文字列アクセス用のLookupテーブルが生成される
  • AssetBundle1会に月10kb=40kbのメモリ消費と僅かながらの展開のオーバーヘッドがある

AssetBundleの依存関係

  • 他のAssetBundleに依存する場合、InstanceIDを元に参照を解決する
  • 見つからない場合、Missingに設定される

AssetBundle.Unload

  • AssetBundle.Unload(false):AssetBundleから提供したInstanceIDを削除する
  • AssetBundle.Unload(true): 全てのInstanceIDを持つアセットを強制的に解放し、InstanceIDも削除する

AssetBundleの分割数

  • LZMAの場合、サイズが大きいと非常に長いローディング時間が発生する
  • CacheOrDownloadのキャッシュを利用すると高速ロード出来るが数が多すぎると起動時に負荷
  • LoadAllAssetsは2/3のアセットを一括で伃邑な、逐次ロードよりも早いかも
  • AssetBundleの分割数が少ない
    • (= アセットのサイズが大きい)
    • メモリ使用量が増える (memory等で読むと)
    • 読み込み時間が延びる (lzmaで読むと)
    • AssetBundleのビルド時、再構築の機会が増える
  • AssetBundleの分割数が多い
    • ビルドに時間が掛かる
    • リソースマネジメントが非常に複雑
    • ダウンロードの時間が延びる

暗黙の参照/重複アセット

  • AssetBundleは直接assetbundle nameを指定しないアセットもAssetBundleに含める
    • 複数のAssetBundleに含まれる場合がある
      • 例えばシーンをAssetBundle化する場合、そのシーンに含まれるアセットについて
      • 既にInstanceIDが割り振られていた場合、新しいInstanceIDを割り振られる
    • 特にShaderやTextureが危険
    • 対策
      • resource AssetBunde を用意し、シーンはresourceに対する参照を持たせる

AssetBundleの圧縮について

  • サイズ: LZMA <<<< LZ4 < 非圧縮
  • ロード速度: LZMA > LZ4 >>>>> 非圧縮
  • LZ4はUniy5.3以降に使用可能
  • LZMAを解答するには一旦すべてをメモリに展開する必要がある

AssetBundleの読み込み

  • AssetBundle.LoadfFomFiles
    • ヘッダを読み、ローカルストレージにアクセスするため最速
  • AssetBundle.LoadFromMemory (WWW.assetBundle)
    • メモリからAssetBUndleを構築してロードする
    • LZ4の場合、メモリにそのままコピーする
    • LZMAの場合、全て解答し、LZ4へ再圧縮する(5.3以降)
    • 使用するのはAssetBundleを暗号化したい場合くらい
  • WWW.CacheOrDownLoad
    • アセットをダウンロードし、Unityのキャッシュシステムでキャッシュする
    • LZ4/無圧縮の場合、メモリにそのまま保存する
    • LZMAの場合、全て解答し、LZ4へ再圧縮する(5.3以降)
    • 起動時にキャッシュの有無や削除判定を行う
    • 2回目以降はキャッシュから取得される
  • UnityWebRequest & DownloadHandler
    • DownloadHandlerでのデータ処理を指定する事でヒープを抑えられる

AssetBundleのアセットの読み込み

  • LoadAsset
  • LoadAllAssets
  • LoadAssetWithSubAssets
  • Asyncを設定するとアセットの読み込みをワーカースレッドで行う
  • 1フレームの処理時間は設定可能 (ThredPriority)
  • Unity5.3からUnityEngine.Objectのロードもワーカースレッドで実行する
    • 並列で一括で処理し、ロード完了後にAwakeが呼ばれる

内部キャッシュシステム

docs.unity3d.com

  • 指定のAssetBundleがあればキャッシュから取得し、無ければダウンロードする
  • キャッシュには保存可能容量や有効期限が存在する
    • Cacheing.maximumAvailableDiskSpace
    • Cacheing.expirationDelay
  • バージョンを上げても旧バージョンを削除しない
    • 現状はcrcが異なる場合、削除してDLし直す挙動を利用する感じに…
      • (私的メモ) これってUnity5.3以降でも効く? 動かない的な記事を見たことがあるので検証したい
  • キャッシュの処理はワーカースレッドで行う
  • 複数を同時に走らせるとOSの同時アクセス限界

キャッシュシステムを自作

  • WWWクラスはbytesアクセス用にメモリを確保していため、メモリを余計に使う

ベストプラクティス

同一の要素を大量に含んだPrefab

  • 単一のPrefabをInstantiateで複製した方が若干効率的

Resources

  • Resources/AssetBundleには直接参照しないアセットは含めない
  • Resourcesのアクセス数を減らす
  • Resourcesはプロトタイプ用と割り切る (unity社内のオススメ)
  • アプリにAssetBundleを含めてしまう
    • StreamingAsset等
    • ただしAndroidはapk(zip)内にStremingAssetsがあり、LoadFromCacheでアクセス出来ない
      • CacheOrDownloadや何らかの手で取り出す

AssetBundleの分割

  • 論理エンティティによる分割
    • DLC等に使いやすいフォーマット
    • レイアウトやUI,キャラクター
    • 共有する背景のモデルやテクスチャ
  • タイプのグループによる分割
    • 同タイプのアセット(Texture/Audio)を1つにまとめる
    • 数が少なく、ローカルから接続するなら基本繫ぎっぱなしでOK
  • 同時コンテンツのグルーピングによる分割
    • SceneをAssetBundle化しておく使い方
    • 何度も使用するアセットは分割する
    • 多少のアセットの重複は気にしない
  • 1Asset1AssetBundle
    • カードゲーム等で有利
    • 依存関係の解決はスクリプトで行う
    • 5.3未満でAssetBundleを使用する上での最適解
      • LZMAが大きなサイズで極端に遅くなるため
  • 1つに拘らず、ケースバイケースで使い分ける

依存先AssetBundleはUnloadしない

AssetBundleはどの圧縮を使うべきか

  • ロード時間: 非圧縮 > LZ4
  • ビルド時間 非圧縮
  • アプリサイズ: LZMA
  • 使用メモリが問題: LA4 or 比圧縮
  • 通信時間: LZMA (CacheOrDownload) / 自前でzip圧縮