ゲーム開発のバージョン管理-問題と解決策?[閉まっている]


106

SubversionGitMercurialなどのオープンソースシステムや、Perforceなどの商用システムなど、多くのバージョン管理システムが利用可能です。

ゲーム開発のプロセスをどの程度サポートしていますか?非テキストファイル(バイナリファイル)、大規模プロジェクトなどに関して、VCSを使用する際の問題は何ですか?もしあれば、これらの問題の解決策は何ですか?

回答を整理するために、パッケージごとに試してみましょう。結果で各パッケージ/回答を更新します。

また、VCSが無料か商用か、分散型か集中型かなどに関する簡単な説明を回答に記載してください。

更新:以下のVCSの2つを比較する素晴らしい記事が見つかりました-明らかに、GitはMacGyverであり、MercurialはBondです。まあ、私はそれが落ち着いてうれしいです...そして、著者は最後にいい引用を持っています:

分散型VCSにまだ切り替えていない人に改宗しても構いませんが、GitユーザーをMercurialに変換しようとすると(またはその逆)しようとすると、全員の時間とエネルギーが無駄になります。

特にGitとMercurialの本当の敵はSubversionであるためです。ダン、それはFOSSランドにあるコードイートコードの世界です...


注-これは、することを目的と置き換える質問gamedev.stackexchange.com/questions/245/...を。72時間以内にその質問を削除します。この質問に対する回答/コメントをコピーする時間を人々に与えるために、今のところは残しておきます。:)
サイクロプス

人々が編集手順に従うなら、これはおそらく私のお気に入りの質問の一つになるでしょう。D:今、このためにゲームのDev特定のソリューションに取り組んで
ジェシー・ドーシー

@Noctrine、あなたは免責事項を追加する必要がありました場合、あなたはしませんでしたか、?:) もちろん、人々は指示に従うでしょう...
Cyclops

他の質問は削除しないでください。トピックから外れている場合(そうではないと思います)、閉じてアーカイブすることができます。これを複製して閉じることもできます。
フィラスアサアド

@Firas、それ閉じられ、再び開かれました:)とにかく、私はこの定式化が優れていると思います(そしてはい、それはwikiです)-そして人々が答えをコピーする場合、これは他の質問のすべての情報カバーする必要があります。
サイクロプス

回答:


71

ギット

最近、私はGitの時流に乗っています(SVNとMercurialを使用しました)。これまでのところ、Gitで得られるものがとても気に入っています。セットアップに苦労することは決してなく、より多くの開発ツールがそれを採用し始めています。

分散バージョン管理システムです。これにより、独自の独立したトランクのような領域を持つことができます。私は自分の地域で働き、チェンジセットを非常に簡単に見るためにあなたを招待することができます。中央のレポをつぶすことなく、自分のスペースでロールバックできます。SVNでできることはすべて、ローカルでコミット、ブランチ、および実行できます。私はこのコントロールを持つことが本当に好きです。

SVNでは、コミットするためにリポジトリにアクセスする必要があります。外出中やインターネットのないカフェにいる場合はどうなりますか?良くない。

確かに、SVNははるかに簡単に学習できますが、分散ソース管理の利点は、学習曲線が少しあるという事実を大きく上回っていると思います。

また、マージの方が賢いことも気に入っています。

GITの大きな欠点は、履歴全体をローカルに保存することです。(はい、あなたはそれを減らすために手術を行うことができますが、それはデフォルトの動作です)。ソースファイルの場合はまったく問題ありませんが、ギガバイトの資産データを含む大規模なプロジェクトがある場合、すぐに問題になります。現在の経験では、GITは小規模またはソースのみのリポジトリにのみお勧めします。

それでもGITに興味がある場合は、http://thkoch2001.github.io/whygitisbetter/でいくつかの優れた情報/メトリックを確認してください。https://git.wiki.kernel.org/index.php/GitSvnComparsionも参照してください。


1
QAがメインラインに到達する前に変更をテストしたり、デモを簡単に作成および検証したりできるブランチ階層のアイデアが大好きです。
tenpn

@tenpn、それは一般に分散型VCSの機能ですか、それともGitですか?
サイクロプス

1
GitとMercurialの両方が非常に大きなファイルをそれらに押し込むと被害を受けると聞きました。私よりも多くの経験を持つ人々からのその噂の真実は何ですか?
-drhayes

6
Gitは優れていますが、100 MBを超えるような大きなグラフィックまたは音楽アセットの処理に関しては、コミットとチェックアウトの際に著しく遅くなります。現時点では、Gitの候補であるMercurialには、この特定の問題に対処する「大きなファイル」拡張子が付いています。多くのアセットを持たないゲームプロジェクトがある場合は、Gitを試してみてください。
スポーク

3
Gitのサブモジュールを使用してバイナリファイルを管理しないのはなぜですか?そうすれば、必要に応じて個別のリポジトリを作成し、サブモジュールを使用してそれらを結合できます。メインリポジトリの今後の変更は、サブモジュールに影響を与えません。
アレックスSchearer

62

マーキュリアル

主な機能:

  • 分散VCS
  • 無料のオープンソース
  • プラグインスクリプトは簡単に記述できます--- Pythonまたはシェルスクリプトとして記述できます
  • すでに無料で利用できる多くのプラグインスクリプトがあります
  • この本を含む多くのドキュメントが利用可能です(強く推奨)

非テキストファイルの使用に関して、Mercurialの最新バージョン(> = 2.0)はデフォルトでlargefile拡張子を 提供します

largefilesは、Mercurialの上に集中化されたクライアント/サーバーレイヤーを追加することでこの問題を解決します。

同じMercurialリポジトリにアセットを保存できるbigfiles拡張機能など、同様のソリューションを提供する他の拡張機能がありますが、必要な場合にのみ必要なバイナリをフェッチします。

大規模なバイナリファイルを持つことに関連する問題以外の大規模なプロジェクトに関する問題は認識していません。Pythonプロジェクトは大規模なプロジェクトであり、Mercurial使用しています。

Joel Spolskyは、Subversion Re-educationで Mercurialを使用するためのミニチュートリアルを作成しました


4
Bigfiles Extensionについての興味深いメモ-元のスレッドで報告された問題の1つに対処します。これは、Distributed VCSは、多数のバイナリファイルアセットを含むゲーム制作には適合しません。
サイクロプス

1
Mercurialの場合は+1。高速で使いやすく、驚くほど強力です。:) Web開発、ゲーム開発、個人の個人プロジェクト、チームプロジェクトなど、すべてに使用しています。BigFiles拡張機能を導入していただきありがとうございます!
jacmoe

大規模なプロジェクトに関しては、8年のリビジョンを持つ大きなリポジトリでは、20未満のリビジョンを持つ小さなリポジトリよりもTortoiseHgの方がはるかに遅いようです。これがTortoiseに固有のものなのか、Mercurialに一般的なものなのかはまだわかりません。
キロタン

4
匹敵するオプションがあるようには思えないsvn:needs-lock、と言うする方法もありませんので、ローカルにどのようなファイルで作業し、あなたが戻って文字通り、チームの周りにボールを渡すことにしているが、(あなたはせずに編集することが許可されていません机の上のボウル)。BigFiles拡張機能の有無にかかわらず、このVCSはこれに対する実用的な解決策がないバイナリファイルには役に立ちません。
サムハーウェル

3
ビッグファイルのサポートに関係なく、2人でMayaファイルを一度に編集すると、1人がチェックインし、もう1人が作業をやり直す必要があります。少なくとも、PERFORCEを使用すると、他の誰かがファイルを編集している(そして、そのファイルを自動的にロックしている)ことを知ることができます。
ダッシュトムバン

39

パーフォース

Perforce(商用/クローズドソース、集中型)は、さまざまな理由で業界標準です。

  1. これは商用製品です。つまり、商用サポートが付属しています。オープンソースプロジェクトは、無料ライセンスの対象となる場合があります(技術サポートを除く)。
  2. ワークスペースを非常によくサポートしているため、非常に柔軟なソースおよびアセットディレクトリのレイアウトが可能です。
  3. チェンジリストを非常によくサポートします。
  4. 誰が何に取り組んでいるかがわかります。ゲームは、他の開発プロジェクトと比較して、急速に変化するバイナリファイル(アセット)の数が異常に多くなっています。ほとんどの場合、これらはマージできないため、誰が何を、どこで、いつ持っているかを追跡することが重要です。SubversionおよびDSCCクライアントは、この手法を意図的に避けていますが、特定のアプリケーションでは非常に有益です。
  5. 巨大なコード/アセットベースをサポートしています。ツリーのサブビューが数十ギガのギグである場合に重要である、クライアントマシンに重複データを保存しませ

とはいえ、Perforceが業界での地位が脅かされていると感じていないことは、ほぼ毎日のように痛々しいほど明白です。P4VやP4SCC(Visual Studioと統合)などのビジュアルツールは遅く、バグが多く、後者はVisual StudioをフリーズするためにVisual Studioをフリーズすることが知られています。AnkhSVNはPerforceよりも数マイル先です。

xanによるコメント:ただし、マージツールであるP4Merge(差分とマージに使用)は、Tortoise Mergeの同類のものよりも優れており、はるかに優れていることに注意してください。驚いたことに、このコンポーネントはP4 Visual Toolsパッケージの一部として無料で利用できます。

slicedlimeによるコメント:Perforceのもう1つの欠点は、特に大きな木がある場合、Perforceでの分岐が大きな痛みになる傾向があることです。他のほぼすべてのvcsが分岐とマージに優れています。ただし、これは通常、上記の利点を支払うための小さな価格です。

roeによるコメント:Perforceは非常におしゃべりです。サーバーが関与していなければ、多くのことは起こりません。最も注目すべきは、編集のためにオープンにするためにサーバーが必要なことです。つまり、サーバーへの接続を切断する場合は、いくつかのフープをジャンプする必要があります。

jristaからのコメント:100年をはるかに超える長きにわたる開発および品質エンジニアリングチームを擁するPerforceの2年以上の日常ユーザーとして、私はこれに精通しています。それはまともなソース管理システムですが、SCCシステムを評価する人が知っておくべき欠点があります:

  • 他の人が述べたように、分岐/統合は特に面倒で困難です。あなたはコントロールの神聖な量を持っていますが、それは過度の複雑さを犠牲にして来ます。一方、ビジュアルマージツールは他に類を見ないツールであり、美しい3ファイルの「ベース」マージビューを表示します。Perforceはブランチパスのいくつかのグラフィカルな視覚化(リビジョングラフと呼ばれます)を提供しますが、視覚化の方法はしばしばツールを役に立たなくします。1つまたはごく少数のファイルについて非常に短い時間セグメントのみを表示する必要がある場合は、それ以上に役立ちます。また、リビジョングラフをナビゲートすることはほぼ不可能です。
  • PERFORCEは非常に効率的なツールでもありません。ほとんどすべてのファイル操作でファイルとデータの複製が必要になるためです:分岐、ラベル付け、変更リストなど。ここではスパースまたは軽量のタグ付けや分岐はありません。変更を追跡するために膨大な量のディスク領域を使用することを恐れていない場合、perforceがおそらく役立ちます。そうでない場合は、別のツールを使用します。
  • PERFORCEはワークスペースを使用しますが、ディスク上の実際のファイルを使用して何らかの状態を判断するのではなく、PERFORCEがワークスペースのすべての状態をキャッシュするため、時々イライラすることがあります。これは、何らかの理由でディスク上の物理ファイルが実際に最新ではないときに、ワークスペースが最新であると言うため、ファイルが同期されないことがよくあります。
  • 最後に迷惑なのは、Perforceがネットワーク上でかなり残酷なことです。これは非常におしゃべりなプログラムであり、かなりの量の帯域幅を消費します。ネットワーク接続が失われると、接続が回復するまでソース管理ファイルで作業を行えないという高いリスクが発生します。まだ、Perforceでオフラインで実行できるアクティビティを発見していません。

2
PERFORCEのもう1つの利点は、最初の2人のユーザーが無料で利用できることです。これは小規模な趣味のプロジェクトに最適であり、2人は大規模プロジェクトへの適合性を評価します。

私の経験から、あなたの答えのポイント5は非常に真実です。非常にスケーラブルです。エラーはまれであり、サポートは迅速です。Yacineは、コストについては定かではないが、最初の2人のユーザーは無料であると指摘している。ゲームが小さい小規模スタジオでは、他のオプションを評価する価値があります。Visual Studioとの統合は、すぐに使用できます。しかし、私たちのスタジオでPerforceの完全な愛好家にVSの優れたソースプロバイダーをゼロから作成してもらうことができて幸運です。
paulecoyote

余裕があればPerforceは素晴らしいです。すべてのバージョン管理システムを使用したわけではありませんが、10年の商用ゲーム開発といくつかのバージョン管理システムで、かなりのマージンで使用した最高のものです。大きなデータファイルを迅速かつ確実に処理し、適切にセットアップされていれば、比較的低速のインターネット接続を介したマルチサイトセットアップで適切に機能します。Visual Studioの統合は完璧ではないかもしれませんが、かなり安定しています。
bluescrn

1
(大規模な)ゲーム開発にVCSを1つ選択する必要がある場合、それはPerforceになります。私は場合は可能性があり、複数選択、私はテキスト資産(コード、スクリプト、およびその他のデータファイル)のためのDVCSを追加しますが、バイナリの資産のためのPERFORCEを続けるだろう。
ダッシュトムバン

2
私はPerforceを使用する大規模なゲームプロジェクトに取り組みましたが、誰もがそれを支払うことに完全に戸惑いました。サーバーと同期する必要は、LAN上であっても不快です。私は「オフライン作業の調整」機能を理解していますが、実際にはワークフローは非常に煩わしいので、ネットワーク障害がある場合は作業しません。P4プラグインを備えたIDEを使用しない場合、またはコマンドラインまたは別のツールからあちこちでファイルを編集したい場合は、P4クライアントに戻ってブックキーピングを行う必要があります。他のVCSは、作業を行う上でこれほど多くの障壁を設けていません。
準最適

27

転覆

  • オープンソース、集中化

  • Blenderファイル-.blendファイルがバイナリかどうかはわかりませんが(これらは見た目は似ています)、Subversionに追加しても問題ありません。いくつかの実験を行った後、変更されたファイルのファイルサイズの増加はわずかに見えるため、ファイル全体をコピーするだけではありません。

  • 大規模なプロジェクト-動作しますが、風変わりです。それは間違いだことが、少なくとも5.5ギガバイト(;主にバイナリ資産のサーバー上のリポジトリのディレクトリの合計サイズ)のリポジトリを処理します。

  • クライアント上のデータの複製-Subversionは、ユーザーのワークスペース内のすべてのファイルの複製コピーを元のコピーとして保持します。これの利点は、サーバーに戻らずにdiffを実行したり元に戻したりできることです。欠点は、10ギガの作業ファイルが20ギガのディスク容量を必要とすることです。

  • 無視リストは、ディレクトリのプロパティです(GUIを使用した単純なコマンドラインでは迷惑です)。

  • Subversionはファイル/アセットのロックを許可します-これは、複数のアーティストやデザイナーが同じファイルで作業する場合に非常に役立ちます。

  • エクスターナルは、プロジェクト間で共有された(ライブラリやベースなど)コードを処理するための優れた方法です。


大規模プロジェクト-KDE、GNOME。
マティアスバルデネグロ

* FSFSはリカバリに非常に脆弱な場合があるため、バックアップには特に注意が必要です。*わかりやすいTortoiseSvnは優れたクライアントです。*オープンソースのバグ追跡システム、継続的インテグレーションシステムなどは、多くの場合、Subversionを「そのまま」サポートしています。* Subversionの使用方法に関する優れた書籍がいくつかあります。
paulecoyote

1
@paulecoyote、これはwikiの投稿です。コメントだけでなく、新しい情報で自由に編集してください。
サイクロプス

1
SVNは、Tortoise SVN(tortoisesvn.net)との併用に最適です。TortoiseSVNは、コンテキストメニューにうまく統合され、すべてのアクションのGUIを提供するクライアントです。残念ながら、亀にはLinux / Mac OSポートがありません(少なくともこれを書いている)。ヒント:複数の人と作業する場合は、コミットする前に常に更新(および競合のマージ/解決)してください。
Exilyth

7

エイリアンブレイン

Avidから:

Alienbrainは、エンターテインメント業界のアーティスト向けのデジタル資産管理システムです

  • 商用(Perforceよりも高価)、集中化
  • Photoshop、Maya、3ds Max、Microsoft Visual Studioなど、他のプロフェッショナルな2Dおよび3Dワークフローツールと統合するように設計されています。

AlienBrain 経験はなく、Mike McShaffryのGame Coding Completeの本からしか聞いていません。しかし、彼はそれを非常に考えているようです:

Photoshopや3D Studio Maxなどのクリエイティブなアプリケーションではなく、主にVisual Studioとうまく統合するように設計された他の製品とは異なり、アーティストやその他の貢献者は実際にこの製品を使用します。他の製品の大きな欠点の1つは、非テキストファイルのかなり単純な処理です。AlienBrainは、これらのファイルを念頭に置いて作成されました。

もちろん、彼はそれも次のように説明しています。

本当に深刻な資産追跡問題と同様に深刻な予算をお持ちの方のために...


はい!最後にそれを手に入れるのは、アセットとコードに異なるツールが必要だということです!+1
jacmoe

3
AlienBrainでの私の経験では、作者はゲーム開発を得られません。堅牢なソース管理ソリューションではありません。一部の機能は一部のチームにとって便利ですが、宣伝されている最もクールな機能の一部は、有用な方法で実装されていません(たとえば、誰かが「レビューのために」アセットをチェックインできるステージングインターフェイス)レビュー用のものとそうでないものを確認する方法はありません。同期すると、とにかく取得できます)。さらに、何もキャッシュしないため、同期にはすべてのファイルをテストする必要があります。これは、多くのアセットのギグがあるために時間がかかります。:)
ダッシュトムバング

AlienBrainの唯一の便利な点は、Maxファイルで機能するプレビューウィンドウです。それ以外は完全にゴミです。
tenpn

1
直接的な経験ではないのでこれがどれほど建設的かはわかりませんが、プロジェクトに取り組む前にAlienBrainを使用していたいくつかのプロジェクトに取り組んでおり、それをもう使用しておらず、誰も良いことは言いませんでしたそれ。それについて読んで口コミを聞いた私の記憶は、それが現場で爆発し、本当にクールに聞こえ、それを買う余裕のある人がそれを試して、最終的にそれが間違いだと気づいたということです。
準最適

3

Team Foundation Server

マイクロソフトから

  • 商業の
  • 一元化
  • Visual Studioと非常によく統合する
  • VS以外のユーザー(アーティスト)向けのWindows Explorerの優れた統合
  • 「棚上げ」チェンジセットをサポートします。これは、gitでの「スタッシング」に多少似ていますが、サーバーに依存します。これらのシェルフセットを公開して、他のユーザーがそれらを統合できるようにすることもできます。
  • 2012年以降、Visual Studioに直接組み込まれた非常に優れたコードレビューワークフローがあります。
  • マージツールの最新バージョンは非常に優れています。自動マージは非常にうまく機能します。
  • 大規模なバインドファイルを問題なくサポートします(明らかにそれらをマージすることはできません)
  • 非常に優れたビルドサーバー
  • ゲートチェックインをサポートします。これにより、シェルセットがリポジトリにコミットされる前に(自動ビルド、ユニットテスト、コード分析を通じて)シェルフセットの品質を評価できます。
  • 非常に優れたプロジェクト管理ツール(厳密にはソース管理機能ではありませんが、非常に便利です)。高レベルの要件からコードまでのトレーサビリティを提供します。

私はMILSPECシミュレータプロジェクトでTFSを広範囲に使用しましたが、それはかなり優れています。Macを使用している場合はおそらく最高ではありませんが、最近はEclipseプラグインがあります。クラウドホストバージョンは、ソース管理バックエンドのgitリポジトリをサポートしています。

Visual Studio Onlineで最大5人のユーザーが無料で利用できます(クローズドソースを許可、リポジトリサイズの制限はありません)。クラウドでホストされています。ローカルでホストする場合は、高価になる可能性があります。

私が最も気に入っているのは、ソフトウェアエンジニアリング管理機能と、大きなファイルとバイナリファイルを非常にうまく処理できるという事実です。


1
新しいVisual Studio Onlineは最大5ユーザーまで無料で、クラウドでホストされます(適切にバックアップされるなど)。TFSまたはGitを使用できます。インディーズゲームの開発に最適です。
ロバートフレイザー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.