Git ユーザーが Unity Version Control に切り替えるべき理由
Git は、オープンソースで柔軟性が高く、無料で使用できることから人気のバージョン管理ソリューション(VCS)ですが、現代テクノロジーに精通していないユーザーにとっては難しく感じることもあります。アーティストが問題に直面すると、その解決にプログラマーが必要になります。アーティストが使っているツールには対応せず、ゲーム開発につきもののサイズの大きなバイナリファイルの重さに負けてしまいます。

Sycoforge 制作『Return to Nangrim』
Git ユーザーが Unity Version Control から得られるメリット
Unity Version Control は、ゲーム開発向けに構築されています。Git からアップグレードすることで得られるものは、次のとおりです。

サイズの大きなリポジトリやバイナリファイルでも高速に処理する
Unity Version Control は、5 TB を超えるリポジトリにも対応し、他のソリューションよりも高速に更新とチェックインを処理します。

アーティストとのコラボレーションを改善する
アーティストは、ファイルをロックする機能を備えた使いやすいワークフローである Gluon を介して、Unity Version Control を独立して使用できます。プログラマーは、完全なブランチング機能とマージ機能を備えた標準のワークフローを引き続き使用できます。

集中型または分散型で作業する
VCS を選択することで、集中型と分散型のどちらで作業するかが決まることがよくあります。Unity Version Control は両方に対応しており、Git スタイルのワークフローのスピードとパワー、Perforce のようなスケーラビリティが得られます。

柔軟性を高めてメンテナンスをシンプルにする
Unity Version Control は追加設定なしで複数のワークフローやサイズの大きなファイルに対応するため、冗長なシステムやアドオンを保持する必要はありません。ツールチェインの無駄を省き、高いパフォーマンスを発揮できるよう維持しましょう。
Unity の DevOps ソリューションは、プログラマーにとって幅広い機能が備わっていながらも、アーティストにとって合理的に保たれています。何か足りていないものがある場合は、Unity の DevOps ロードマップでご確認ください。

時間を節約してタスク切り替えを最小限に抑える
Unity のコードアウェアなマージ技術である SemanticMerge を使用すると、移動されたコードを追跡し、関連する変更にのみ集中できるようになります。構文を解析することで、通常であれば手動でのマージが必要になる 16% から 30% のコードのマージを自動化し、ワークフローの邪魔になるマージの競合を大幅に減らします。
Unity Version Control はリファクタリングを解析し、メソッドなどのコードの一部が(複数のファイル間を含めて)移動されているかどうかを評価します。これにより、最も重要な変更にのみ注目してレビューすることができます。C#、Java、VB.NET などに対応します。

Unity Version Control を Git クライアントとして使用する
Unity Version Control の GitSync を使用すると、Version Control と Git 間で双方向同期を実行できます。Unity Version Control は Git のネットワークプロトコルと通信して、リモート Git サーバーとの間でパッケージとマージのプッシュ/プルを行います。これにより、Version Control GUI を Git クライアントとして使用できます。Unity Version Control と Git は構造が少し似ているため、その間ですべての変更セット、ブランチ、マージを交換できます。

高速なインポートとエクスポート
Unity Version Control には fast-import コマンドと fast-export コマンドが実装されています。各コマンドは、Git 側の対応するコマンドと完全に互換性があります。これらのコマンドは、Git から Unity Version Control にプロジェクトをインポートする際に使用されます。また、Version Control から移行する必要がある場合に、それを安全に行う方法としても使用されます。日常業務においては、GitSync を使用するほうが簡単です。

Git エコシステムを活用する
Git のエコシステム内の任意のツールを、そのツールのネイティブの Git 機能を使用して、Unity Version Control にすぐに接続できます。これにより、Version Control を使用しているチームが、Git 用に特別に開発されたすべての DevOps、CI、プロジェクト管理の統合のメリットを享受できます。
GitServer は、サーバー側の GitSync に対応するものです。Git のプロトコル(Git と HTTP に対応)を使用して、Unity Version Control がリポジトリに対応できるようにすることで、Git との相互運用性ループを閉じます。
さまざまなゲームでの活用事例
Goodbye Volcano High
作業者自身がオーナーである協同組合型のスタジオがどのようにして制作プロセスにてアーティストとエンジニアの足並みを揃えさせているのでしょうか?Plastic SCM(現在の Unity Version Control)を活用してコラボレーションを強化した KO_OP の事例をご覧ください。
Return to Nangrim
Sycoforge が Unity のツールをどのように活用して拡大するプロジェクトのスコープを管理し、ゲーム開発のスピードアップとイテレーションにプレイヤーのフィードバックを生かしているかをご覧ください。
Subnautica
Unknown Worlds が、『Subnautica』を制作するために Unity と Plastic SCM(現在の Unity Version Control)を選択した理由をご紹介します。
よくあるご質問
Unity Version Control は DVCS でもあります。そのため、まずコミット(チェックイン)を行ってから、変更をリモートリポジトリにプッシュするという、同じワークフローを使用します。Version Control では、必要に応じて集中型で作業することもできます。SVN のように、中間クローンなしで直接チェックインを実行することも可能です。
プログラマーにとってのお気に入りは DVCS でしょうが、アーティストやデザイナーにはおそらく集中型が好まれます。
はい。Unity Version Control でのあらゆる操作は、GUI から視覚的に実行できます。ブランチングやマージに関わるすべての操作は、ブランチエクスプローラーを使用して行います。
はい。部分レプリカを作成することもできます。つまり、あるブランチをその親やマージ元なしでプルし、変更を加えてプッシュバックできるということです。
Unity Version Control で複製されたリポジトリで作業を開始する際に、完全なリポジトリの「クローンを作成する」必要はありません。部分レプリカと呼ばれるものを実行し、そのリポジトリで作業を行い、新しい変更を加え、戻すだけです。このほうがはるかに高速です。
これは、深度が制限されているものの、プッシュバック可能なシャロークローンに相当します。
Unity Version Control のマージ機能の方がはるかに優れています。Version Control のマージエンジンは、Git では対応できない移動や名前の変更も処理できます。Unity Version Control には、独自の差分ツールやマージツールも用意されています。
Unity Version Control は膨大なサイズのファイルも処理できます。RAM に収まるサイズが上限ではありません。Version Control は膨大なサイズのリポジトリにも対応します。
「リモート」は Unity Version Control には存在しません。必要なブランチを必要なリポジトリに対してプッシュおよびプルするだけです。最初にリモートを定義する必要はありません。
Unity Version Control のサブモジュールは Xlink と呼ばれます。これは、サブモジュールの大幅に強化かつ簡略化されたバージョンです。Xlink を作成するのは簡単で、GUI に完全に対応しており、サブモジュールには更新という手間のかかるプロセスがありますが、Xlink にはありません。参照を手動で管理できます。Xlink が設定されたディレクトリの下のブランチは自動的に作成されるため、複数のリポジトリが存在するシナリオでの機能ブランチの作成が非常に簡単になります。
Git ベースのバージョン管理は幅広い機能を備えており、コミュニティのサポートを受けることができます。一方、Unity Version Control はさまざまなワークフローに柔軟に対応し、追加設定なしでサイズの大きなファイルを処理できます。ある組織で機能するものが別の組織でも機能するとは限りません。自分の組織にとって何がベストかを評価するヒントについては、こちらのブログで確認してください。
Unity Version Control は Git ではありませんが、Git ベースのシステムと同様に分散型バージョン管理(DVCS)が可能です。Unity Version Control には Git のすべての強みに加え、サイズの大きなファイルのサポート、一貫性のある GUI、ACL ベースのパーミッション、膨大なサイズのリポジトリの処理、強力なマージ機能、部分レプリカ、セマンティック差分などが備わっています。