AssetBundle (アセットバンドル) へのパッチの適用は簡単で、新規アセットバンドルをダウンロードして既存のものと置き換えるだけです。キャッシュされたアセットバンドルの管理に WWW.LoadFromCacheOrDownload
や UnityWebRequest
を使用している場合は、選択した API に各種バージョンパラメーターをパスすることで、新しいアセットバンドルのダウンロードがトリガーされます。
パッチ適用のシステムにおいて、より難しい問題は、置き換えるべきアセットバンドルの特定です。パッチシステムは次の 2 種類の情報のリストを必要とします。
パッチャーは、サーバー側のアセットバンドルのリストをダウンロードし、アセットバンドルのリストを照合する必要があります。欠落したアセットバンドルやバージョン情報が変わったアセットバンドルは、再ダウンロードされる必要があります。
アセットバンドルへの変更を検知するカスタムのシステムを書くことも可能です。独自のシステムを書く場合、開発者の大部分は、アセットバンドルのファイルリストには JSON などの業界標準のデータ形式を使用し、チェックサムの計算には MD5 などの標準 C# クラスを使用しています。
Unity がビルドするアセットバンドルのデータは、決定的なアルゴリズムで整理されています。それによって、カスタムダウンローダーを持つアプリケーションにも差分パッチ適用が可能になります。
Unity は差分パッチ適用のためのビルトインの仕組みは提供していません。またビルトインのキャッシングシステムを使用している場合は WWW.LoadFromCacheOrDownload
も UnityWebRequest
も差分パッチの適用を行いません。差分パッチ適用が必要な場合は、カスタムダウンローダーを書く必要があります。