Search Unity

Unity Accelerator でチームの作業をスピードアップ

, 9月 11, 2019

Unity Accelerator を使うと、プロジェクトの更新にかかる時間を最大 90% 短縮できることにより、チームはより速くイテレーションすることができます!

誰だって待つのは好きではありません ― それがコーヒーメーカーで朝一番に飲むおいしいコーヒーを作る時間(これは正直、かなり重要)でも、ローカルのプロジェクトに最新のソースコードの変更をダウンロードするときでも、Unity エディターに初めてソースコードの新しい変更をロードするときでも。私たちは、一杯のコーヒー作りをお手伝いすることはできませんが、Unity Accelerator を使っていただくことで、すべての Unity 開発者のワークフローにとって重要な要素である、ソースコードの変更によって発生するダウンロードや読み込み時間を大幅に短縮することができます。

Unity Accelerator は、ローカルネットワークプロキシおよび Collaborate を用いたアセットパイプラインを通じたインポートとソースコードのダウンロードの 2 つの主要なシナリオのイテレーション時間を高速化するキャッシュサービスです。この改良されたワークフローにより、定期的なブロッカーの待ち時間を大幅に短縮し、あなたとあなたのチームが重要なこと、すなわち開発ができるような状況に戻すことを可能にしました!

Asset Pipeline Importing

ローカルプロジェクトでアセットが自動的に変更されたことを Unity が検出すると、アセットは Unity で読み取り可能にして自動的に変換されます。このプロセスはアセットパイプラインによるインポートとして知られています。これは、より多くの変更が検出されると指数関数的に増加する時間のかかるプロセスになる場合があります。Unity 2019.3 では、新しいアセットをインポートをするパイプラインのバージョンが導入され、インポートプロセス全体の性能、拡張性および信頼性が向上しました。さらに、Unity 2019.3 では、オンデマンドでプラットフォームの切り替えを高速化する機能やバックグラウンドプロセスとしてインポートする機能など、他の実験的な機能も利用可能です。詳細については、こちらをご覧ください。

仕組み

Unity Accelerator は、変換されたアセットのローカルネットワークキャッシュをチーム全体に提供することにより、新しいアセットのインポートパイプラインを増やします。つまり、実際インポートを実行する必要があるのは 1 人だけで、結果は自動的に Unity Accelerator にキャッシュされます。次に、チームメンバーが同じバージョンのアセットをインポートするときに、ローカルマシンでインポートプロセスを開始する前にキャッシュが最初にチェックされます。

Collaborate を使ってソースコードをダウンロードしよう

ソース管理の重要な課題の 1 つは、アセットを迅速に共有することです。多くの場合、ファイルサイズが大きいか、インターネットの帯域不足のために問題が発生します。Unity Accelerator によって、Collaborate のローカルプロジェクトを最新のリビジョンに更新するとき、アセットのダウンロード待ちのブロックされている時間が短縮されます。また、サービスダッシュボードで性能をモニターすることもできます。これにより、全体的な効率(過去 24 時間)、配信バイト数、節約された時間など、重要なメトリクスが表示されます。

弊社の内部テストでは、プロジェクト更新の待機時間を最大 90% 短縮できたことが示されています!以下は弊社で行ったテストのメトリクスの一例です。

ダウンロードサイズ ファイル数 Accelerator にキャッシュされているファイルがない場合 すべてのファイルが Accelerator にキャッシュされている場合
100 MB ~12,000 6 分 30 秒

仕組み

Unity Accelerator は、Collaborate サービスのプロキシおよびキャッシュです。ローカルネットワークで設定すると、新しいファイルは Collaborate クラウドサービスにアップロードされる途中で(つまり、パブリッシュするたびに)キャッシュされます。同じローカルネットワーク上にいるチームメンバーが次にプロジェクトを更新すると、Unity Accelerator は最初にファイルのコピーをキャッシュでチェックしてから、ダウンロードするサービスに接続します。

Unity Accelerator には、リモートチームメンバーによってパブリッシュされているソースを事前読み込みする機能もあります。たとえば、3 人のゲーム開発者(Alice、Sam、Joe)が同じプロジェクトに参加しているとします。彼らは以下のような分散チームです。

  1. Sam は、彼女のネットワーク上に Accelerator がインストールされていないリモート開発者です。
  2. Alice と Joe はローカルネットワークを共有し、Accelerator がインストールされています。

Sam は Unity 内でパブリッシュするたびに Collaborate サービスと直接話します。Alice と Joe が使用する Accelerator は、Sam が行った新しいパブリッシュに関して Collaborate のサービスを自動的にモニターし、パブリッシュが行われるとダウンロードします。次に、Alice と Joe がローカルプロジェクトにそれらを更新する準備ができたら、Collaborate のサービスを使わずに、Accelerator から直接取り込みます。

始めよう

Unity Accelerator は、 OSXWindows、および Linuxでダウンロード可能なスタンドアロンのツールです。Collaborate の 2019.3 Beta 1 以降のバージョンと互換性があり、Asset Pipeline Import プロセスのサポートは、今後の 2019.3 ベータ版リリースでご利用できます。ベータフォーラム、Acceleratorフォーラム、およびエディターリリースノートを常に注目していただき、Accelerator の Asset Pipeline Import 機能がいつ利用可能になるかを確認しましょう。Asset Pipeline Import 機能は完全に無料でご利用できますが、Collaborate のソース管理機能については、Unity Teams Advanced サブスクリプションが必要です。

さらに、Asset Pipeline Import 機能は完全に無料でご利用いただけますが、Collaborate のソース管理機能は Unity Teams Advanced のサブスクリプションが必要です。 作業の開始方法に関しては、こちらをご覧ください。

 


 

よくある質問

コメント欄およびフォーラムにフィードバックをお寄せいただきありがとうございます!ご質問への回答に役立つ短い Q&A をまとめました。

 

Unity Accelerator とキャッシュサーバーとの違いは何ですか?

最も重要な違いは、元のキャッシュサーバーが Asset Pipeline v1 のみをサポートしていることです。Unity Accelerator は、Asset Pipeline v2(近日公開予定)と Collaborate のサービス(現在利用可能)を用いたソースコードの両方に対応するキャッシングを追加します。

Unity Accelerator のもう 1 つの大きな利点は、Asset Pipeline v2 および/または Collaborate のサービスで使用する場合、自動ディスクストレージ管理を備えていることです。つまり、不要なアセットやソースを定期的にクリーンアップするということです。元のキャッシュサーバーでは、チームは追加のツールを使用してディスク領域を管理する必要がありました。

3 つめの違いとしては、Unity Accelerator は転送されたバイト数、接続されたエディターなどの有用な情報を提供するメトリクスも公開することです。これらは、Prometheus の取得している測定値としてホストされ、ローカルネットワークから /metrics を呼び出すことでクエリできます。

 

Unity Accelerator のインストールウィザードでキャッシュサーバーをインストールできることに気が付きました。 これは新しい機能なのでしょうか?

キャッシュサーバーに新しい機能を追加していません。 Unity Accelerator のインストールウィザードにその機能が含まれたので、チームはインストールを管理するのに一箇所に移動するだけで済みました。

 

キャッシュサーバーには、各エディターのリリースで常に新しいバージョンがリリースされています。Unity Accelerator のインストーラーで使用されるのはキャッシュサーバーのどのバージョンですか?

2019.3 で使用されている Asset Pipeline v1 と最も互換性のあるバージョンをバンドルしています。古いバージョンを実行していて、それらをサポートするキャッシュサーバーが既にある場合は、Unity Accelerator に付属しているものをインストールする必要はありません。

 

Unity Accelerator の各インスタンスは、特定の Unity バージョンのみをサポートしますか、それとも複数の同時にインストールされた Unity や、Unity バージョンの異なるプロジェクトで動作しますか?

Unity Accelerator は、下位互換性を維持し、2019.3 以降の Asset Pipeline v2 および Collaborate サービスの全バージョンをサポートします。これをシームレスに行えるように、必要に応じて自動的にアップグレードします。

 

ソース管理のキャッシュは Collaborate でのみ動作しますか?

現在サポートされているソース管理は、Collaborate のみです。今後は、他のソース管理をサポートする可能性を検討しております。

11 コメント

コメントの配信登録

コメント受付を終了しました。

  1. Richard Bates

    9月 16, 2019 12:43 pm

    Even with the cache server, switching platforms takes 10 minutes on our project. Please also consider:
    * Multi-threading the asset hash calculation phase.
    * Pipelining network requests to the cache server.

  2. Jean Serien

    9月 13, 2019 2:46 am

    How does the Accelerator differs from the cache server?

  3. Hey!

    Thanks for the blog post, would using Accelerator require using Collaborate as well or will it work with other version control solutions as well? If so which ones will be/are supported?

  4. Does this tool intend to replace cache server completely or they will coexist?
    Are they somehow different? (Accelerator and Cache Server)

    1. Stacey Haffner

      9月 11, 2019 9:09 pm

      Great question! The Cache Server supports Asset Pipeline v1 only. The Accelerator supports Asset Pipeline V2 (available in 2019.3). They’ll coexist for the foreseeable future. You can actually use the Accelerator wizard to install the legacy cache server.

  5. Uhh that’s exactly what Cache Server does already. Why are you making a new tool that’s exactly like an old tool?

  6. These are great improvements for large and distributed teams. For the indie developer, who likely develops for many platforms on a single machine — has the asset transformation cost of switching platforms been resolved? Here’s the scenario — I have a game with 5GB of content. Space is cheap and I ship to multiple (say 5) platforms. Instead of storing transformed platform assets in separate folders (for 25GB of aggregate transformed storage) Unity stores transformed assets in a single location, which gets reset when a platform change occurs. As a result, switching platforms to check a quick bug or behavior — could kill hours (even a day!) of productivity. The answer then was to install and run a cache server, which shouldn’t be necessary for indie developers. Disk space is cheap. I hope this is addressed going forward!

    1. I absolutely agree with Shaun here.
      (Shaun, with existing tech, if you want to be able to more easily switch between platforms using cheap disk space, just keep multiple copies of the same project in multiple folders, each one for a different platform, and never switch platform inside each of them. Use your versioning tool of choice to update whatever platform you want to work on – you should be using versioning tools even if you’re a one-person team).

    2. Hi Shaun,
      The Asset Pipeline V2 enables fast platform switching in 2019.3. It is available to test now in the 2019.3 Beta.

      Assets will still need to be imported for all the platforms your project supports, but once imported for the different targets, switching between projects take significantly less time, due to the new Asset pipeline being able to store multiple instances/variants of the same source asset.

      When combined with on-demand and background importing, Unity will import changes for all project platforms while you can continue working.

      Thanks for your question!
      Martin Gram
      Product Manager Lead EMEA and Core R&D

    3. Ciro Continisio

      9月 12, 2019 11:30 am

      To Shaun and Petrucio:
      Even if you are on an older version of Unity, you don’t need to go through the pain of duplicating the project folder as Petrucio mentioned. If I understand it correctly, you want it so that when you switch platforms again (so going back to an already-imported one), Unity doesn’t rebuild the Library on your machine. That is possible already.
      Just go to the Preferences > Cache Server, make sure you’re on Asset Pipeline v1, and enable Cache Server Mode: Local. You now have a local cache folder where the Library is kept in case you switch platforms.