旧トピック
Asset Server のセットアップ

アセットサーバー (チームライセンス)

Unity アセットサーバー概要

Asset Server は、すでに過去の製品である事を覚えておいてください。Unity プロジェクトでのバージョンコントロールには Plastic SCMPerforce の使用をお勧めします。

PlasticSCM PerForce

Unity Asset Server は Unity に統合された GUI つきのアセットおよびバージョンの管理システムです。チームのメンバーが共同して別々のコンピューターにより同じロケーション、またはリモートでプロジェクト作業を行えるようにすることが主眼になっています。アセットサーバーは、複数のギガバイトのプロジェクトフォルダーを取り扱って、大容量のバイナリアセットをハンドリングするために最適化されています。アセットをアップロードするとき、Import Settings およびその他の各アセットのメタデータもともにアセットサーバーにアップロードされます。ファイルのリネームおよび移動はこのシステムの中心であり、優れた対応ができます。

チームライセンスユーザーのみ利用可能です。チームライセンスを購入するには、http://unity3d.com/store の Unity ストアにアクセスしてください。

Asset Server は古い製品で、もうメンテナンスされない事に注意してください。

ソース管理はまだ初心者?

もしソース管理のソフトウェアを以前に使用したことがない場合、どのようなバージョン管理システムであっても最初は少し不親切に感じるかもしれません。ソース管理はすべてのアセットのセットを格納することで動作します - メッシュ、テクスチャ、マテリアル、スクリプト、およびその他のすべて - をなんらかのサーバーのデータベースに格納します。そのサーバーは Unity 実行に使用しているのと同じ、自身のホームコンピューターかもしれません。ローカルネットワーク上の別のコンピューターかもしれません。世界のまったく異なる箇所におかれたリモートマシンかもしれません。バーチャルマシンでさえあるかもしれません。オプションはたくさんありますが、サーバーの場所はまったく関係がありません。重要なことはなんらかネットワーク上でアクセスすることができて、ゲームデータを格納してくれるということです。

ある意味において、アセットサーバーはプロジェクトフォルダーのバックアップとして機能します。開発している間は、アセットサーバーのコンテンツを直接操作しません。ローカル上でプロジェクトに変更を加え、完了したときにサーバー上のプロジェクトに対して Commit Changes を行います。これによりローカルプロジェクトおよびアセットサーバープロジェクトは完全に同一になります。

次に、仲間の開発者が変更を行ったとき、アセットサーバーは仲間のプロジェクトと完全に同一になりますが、あなた自身のものとは別になります。ローカルプロジェクトを同期するには Update from Server のリクエストを行います。これで、チームメンバーが行った変更はサーバーからあなたのローカルプロジェクトにダウンロードされます。

これがアセットサーバーを使用した基本的なワークフローです。基本的な機能に加えて、アセットサーバーは過去バージョンのアセットへのロールバック、詳細なファイル比較、異なるスクリプトのマージ、コンフリクトの解消、削除されたアセットの回復などの機能が提供されています。

アセットサーバーのセットアップ

アセットサーバーはワンタイムのサーバーセットアップおよび各ユーザーのクライアント設定が必要です。これを行う方法については アセットサーバーセットアップのページ を参照してください。

このガイドの残りで、アセットサーバーをデプロイ、管理、定期的に使用する方法を説明します。

アセットサーバーの日常的な使用方法

このセクションではアセットサーバーを日常的に使用するうえで良くあるタスク、ワークフロー、およびベストプラクティスについて説明します。

はじめに

もしアセットサーバーにすでに大量の作業が格納されているチームに加わる場合、次の手順により開始して作業を正しく始めるのにもっとも早い方法です。

  1. 新規に空のプロジェクトを、パッケージはすべてインポートせずに作成
  2. メニューから Edit->Project Settings->Editor を選択して、 Asset Server を version control mode として選択
  3. メニューから Window->Version Control を選択
  4. Connection ボタンをクリック
  5. ユーザー名とパスワードを入力(アセットサーバー管理者により提供されたもの)
  6. Show Projects をクリックし、希望のプロジェクトを選択
  7. Connect をクリック
  8. Update タブをクリック
  9. Update ボタンをクリック
  10. コンフリクト発生時は、ローカルバージョンをすべて破棄
  11. アップデートが完了するのを待機
  12. 準備完了

ワークフローの基礎

アセットサーバーを複数人数のチームで使用するとき、一般的には、作業を始める前にサーバーからすべてのアセットを更新するのが良く、日の終わりまたは作業終了時に変更をコミットするのがよい習慣です。さらに、何か顕著な進捗があった場合は日の途中であっても変更をコミットすべきです。変更を定期的かつ頻繁に行うことを推奨します。

サーバービューを理解する

Server View はアセットサーバーに接続しているウィンドウです。サーバービューを開くには Window->Version Control を選択します。

Overview タブ
Overview タブ

サーバービューは次のタブに分かれています: OverviewUpdate および CommitOverview によりローカルプロジェクトおよびサーバーにある最新版の差分を表示し、ローカルの変更をクイックにコミットして、最新のアップデートをダウンロードできます。Update により、リモートのサーバーでの最新の変更を表示しローカルプロジェクトにダウンロードできます。Commit により Changeset を作成してサーバーにコミットして、他の人がダウンロードできるようにします。

サーバーへの接続

アセットサーバーを使用する前にそこに接続する必要があります。このためには Connection をクリックして、接続画面を表示します。

アセットサーバー接続画面
アセットサーバー接続画面

次に入力する必要があるのは:

  1. サーバーアドレス
  2. ユーザー名
  3. パスワード

Show projects をクリックすることで Asset Server での利用可能なプロジェクトが表示され、どれに接続するか Connect をクリックして選択します。ユーザー名とパスワードはシステム管理者から入手することに注意してください。システム管理者が Asset Server をインストールした際にアカウントを作成しています。

サーバーからのアップデート

サーバーからすべてのアップデートをダウンロードするには、Overview タブから Update タブを選択し、コミットされた最新の Changesets の一覧を表示します。これのうちひとつを選択することで、プロジェクトに何が変更されたか、コミットメッセージとともに参照することができます。Update をクリックすると、すべての Changeset アップデートのダウンロードが開始されます。

Update タブ
Update タブ

サーバーに変更をコミットする

ローカルプロジェクトに変更を行っ他後、サーバーにその変更を格納する場合、Commit タブを使用します。

Commit タブ
Commit タブ

これでプロジェクトに対して、前回のアップデート以降に行われたすべてのローカルの変更を参照できるようになり、どの変更をサーバーにアップロードするかを選択することができます。Changeset に変更を追加するには、Changeset フィールドに手動でドラッグするか、またはコミットメッセージフィールドの下のボタンを使用するか、いずれかの方法で行います。コミットメッセージを入力することで、バージョン比較を行ったり、後ほど過去バージョンに切り戻す際に、役立つことを忘れないでください。両方とも以下で説明します。

コンフリクトの解決

複数の人が同じデータの集合で作業をする以上、コンフリクトは必然的に発生します。あわてる必要はありません。コンフリクトが発生した場合、Conflict Resolution (コンフリクト解決) ダイアログが、プロジェクトアップデート時に提示されます。

Conflict Resolution 画面
Conflict Resolution 画面

ここで、各コンフリクトが通知され、コンフリクト毎に解決するためのオプションがそれぞれ提示されます。どのコンフリクトの場合も、Skip Asset (サーバーからアセットをダウンロードしない)、Discard My Changes (アセットのローカルバージョンをサーバーバージョンで完全に上書きする)、または Ignore Server Changes (他の人がアセットに対して行った変更を無視して、サーバーバージョンを、自分が変更を加えたローカルバージョンで上書きコミットする)から、コンフリクト毎に選択できます。加えて、スクリプトのようなテキストアセットの場合は、 Merge を選択する事で、ローカルバージョンとサーバーバージョンを結合できます。

注意: 自分が加えた変更を破棄することを選択した場合、アセットはサーバー上にある最新版に更新されます(すなわち、自分が作業をしている間に、他の人が加えていた変更が反映されます)。アセットを作業前の状態に戻したい場合は、チェックアウトした時点のバージョンに戻すべきです(以下にある、リビジョン履歴の参照とアセットを元に戻す方法を参照してください)。

もしローカルへの変更をコミットする際にコンフリクトが発生した場合、Unity はコミット変更を拒否してコンフリクトが発生していることを知らせます。コンフリクトを解決するには、Update を選択します。ローカルへの変更は自動的には上書きされません。この時点で Conflict Resolution ダイアログが表示され、前述の段落の説明に従います。

リビジョン履歴の参照とアセットを切り戻す方法

アセットサーバーはアセットのアップロードされたすべてのバージョンをデータベースに保存しているため、いつでもローカルのバージョンを過去のバージョンに切り戻すことができます。プロジェクト全体をリストアするか、単独のファイルをリストアするかいずれかを選択できます。アセットまたはプロジェクトの過去バージョンに切り戻すには、Overview タブを選択して Asset Server Actions の下に表示されている Show History をクリックします。これですべてのコミットの一覧が表示され、いずれかのファイルまたはプロジェクト全体を過去のバージョンにリストアすることができます。

History ダイアログ
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 ウィンドウを通してリストアできます。

History ダイアログ
History ダイアログ

Deleted Assets アイテムを展開して、アセットを一覧から選択し、Recover を押すと、選択されたセットはダウンロードされ、ローカルプロジェクトに再び追加されます。もし削除が行われたアセットが配置されたフォルダーがまだ存在する場合、アセットは元の場所に配置され、そうでない場合はローカルプロジェクトのルートの Assets フォルダーに追加されます。

ベストプラクティスおよび良くある問題

アセットサーバーを使用するにあたって役立つ、ベストプラクティスおよび良くある問題を集めてみました。

  1. とにかくバックアップ
    • データベースのバックアップを維持してください。これは非常に重要な事です。不運な場合は、ハードウェアの問題、ウィルス、ユーザーエラー等々の原因で、作業をすべて失う可能性があります。このためバックアップシステムを用意してください。バックアップシステムを準備するための Web 上の情報はたくさんあります。
  2. マシンのシャットダウン前にサーバーを停止する
    • これにより PostgreSQL (アセットサーバー) のログで “早いシャットダウン” が生成されることを回避できます。もしこれが発生した場合、アセットサーバーは不適切なシャットダウンに伴うリカバリを行う必要があります。これは大規模プロジェクトでコミットがたくさんある場合、長い時間かかる可能性があります。
  3. コンソールからパスワードをリセットする
    • シェル、コンソール、またはコマンドラインから次のコマンドにより直接パスワードをリセットできます。

      psql -U unitysrv -d template1 -c"alter role admin with password 'MYPASSWORD'"

  4. アセットサーバーに接続できない
    • パスワードの有効期限が切れたかもしれません。パスワードをリセットしてみてください。
    • さらにユーザー名は大文字小文字を区別します: “Admin” != “admin”。大文字または小文字が正しいことを確認してください。
    • サーバーが実行中であることを確認してください。
      • OS X または Linux ではターミナル上で次のように入力できます: ps -aux
      • Windows ではタスクマネージャを使用できます。
    • アセットサーバーがネットワーク上でひとつ以上のコンピューターないかを確認します。間違った方に接続している可能性があります。
  5. アセットサーバーが 64 ビット Linux で動作しない
    • アセットサーバーは必要パッケージの 32 ビット版をインストールすれば 64 ビット Linux が正しく動作します。これを行うには “dpkg -i –force-architecture” を使用します。
  6. アセットサーバーログを使用してより多くの情報を取得します
    • Windows:
      • ProgramFiles\Unity\AssetServer\log
    • OS X:
      • /Library/UnityAssetServer/log
  7. Windows XP で「アプリケーションを正しく初期化できませんでした (0xc0000135)」
    • この場合は Windos XP SP2 が必須で、.NET 2.0 をインストールする必要があります。

アセットサーバーのトレーニングはこれで完了

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

旧トピック
Asset Server のセットアップ