コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Unity Accelerator の基本的な使い方

はじめに

Unity Accelerator は Unity 2019.3 以降で使用できる新しいキャッシュサーバです
Unity プロジェクトでアセットをインポートした時のキャッシュを保存しておくことができます

通常、Unity をそのまま使用している場合、アセットをインポートした時のキャッシュは
Unity プロジェクトのフォルダに存在する「Library」フォルダに保存されます

個人で開発している場合はこれでも問題はないのですが
複数人で開発している場合は、各開発者の PC で Unity プロジェクトの Library フォルダに
同じようにアセットのキャッシュが保存されていることになります

Unity Accelerator を使用する場合、1台の PC にキャッシュサーバを立てることになるため、
誰か1人でもアセットをインポートすれば、そのキャッシュがサーバに保存され、
他の開発者はすでにその人がサーバにキャッシュしたデータを使用できるようになり、
Unity で作業する際のアセットのインポート時間を短縮できるようになります

この記事では Unity Accelerator の基本的な使い方を紹介していきます

目次

検証環境

  • Windows 10
  • macOS Catalina 10.15.5
  • Unity 2020.1.3f1
  • Unity Collaborate は使用しない

インストール方法

まずはキャッシュサーバとして運用したい PC に
Unity Accelerator をインストールしていきます

https://docs.unity3d.com/Manual/UnityAccelerator.html

上記のページにアクセスして

f:id:baba_s:20200911163602p:plain

ご使用の PC に合わせてインストーラをダウンロードします
そして、ダウンロードしたインストーラを実行します

f:id:baba_s:20200911150058p:plain

セットアップウィザードが表示されたら「Next >」を押します

f:id:baba_s:20200911150103p:plain

ライセンス契約について表示されたら
「I accept the agreement」をチェックして「Next >」を押します

f:id:baba_s:20200911150113p:plainjj

インストール先のフォルダの設定画面が表示されたらそのまま「Next >」を押します

f:id:baba_s:20200911150130p:plain

Unity Accelerator のデータの保存先の設定画面が表示されたらそのまま「Next >」を押します

f:id:baba_s:20200911150142p:plain

構成の設定画面が表示されたら
「Accelerate Unity Collaborate」のチェックを外して「Next >」を押します

(Unity Collaborate を使用する場合はチェックが必要ですが、
今回は Unity Collaborate の使用は想定しておりません)

f:id:baba_s:20200911150149p:plain

セキュリティの設定画面が表示されたら
「Allow insecure access with NO encryption」を選択して「Next >」を押します

(暗号化なしで安全ではないアクセスを許可しています。
必要であればセキュリティ情報は適宜設定してください)

f:id:baba_s:20200911150155p:plain

資格情報の設定画面が表示されたら
管理者のユーザー名とパスワードを自由に設定して「Next >」を押します

ここで設定したユーザー名とパスワードは、
Accelerator のダッシュボードの設定変更画面やログ画面にアクセスする時に使用します

f:id:baba_s:20200911150201p:plain

確認画面が表示されたら「Next >」を押します

f:id:baba_s:20200911150209p:plain

するとインストールが始まるのでしばらく待ちます

f:id:baba_s:20200911150215p:plain

インストールが完了すると Unity Accelerator にアクセスするための
IP アドレスとポート番号が表示されるのでメモしてから「Finish」を押します

これで Unity Accelerator のインストールは完了です

ダッシュボードの確認

f:id:baba_s:20200911150222p:plain

Unity Accelerator のインストールが完了すると自動でダッシュボードが開きます
このダッシュボードでキャッシュの容量の確認や設定変更などができます

http://【IP アドレス】/dashboard/

ダッシュボードの URL はこのようになります

Unity エディタの設定

前項までで Unity Accelerator を使用する準備ができたので
Unity エディタを開いて Unity Accelerator を使用するための設定をしていきます

Unity エディタで Unity Accelerator を設定する方法は2種類あります

  1. Unity プロジェクトごとに Unity Accelerator を設定する方法
    • 特定の Unity プロジェクトでのみ Unity Accelerator を使用する場合
    • プロジェクトごとに違う Unity Accelerator を使用する場合
  2. PC 単位で Unity Accelerator を設定する方法
    • どのプロジェクトでも同じ Unity Accelerator を使用する場合

1. Unity プロジェクトごとに Unity Accelerator を設定する

Unity プロジェクトごとに Unity Accelerator を設定する場合は

f:id:baba_s:20200911152009p:plain

Unity メニューの「Edit > Project Settings...」を選択して

f:id:baba_s:20200911153103p:plain

サイドメニューの「Editor」を選択します
そして、「Cache Server (project specific)」の欄の下記の項目を設定します

  • Mode:Enabled
  • IP address:先ほどメモした IP アドレスとポート番号を入力
    • 例: 192.168.0.114:10080

f:id:baba_s:20200911152212p:plain

そして「Check Connection」を押して「Connection successful」と表示されれば
正常に Unity Accelerator に接続できています

2. PC 単位で Unity Accelerator を設定する方法

PC 単位で Unity Accelerator を設定する場合は

f:id:baba_s:20200911152602p:plain

Unity メニューの「Edit > Preferences...」を選択して

f:id:baba_s:20200911152606p:plain

サイドメニューの「Cache Server (global)」を選択します
そして下記の項目を設定します

  • Cache Server Default Mode:Enabled
  • Default IP address:先ほどメモした IP アドレスとポート番号を入力
    • 例: 192.168.0.114:10080

f:id:baba_s:20200911152609p:plain

そして「Check Connection」を押して「Connection successful」と表示されれば
正常に Unity Accelerator に接続できています


これで、Unity エディタで Unity Accelerator を使用する設定が完了しました
あとは普段どおりに Unity を使用すれば、アセットをインポートした時に
Unity Accelerator にキャッシュが自動で保存されるようになります

Unity 2020.1 以降ではステータスバーで接続状況を確認可能

f:id:baba_s:20200911153307p:plain

Unity 2020.1 以降ではステータスバーで Unity Accelerator に
正常に接続できているかどうかを確認できます

動作確認

Unity エディタの設定を変更して Unity Accelerator が使用できるようになったので
本当に動作しているかどうかを確認してみます

ダッシュボードで確認

Unity Accelerator が正常に動作しているかどうかはダッシュボードで確認できます

f:id:baba_s:20200911153804p:plain

適当な Unity プロジェクトの Project ビューで「+ > Material」を選択して

f:id:baba_s:20200911153701p:plain

マテリアルを作成します

f:id:baba_s:20200911153708p:plain

そして、Unity Accelerator のダッシュボードを開いて
「Internet Data Downloaded into cache」の容量が増えていれば
正常にアセットのキャッシュが Unity Accelerator に保存されています

もしも容量が 0.0 B のままの場合は F5 を押すか「Refresh」ボタンを押して
画面の表示を更新してみてください

それでも 0.0 B のままであれば、Unity エディタの設定を見直してみてください

Editor.log で確認

Unity Accelerator が正常に動作しているかどうかは Editor.log でも確認できます

f:id:baba_s:20200911154232p:plain

Console ウィンドウのタブを右クリックして「Open Editor Log」を選択して
ログファイルが開いたら

AcceleratorClientConnectionCallback - connected - 【IPアドレス】:【ポート番号】

「AcceleratorClientConnectionCallback」で検索してみて上記のログが見つかったら
正常に Unity Accelerator に接続できています

Querying for cacheable assets in Cache Server:
    88623c161abdd134f9898dcf1e72571b:Assets/New Material.mat
RemoteAssetCache - Download - Metadata - success:false, namespace:81e94844d19a16919208533e08183531, key:ebf7c5c6f3168858d2f27f0583db4b01
Start importing Assets/New Material.mat using Guid(88623c161abdd134f9898dcf1e72571b) Importer(-1,00000000000000000000000000000000)  -> (target hash: '59550b084b643182a4aa7f0cdf16c278') in 0.025727 seconds
RemoteAssetCache::AddArtifactToCacheServer - artifactKey='Guid(88623c161abdd134f9898dcf1e72571b) Importer(-1,00000000000000000000000000000000)' Target hash='59550b084b643182a4aa7f0cdf16c278' Key (and library path)='Library/Artifacts/62/62f3cb60ecf9ba5020f8cf42d160d9c5'
RemoteAssetCache - Upload - Artifact - success:true, namespace:81e94844d19a16919208533e08183531, key:62f3cb60ecf9ba5020f8cf42d160d9c5
RemoteAssetCache::AddArtifactToCacheServer - artifactKey='Guid(88623c161abdd134f9898dcf1e72571b) Importer(-1,00000000000000000000000000000000)' Target hash='59550b084b643182a4aa7f0cdf16c278' Key (and library path)='Library/Artifacts/d2/d2d6c30e75fdbc02255a14464b7e62ab'
RemoteAssetCache - Upload - Artifact - success:true, namespace:81e94844d19a16919208533e08183531, key:d2d6c30e75fdbc02255a14464b7e62ab
RemoteAssetCache - Download - Metadata - success:false, namespace:81e94844d19a16919208533e08183531, key:f7ecf005217e43feb9f56d1fb611c2b9
RemoteAssetCache - Upload - Metadata - success:true, namespace:81e94844d19a16919208533e08183531, key:f7ecf005217e43feb9f56d1fb611c2b9

「RemoteAssetCache」で検索してみて、アセットの作成時やインポート時に
キャッシュのアップロードやダウンロードのログが記載されていれば
Unity Accelerator が正常に動作しています

すべてのアセットのキャッシュのアップロード

Unity プロジェクトのすべてのアセットのキャッシュを
Unity Accelerator に保存しておきたい場合は
Unity プロジェクトのすべてのアセットを再インポートします

f:id:baba_s:20200911155216p:plain

Unity エディタの Project ビューを右クリックして「Reimport All」ボタンを押します
これで、Unity プロジェクトのすべてのアセットの再インポートが開始するので
完了するまで待ちます

f:id:baba_s:20200911155223p:plain

再インポートが完了したら Unity Accelerator のダッシュボードを開きます
そして「Internet Data Downloaded into cache」の容量が増えていれば
正常に Unity プロジェクトのすべてのアセットのキャッシュが
Unity Accelerator に保存されています

Unity Accelerator の停止と開始

Windows の場合

f:id:baba_s:20200911162328p:plain

Windows キー + R を押して「ファイル名を指定して実行」ダイアログを開き、
services.msc と入力して「OK」を押します

f:id:baba_s:20200911162336p:plain

「サービス」ウィンドウが表示されたら一覧から「Unity Accelerator」を探し、
見つかったら選択した状態で「サービスの停止」を押します
これで Unity Accelerator のダッシュボードに接続できなくなれば正常に停止できています

f:id:baba_s:20200911162451p:plain

Unity Accelerator を開始したい場合は「サービスの開始」を押します
これで Unity Accelerator のダッシュボードに接続できれば正常に開始できています

Mac OS X の場合

launchctl stop com.unity3d.accelerator

Unity Accelerator を停止したい場合はターミナルで上記のコマンドを実行します
実行後に Unity Accelerator のダッシュボードに接続できなければ正常に停止できています

launchctl start com.unity3d.accelerator

Unity Accelerator を開始したい場合はターミナルで上記のコマンドを実行します
実行後に Unity Accelerator のダッシュボードに接続できれば正常に開始できています

Mac OS X におけるサービス名の補足

https://docs.unity3d.com/Manual/UnityAccelerator.html

公式ドキュメントには Unity Accelerator の停止や開始をする時のサービス名は

com.unity.accelerator

だと記載されていたので

launchctl stop com.unity.accelerator

最初は上記のコマンドで停止しようとしたのですが、停止できなかったため

launchctl list

でサービス名の一覧を表示してみたところ

com.unity3d.accelerator

Unity Accelerator のサービス名がこちらになっていました
launchctl で Unity Accelerator の停止や開始がうまく行かない場合は
サービス名をご確認いただければと思います

すべてのキャッシュの削除

Unity Accelerator に保存されているすべてのキャッシュを削除したい場合は
Unity Accelerator を停止してから

  • Windows:C:\Users\【ユーザー名】\AppData\Local\UnityAccelerator
  • Mac OS X:/Users/【ユーザー名】/Library/Unity/accelerator

上記のフォルダ内の

  • cachedb
  • cachedbpending

これらのフォルダを削除してから Unity Accelerator を開始します
これですべてのキャッシュの削除ができます

キャッシュ削除してもダッシュボードの表示は更新されない?

f:id:baba_s:20200911153708p:plain

すべてのキャッシュを削除してからダッシュボードを確認したところ
「Internet Data Downloaded into cache」の容量が 0B になっていませんでした

この項目は「現在のキャッシュの容量」ではなく
「これまでにキャッシュに保存されたデータの総サイズ」かもしれません(未確認)

まとめ

以上が Unity Accelerator の基本的な使い方になります

他にも

  • キャッシュのアップロード・ダウンロードの ON / OFF を設定する
  • コマンドラインを使用して特定のキャッシュを削除する
  • Unity プロジェクト起動時にコマンドラインで Unity Accelerator の設定を上書きする

などがありますが、機会があればまた別の記事で紹介いたします

参考サイト様