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