(注)現在では、Asset Server は旧製品となります。Unity プロジェクトのバージョン管理の観点から、Plastic SCM や Perforce の使用をお勧めします。
Unity Asset Server は Unity に統合された GUI つきのアセットおよびバージョンの管理システムです。チームのメンバーが別々のコンピューターで同じロケーション、またはリモートでプロジェクトの共同作業を行うことを目的としています。Asset Server は、複数のギガバイトのプロジェクトフォルダーを扱い、大容量のバイナリアセットを処理するために最適化されています。アセットをアップロードするとき、Import Settings とその他の各アセットのメタデータも Asset Server にアップロードされます。ファイルの名称変更と移動はこのシステムの核であり、優れた対応が可能です。
チームライセンスユーザーのみ利用可能です。チームライセンスを購入するには (Unity Pro の一部としての使用以外の場合)、http://unity3d.com/store の Unity ストアにアクセスしてください。
Asset Server は古い製品で、もうメンテナンスされない事に注意してください。
もしソース管理のソフトウェアを以前に使用したことがない場合、どのようなバージョン管理システムであっても最初は少し使いにくく感じるかもしれません。ソース管理はすべてのアセットをひとまとまりに格納することで動作します - メッシュ、テクスチャ、マテリアル、スクリプト、その他のすべて - をなんらかのサーバーのデータベースに格納します。そのサーバーは Unity 実行に使用しているのと同じ、自身のホームコンピューターかもしれません。ローカルネットワーク上の別のコンピューターかもしれません。世界のまったく異なる箇所におかれたリモートマシンかもしれません。バーチャルマシンでさえあるかもしれません。オプションはたくさんありますが、サーバーの場所はまったく関係がありません。重要なことはネットワークを通して何らかの方法でアクセスすることができて、ゲームデータを格納できるということです。
ある意味において、Asset Server はプロジェクトフォルダーのバックアップとして機能します。開発している間は、アセットサーバーのコンテンツを直接操作しません。ローカル上でプロジェクトに変更を加え、完了したときにサーバー上のプロジェクトに対して 変更のコミット を行います。これによりローカルプロジェクトおよび Asset Server プロジェクトは完全に同一になります。
さて、仲間の開発者が変更を行うと、Asset Server は仲間のプロジェクトと完全に同一になりますが、自身のものとは異なります自身のローカルプロジェクトを同期するには サーバーからの更新 のリクエストを行います。これで、チームメンバーが行った変更はサーバーから自身のローカルプロジェクトにダウンロードされます。
これが Asset Server を使用した基本的なワークフローです。基本的な機能に加えて、Asset Server を使うと、過去バージョンのアセットへのロールバック、詳細なファイル比較、2 つの異なるスクリプトのマージ、コンフリクトの解決、削除されたアセットの回復などが行えます。
Asset Server は 1 回限りのサーバー設定と各ユーザーのクライアント設定が必要です。これを行う方法については Asset Server の設定 を参照してください。
このページの残りで、Asset Server をデプロイ、管理、日常的に使用する方法を説明します。
このセクションでは Asset Server を日常的に使用する上で良くあるタスク、ワークフロー、上手な使い方について説明します。
Asset Server にすでに大量の作業データが格納されているチームに加わる場合、準備を開始し正しく運用するには、以下がもっとも早い方法です。
Asset Server を複数人数のチームで使用するとき、一般的には、作業を始める前にすべての変更されたアセットをサーバーから更新するのが良く、1 日の終わり、または作業終了時に自身で変更したものをコミットするのがよい習慣です。さらに、何か顕著な進捗があった場合は、日の途中であっても変更をコミットすべきです。変更を定期的かつ頻繁に行うことを推奨します。
Server View は Asset Server に接続しているウィンドウです。サーバービューを開くには Window->Version Control を選択します。
サーバービューは Overview、Update、Commit の 3 つのタブに分かれています。Overview は自身のローカルプロジェクトとサーバーにある最新版の差分を表示し、ローカルの変更を素早くコミットしたり、最新のアップデートをダウンロードできます。Update は、リモートのサーバー上の最新の変更を表示し、それらをローカルプロジェクトにダウンロードできます。Commit は、他の人がダウンロードできるように Changeset を作成してサーバーにコミットできます。
Asset Server を使用する前にそこに接続する必要があります。このためには Connection ボタンをクリックして、Connection 画面を表示します。
以下は入力する必要があるフィールドです。
Show Projects をクリックすると Asset Server での利用可能なプロジェクトが表示されます。どのプロジェクトに接続するかを選択し、Connect をクリックします。Username と Password はシステム管理者から入手します。システム管理者が Asset Server をインストールしたときにアカウントを作成しています。
サーバーからすべての更新をダウンロードするには、Overview タブから Update タブを選択し、コミットされた最新の Changesets の一覧を表示します。このうち 1 つを選択すると、プロジェクトで何が変更されたか、コミットメッセージとともに見ることができます。Update をクリックすると、すべての Changeset の更新のダウンロードが開始されます。
ローカルプロジェクトに変更を行った後、サーバーにその変更を格納する場合、Commit タブを使用します。
このタブで、前回のアップデート以降にプロジェクトに対して行われたすべてのローカルの変更を参照し、どの変更をサーバーにアップロードするかを選択できます。Changeset に変更を加えるには、Changeset フィールドに手動でドラッグするか、または Commit Message フィールドの下方にあるボタンを使用するか、いずれかの方法で行います。コミットメッセージの入力を忘れないで下さい。バージョン比較を行ったり、後ほど過去バージョンに戻す際に役立ちます。両方とも以下で説明します。
複数の人が同じデータの集合で作業をする以上、競合は必然的に発生します。あわてる必要はありません。競合が発生したら、Conflict Resolution (競合の解決) ダイアログが、プロジェクト更新時に提示されます。
ここで、各競合が通知され、それぞれを解決するためのオプションが提示されます。どの場合も、Skip Asset (サーバーからアセットをダウンロードしない)、Discard My Changes (アセットの自身のローカルバージョンをサーバーバージョンで完全に上書きする)、または Ignore Server Changes (他の人がアセットに対して行った変更を無視して、この更新の後で、自身のローカルでの変更をサーバーバージョンにコミットし上書きする) から、コンフリクト毎に選択できます。加えて、スクリプトのようなテキストアセットの場合は、 Merge を選択して、ローカルバージョンとサーバーバージョンをマージできます。
注意 Discard My Changes を選択すると、アセットはサーバーの最新バージョンに更新されます (すなわち、作業をしている間に、他の人が加えた変更が反映されます)。アセットを作業前の状態に戻したい場合は、チェックアウトした時点のバージョンに戻すべきです (後述の、リビジョン履歴の参照とアセットを元に戻す方法を参照してください)。
ローカルへの変更をコミットする際に競合が発生する場合、Unity は変更のコミットを拒否して競合が発生していることを知らせます。競合を解決するには、Update を選択します。ローカルで行われた変更は自動的には上書きされません。この時点で Conflict Resolution ダイアログが表示され、前述の段落の説明の通りになります。
Asset Server はアセットのアップロードされたすべてのバージョンをデータベースに保存しているため、いつでもローカルのバージョンを過去のバージョンに戻すことができます。プロジェクト全体を復元するか、単独のファイルを復元するかいずれかを選択できます。アセットまたはプロジェクトの過去バージョンに戻すには、Overview タブを選択して Asset Server Actions の下に表示されている Show History をクリックします。これですべてのコミットの一覧が表示され、いずれかのファイルまたはプロジェクト全体を過去のバージョンに復元することができます。
ここでは、バージョン番号と追加されたコメントを各アセットまたはプロジェクトのバージョンとともに参照できます。適切なコメント文が役立つ理由の 1 つがこれです。いずれかのアセット選択してその履歴を参照するか Entire Project を選択してプロジェクトに対して行われたすべての変更を参照します。必要なリビジョンを探します。リビジョン全体を選択するか、リビジョンの中の特定のアセットを選択できます。次に Download Selected File をクリックして、選択したリビジョンのファイルでローカルアセットを置き換えます。Revert All Project はプロジェクト全体を選択したリビジョンに戻します。
戻す前に、ローカルバージョンと選択したサーバーバージョン間に違いがある場合、それらの変更はローカルバージョンが戻されたときに失われます。
もしローカルのファイルに行われた変更を破棄したいだけの場合、戻す必要はありません。Main Asset Server ウィンドウで Discard Changes を選択することでローカルへの変更を破棄できます。これによりサーバーにあるプロジェクトの最新バージョンをローカルプロジェクトに即時にダウンロードします。
2 つの特定のバージョンの違いが気になる場合、それらを明示的に比較することができます。これをするためには History ウインドウを開き、比較を行いたいリビジョンとアセットを選択して、Compare to Local Version をクリックします。もし 2 つの異なるアセットのリビジョンを比較する必要がある場合、右クリックしてコンテキストメニューで Compare to Another Revision を選択し、次に比較したいリビジョンを探して選択します。
注意 この機能を実行するためにはサポートされている diff/merge ツールがインストールされている必要があります。サポートされているツールは以下の通りです。
ローカルアセットを削除してサーバーにその削除をコミットしても、実際はアセットは永続的に削除されているわけではありません。アセットの過去バージョンのように、Overview タブの History ウィンドウを通して復元できます。
Deleted Assets アイテムを展開して、アセットを一覧から選択し、Recover を押すと、選択されたセットはダウンロードされ、ローカルプロジェクトに再び加えられます。削除前にアセットが保存されていたフォルダーがまだ存在する場合は、アセットは元の場所に配置され、そうでない場合はローカルプロジェクトの Assets フォルダーのルートに加えられます。
Asset Server を使用するにあたって役立つ、有効な使用法とよくある問題を集めてみました。
psql -U unitysrv -d template1 -c“alter role admin with password ‘MYPASSWORD’”
ProgramFiles\Unity\AssetServer\log
/Library/UnityAssetServer/log
アセットサーバーを効果的に使用するために十分な知識が身についたはずです。自身の作業に取り掛かって、よいワークフローの基本を忘れないでください。変更は頻繁にコミットして、何か失うことを怖れる必要はありません。