(注)現在では、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 の一覧を表示します。このうち 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
アセットサーバーを効果的に使用するために十分な知識が身についたはずです。自身の作業に取り掛かって、よいワークフローの基本を忘れないでください。変更は頻繁にコミットして、何か失うことを怖れる必要はありません。