UnityとP4
サウンドゲームジャムで
UnityのAssetを共有するために
Perforceサーバーを立ててみた。
その時のメモです。
サーバーのインストール
・p4サーバーをインストール
http://www.toyo.co.jp/ss/perforce/
のソフトウェアダウンロードページからダウロード。
無料版を使うためにアカウントを作って登録して、
評価版ダウンロードの申し込みをして、
メールでダウンロード用の情報が送られてくる。
windows7 64bit にperforceインストール
インストール後
タスクマネージャー>サービスにPerforceがあるのを確認。
どうやらサーバーは起動している様子。
p4v起動して、続けて
adminアカウント設定。
adminツールで「test」リポジトリ作成
クライアント側
Macにp4vインストール
windows7マシンのサーバーアドレス:1666と、
上で作ったユーザーで接続。
ここでなぜか繋がらないので、いろいろ調べて
→macからpingが通らなかったので
windows7側のファイアーウォールを切る
接続確認。
ワークスペースの作成
perforceでは各ユーザーのコンピュータのHDD上の特定のフォルダにファイルがコピーされて管理される。それらの関連付けをするのがワークスペースという設定のよう。
ワークスペースで、自分のローカルフォルダを正しく指定しておく。
はまったのは大文字、小文字のパス違い、ディポ名のフォルダが必要など。
適当にtxtファイルを置いてみて追加、サブミットできるのを確認。
ワークスペースの編集>詳細>「すべての書き込み:リビジョン取得時、すべてのワークスペースファイルを書き込み可能状態のままにする」
→これしないとUnityからファイル上書き保存できない。
ワークスペースの編集>詳細>「サブミット時」を「変更していないファイルを元に戻す」
→サブミット時に、サーバー上のファイルと自動同期される。
p4vのプリファレンス(環境設定)から「ファイルおよび履歴」>「変更されたファイルは別ファイル・アイコンを使用する」をチェック
→これでアイコンが青っぽくなっていたら更新されていると視覚的にわかる。
Unityでプロジェクト作成
ProjectSetting>Editorで、VersionControlを「Visible Meta Files」にする。
先ほどのワークスペースの下にプロジェクトを保存する。
p4vで最初に
AssetsフォルダとProjectSettingsフォルダだけアップする。
(このファイル以下しか共有しなくても、他のファイルは勝手に生成されるので問題ない。逆に他のファイルも共有すると更新が頻繁に起こって分けわからない感じになるので注意。)
更新方法
Unityでオブジェクトを追加したりして更新する。
ファイルメニューから「プロジェクトのセーブ」を行う。
→関連ファイルが更新されるっぽい。
p4vのワークスペース>Assetsフォルダを右クリックし
「非接続の作業を照合する」を選択すし、「作業を照合」ボタンを押す。
作業中>defaultに変更内容が反映されているので右クリックから「submit」でチェンジリストをサブミットする。
取得方法
サーバーと同期して最新のファイルを自分のワークスペースのフォルダへ持ってくる。
ディポからフォルダを選んで「最新リビジョンを取得」 とするとファイルが更新されて
Unityに戻るとシーンを「Reload」するかとか聞かれるのでOKとすると更新」される。
衝突した場合
もし同じファイルを同時に更新してしまった場合、
p4v上で「衝突回避」をしないとコミットできなくなる。「黄色三角」のアイコンがつく。
この場合、「最新リビジョンを取得」して、「?」のアイコンになり、
「元に戻す」でサーバー上の設定に戻す。
「衝突解決」>「反映先を承認」ボタンで上書きされる。
自信が無い時はローカルでバックアップして「元に戻す」とするのが懸命。
明らかに更新した方が良いとわかっている時のみ上書き。
何かあってリビジョンを戻したい時
「ディポ」から対象ファイルを選択して、「元に戻す」
ソースファイルの場合
「タイムラップビュー」とか便利
「衝突回避」でマージツール起動してマージ修正可能。 (よくわからずにマージするとえらいことになるので注意)
気をつける点
・PrefabやMaterialとかシーンに属していないファイルの更新が「プロジェクトのセーブ」で行われているっぽい。プロジェクトセーブはメニューからの保存ななので注意。(Ctr+Sとかだとシーンの保存なので)
・シーンの中での変更はシーンファイルを保存しておく。
他にも便利なAssetとかあるっぽい
上で紹介したのはp4vっていうグラフィカルなツールを使っての方法でして、
AssetStoreとかにPerforce連携のものがあるっぽいのでそれも試してみたいところだったりします。(Mac未対応とかUnity5はまだとかで触れてない感じ)













