だらだら〜自由自在〜

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

UnityとSVN

こんなの構成管理ぢゃない!

Ignoreしておくべきたったファイル

フォーラムの人が聞いてたし、よく見たらこいつらもバイナリだった。

  • \Library\MonoManager.asset
  • \Library\BuildSettings.asset

テストその1

  • SVN管理下のUnityプロジェクトを用意
  • Test1フォルダにチェックアウト。Test2フォルダにチェックアウト
  • Test1でGameObject生成して配置
  • Test2でもGameObject生成して配置
  • Test1の変更をコミット(.metaじゃない方のシーンファイルがコミットされる)
  • Test2で最新取得でコンフリクト

….metaになった意味は…あの…結局衝突してるんですが…
GameObjectの配置情報はどこにあるのかよく解らんかったが、もしかしたらバイナリのシーンファイルが持つのかも。

まとめると
  • 複数人開発で、AssetServer使わずSVNとか使うとなると
  • メンバー間でGameObjectの生成/配置が同時に出来ない
  • これは同一シーンを同時に編集する時の話
  • 複数シーンのUnity上でのマージはできないの?
    • それってパッケージでするってことか?
例えば
  • 背景(地形、設置物、天球とか)用の設置シーン。BgEnvSetting.unityを作る
  • コミットしたいときはBgEnvSettingパッケージをエクスポートしてコミット
  • 背景を作る人は、このBgEnvSetting.unityのみを編集する

てことは

  • ProjectPaneの内容はすべて完全にSVN管理が可能と考えると
  • 問題になるのはGameObject(配置情報)
  • GameObjectは同時に編集するとコンフリクト(シーン単位)
  • 各自の編集単位をシーン単位にすれば良い(自分の編集用シーン)
  • 作業単位は例えば
    • 背景(地形、設置物、天球)
    • キャラ(PC、NPC
    • イベント

あとは

  • 編集用シーンはコミットフリー
  • 編集用シーンとは別に本番用シーン、シーン構成的には
    • 本番用シーンAについて、背景編集用シーン、キャラ編集用シーンなどがあり。本番用シーンBやCについても同様な感じ
  • 本番用シーンに編集をマージするために、編集用シーンをパッケージエクスポート。
  • 編集者のローカルで本番シーンにパッケージをインポートしてマージする
  • 本番シーンをコミット
  • 本番シーンはtheir's forceで取得(マージしない)

本番用シーン=確認用シーンってのがポイント。
なんか無駄とかヌケがありそうなので絵にする

2人でやるなら

これでいいか。問題点や自動化ポイント。

  • 本番用にコミットされる最新のパッケージを編集シーンに適用する部分
    • パッケージインポートが必要なので自動化したい

まぁこれ以上考えたくないから運用してみる。