だらだら〜自由自在〜

インディーゲーム制作チーム GAME GABURI でプログラム担当してます

またUnityでああだこうだやることになりそう

今度はいままでみたいに余暇でどうこうっていうのじゃなくて、仕事に近いかたちで取り組むことになりそうなので、ある程度長続きしそうなので(自分に)期待。
で、自分一人の開発じゃなくてしかもプログラマ2人でってことで考えているので、そこで問題になりそうなのがバージョン管理のやりかた。
まずはUnityProでないとバージョン管理っぽいことさえも出来ない(.metaがつくれない)のですが、ここは両人ともPro版をお持ちという前提で。問題はUnityAssetServerを使わないということ。
UnityAssetServerはクライアント機能(Unity環境組み込み)がたしか500ドルとかそのくらいで売っていてマジ高い。しかしこれが無いとまともな管理が出来なかったりする。原因はシーンファイル(.unity)がバイナリファイルだから。.unityにはゲームシーンの構成情報が保存されていると思われて。シーン中のオブジェクトのプロパティをいじったり親子関係を変えたりするとバイナリが書き換わる。これを例えばSVNで管理していると競合が起きてリポジトリのものかローカルの変更を破棄する必要に迫られる...。あともう一つ、Assetディレクトリ下のファイル移動が問題になる。どうやらUnity環境内でAssetの階層状況とファイルシステム上でのAssetディレクトリ内の階層状況は同期している。なのでUnity環境内でAsset内の何かの階層状況を変えたときに、そのAssetをバージョニングしていると(SVNだと)トラッキングできなくなり、バージョン管理下から失われてしまう。これは結構面倒。(リポジトリから)削除して新しい場所で追加してやればいい話でもあるのだけど、そのときログは消えてしまう。
これは全部今時点での自分の把握しているUnityの動作を元に書いたものだけど、嘘をついている可能性もあるのであしからず。

結局どうすすめるか

まず、一番大きな問題点はシーンファイルであると思う。あれがバイナリなせいで複数人編集できないと。とりあえずこれが解決すればあとは別に問題無いと思う。Assetファイルの移動(に伴う紛失)についてはSVN特有の問題で、例えばgitにすれば問題無いかもしれない(gitなら、ファイルの移動をトラッキングしてくれるとかあったようななかったような)

A)Unity3.5を待つ

たしか.unityも.metaに出来るってロードマップで見た記憶がある。

B)規約でなんとかする

シーンファイルはロックする。
共同で開発するシーンは、その開発者分だけシーンを複製して、それぞれが複製されたシーンを編集する。これらのシーンはあとで(Importなりで)マージする。(たしかこの方法は前に考えたことがあって面倒くさいけど出来ないことは無い感じだった気がする)

C)AssetServer買う

お金が無い

というわけで

過去の記憶を呼び覚ますのを兼ねて色々書いてきたが、結局2人ならシーン分けてロックして分担と連絡をきちんとすれば全然大丈夫だろうと思う。

unity with svnの過去の自分の記事をはっくつした
http://d.hatena.ne.jp/nyakagawan/20100411/1270903474