ソースコードだけでなく、すべてのアセット、テクスチャ、アート、ドキュメントファイルなどをバージョン管理のためにgitリポジトリの下で管理するのが普通ですか?たとえば、テクスチャの古いバージョンを取り戻したいです。非常に悪い習慣である場合、アセットやその他のもののバージョン管理にどのツールを使用しますか?
ソースコードだけでなく、すべてのアセット、テクスチャ、アート、ドキュメントファイルなどをバージョン管理のためにgitリポジトリの下で管理するのが普通ですか?たとえば、テクスチャの古いバージョンを取り戻したいです。非常に悪い習慣である場合、アセットやその他のもののバージョン管理にどのツールを使用しますか?
回答:
それはとても良い習慣だと思います。ソースおよび資産にはソース管理を使用する必要があります。あなたはそれをバックアップのように考えることができます、あなたはゲームを構築するために必要なすべてをソース管理から復元できるようにしたいです。
リポジトリへのアセットの保存に関する質問にリンクしました。アートを保存するために他のリポジトリよりも機能するリポジトリがいくつかあります。アートを「比較」して、変更点を確認することができます。その他は、アセットをバイナリデータとして扱うだけなので、違いを確認するにはアセットをチェックアウトする必要があります。これは、リポジトリがバージョン間で何が変更されたかを「認識」(解析)できないため、変更時にアセット全体をアップロードする必要があることも意味します。
すべてをリポジトリに保存します。新しいラップトップを手に入れたら、リポジトリをチェックアウトしてゲームをビルドできました。他の場所からアセットをコピーする必要はありませんでした。つまり、サードパーティのライブラリ、アセット、ソース管理をリポジトリに保存します。
Gitは非テキストファイルには適していません。大きなファイル拡張子(非標準、GUIでサポートされていないことが多い)や特別なコマンド(実行するにはgitの第一人者である必要があります)を使用しない限り、gitリポジトリのクローンを作成するには、ファイルのすべての履歴バージョンをダウンロードする必要があります。同じことがほとんどのDVCSシステムに当てはまります。テクスチャ、モデル、またはオーディオクリップの場合、これは非常に大きなファイルの多数のコピーをプルすることを意味します。1 GBのアセットは200 GBの履歴リビジョンデータを簡単に作成できます。gitを使用すると、新しいリポジトリを複製するときにすべてをダウンロードし、最新のリビジョンを取得するときにすべての中間リビジョンをダウンロードできます。これは、生産の遅延を最小限に抑えることができない場合に、将来の大きなボトルネックになります。
Subversion、Perforceなどは、目的のリビジョン(通常は最新)のダウンロードのみを必要とするため、アセットに適しています。アセットにのみ使用してコードにgitを使用するか、ソースにも使用できます。PERFORCEには、非常に不格好なDVCSのように機能するいくつかの機能があり、私の経験ではSVN機能(はるかに複雑ですが)よりも優れていますが、コストにより、Subversionを使用する可能性が高くなります。
ほとんどのコンテンツの専門家はDVCSをほとんど必要としませんし、何人かはとにかくクラシックVCSの基本さえも問題を抱えています。gitを使用しないでください。またはMercurial、DARCSなど
アーティストとしてプロジェクトに取り組んでいるときでも、何らかの形でバージョン管理が行われる傾向があり、ファイルの破損やバグが発生する傾向があります。ソース管理なしでは、アーティストはとにかくリビジョンの保存を行う傾向があり、これは大きな混乱です。
これの実例は、Blenderで作成されたオープンムービープロジェクト(Big Buck Bunny、Durianなど)です。
ゲームのアートパイプラインはほぼ同じですが、テクスチャ自体やモデル形式の変換など、ビッグファットデータからエンジン固有の形式への変換をアセット自体が行うためのビルドステップがある場合があります。
GitHubのような一部のツールは、優れた画像比較ツールなども提供しており、バイナリBLOBを比較するよりもはるかに優れています。
アセットリポジトリは非常に大きくなる可能性があるため、プロジェクトリポジトリのサブモジュールである個別のアセットリポジトリを保持することが私の好みです。たとえば、ソースを分岐するだけの場合は、ギガバイトのアセットをプルダウンする必要はありません。