サーバーからダウンロードする


スマートフォンのアプリを作る場合は、アプリサイズを100MB以下に抑えないと、Wifiでのダウンロードが必須になったり、ファイル分割の設定が必要になったりします。
軽量テクスチャの使用によるファイルサイズの削減だけでは、このサイズ以下に抑えるのが難しいことも多いです。
こういったときのために、宴にはサーバーから必要なファイルをダウンロードする機能があります。
 
また、サーバーからファイルをダウンロード する形にしておくと、アプリの更新をせずにゲームの内容を更新できるという利点もあります。
スマートフォンアプリで、会話シーンに「宴」を使っているケースではより役に立つと思います。
 
ただし、ファイルサーバーは各自で用意する必要があるので、その点を注意してください。

サーバーからコンバート済みファイルをダウンロードする

宴の基本的なファイルDLの仕組みです。圧縮暗号化処理などのコンバート(変換)をかけたファイルとAssetBundleを作成し、サーバー上にアップロードしておき、アプリ側からそれをDLします。
 
UnityにはAssetBundleというファイルDLのための仕組みがあるのですが、「ファイルサイズが肥大化しやすい」という問題があります。
宴では、AssetBundleは「サウンドファイル」「Unity形式のファイル」(3Dモデルやプレハブなど)のみで使い、テクスチャやテキストファイルは独自にコンバートしたファイルを使うようにしています。
そのため、「コンバートしたファイル」と「アセットバンドル」二種類を作成する必要があります。

ファイルのコンバート

Tools > Utage > ResourceConverterからリソースコンバーターを開きます。

入力元のディレクトリは、「プロジェクト名/Reources/プロジェクト名」のフォルダをドラッグ&ドロップで設定。
出力先のディレクトリは、Unityプロジェクト以下にある必要はありません。サーバーにアップロードするためのフォルダのパスを指定してください。
 
Convertボタンを押すと、設定した出力先のディレクトリ以下に、コンバートしたファイルとアセットバンドルが作成されます。
 
ただし、AssetBundleの作成には非常に時間がかかるので、最低限の動作ですむように設定可能です。
リソースコンバーターのアセットバンドル作成は非常に時間のかかる処理です。
シナリオのみコンバート、アセットバンドル以外のリソースのみバージョンアップ、エディタが現在使っているプラットフォームのアセットバンドルのみ作成・・・ということもできるので、開発中に頻繁に使用する場合は、これらの機能を使ってみてください。
 また、AssetBundleの対象となるファイル(デフォルトではサウンドとプレハブ、3DモデルなどのUnity形式のファイル)は、全体で同じ名前のファイルがあってはいけません。違うフォルダであっても同じ名前を置けないため、その点を注意してください。

ファイルをサーバーに置く

リソースコンバーターで設定した出力先フォルダ以下に、このようにファイルが作成されます。

作成したアセットバンドルは「Windows」や「Android」など、プラットフォーム別のフォルダ以下に置かれています。
*.list.bytes.utageはファイルリストで、ファイル名のほかにファイルのバージョン番号などが設定されています。
.list.log.txtは、そのログ確認用のテキストファイルです。
このバージョン番号は、すでにある古いファイルと比較して、ファイルが新しく変更されたあるようであれば自動的に加算されます。
古いファイルが消えてしまっていたり、サーバーの状態と違うとバージョン管理ができなくなってしまうた、出力先のフォルダとサーバーの状態をあわせるように注意してください。

このフォルダを丸ごとファイルサーバーにコピーします。
ファイルサーバーは各自で用意してください。

ロードの設定

AdvEngineStarterの設定を「Server」にして、サーバーのURLを設定します。

ビルド時の注意

せっかくサーバーからアセットをDLする設定をしても、Resourcesフォルダ以下にリソースを置きっぱなしでは意味がありません。
Resourcesフォルダの名前を変えるか、Resourcesフォルダ以下のアセットを全て移動するなどしましょう。