UE4 ソースコントロールを使ってアセット管理をする
UE4にはアセットのバージョン管理をしたり、比較をしたりするソースコントロールシステムが搭載されています。
標準でサポートされているものシステムとして、Apache SubversionとPerforceがあります。またこの他にも非公式プラグインとしてGitとMercurial用のものもあります。
enlight/ue4-hg-plugin · GitHub
今回は最も使いやすくて、需要も多いと思うSubversionを使用して解説したいと思います。Perforceも20ユーザーまでなら無料で使えるので少数チームで使う場合はありだと思います。
TortoiseSVNを導入
実はUE4には標準でSubversionのバイナリー自体がバンドルされていたりします。が、こちらはちょっとコマンドベースになり、ハードルが少し上がってしまうので、今回は一番簡単に使えると思うTortoiseSVNを導入してみます。
TortoiseSVN自体の導入は日本語でも沢山解説記事があるので、そちらを参考にしてみてください。今回は以下の記事を参考に導入しました。
TortoiseSVN の基礎勉強 ~ TortoiseSVN によるバージョン管理 ~ — バージョン管理システム入門(初心者向け)
この手順でチェックアウトを行うところまでやっておきます。チェックアウトするために事前にUE4のプロジェクトは作成しておいてください。
UE4からソースコントールに接続する
プロジェクトを作成したら早速ソースコントールに接続しましょう。ウィンドウの一番右上に画像のようなボタンがあると思います。
これをクリックすると、新しいウィンドウが開くので、必要な情報を入力しましょう。プロバイダはSubversionを選択しておきます。
最低限必要な情報としてはリポジトリーのある場所の指定とUser Nameだけです。今回リポジトリーは完全にローカルPC内にあるローカルリポジトリーなので、直接パスを入力していますが、ネットワークのLAN上に存在するリポジトリーの場合はネットワーク上のパスを入力する必要がありますので、注意してください。
これで設定を承認ボタンを押すとそれだけでソースコントロールとの接続が完了です!
アセットを追加してみる
ソースコントロールとの接続が完了したら、今度はアセットをリポジトリーに追加してみましょう。新規のアセットがまだリポジトリーに追加されていない場合は以下のようにアセットアイコンに"?"マークがつきます。そして右クリックして"追加マークをつける"を選択すると"+"マークに変わります。
この状態でアセットを右クリックして"チェックイン"を選択します。チェックインしようとするとサブミットを行うためにコメントを入力する必要があります。これがよく一般的に呼ばれているコミットという行為になります。
説明メッセージは必須になっており、何か書かないとOKボタンが押せない仕様になっています。これでファイルを追加してチェックイン(コミット)完了です!
アセットの比較(Diff)をしてみる
追加したアセットの比較をしてみましょう。追加したブループリントに適当にコンポーネントやノードを追加してみます。この状態で保存しようとすると"チェックアウト"を行うか聞かれます。
チェックアウトというのはソースコントロールシステムによっても微妙に意味が異なりますが、UE4の場合はリポジトリーからデータを取り出して、そのアセットを自分が編集しているという合図をだすという行為になります。これはアセットを同時に編集すると問題が起きやすいので、意図的にそういう仕組みになっています。
チェックアウトした後はチェックインを行うまで、他の誰もそのファイルを触ることができなくなってしまいます。編集を行うだけならチェックアウトは必須ではないので、必要なタイミングでチェックアウトを行うように心掛けましょう。
ではブループリントをまたチェックインしておきます。編集したブループリントを右クリックして"履歴"を選択します。すると以下のように過去にサブミットされた履歴情報が表示されます。
この履歴情報では複数のリビジョン番号をCtrlキーを押しながらクリックすることができるので、複数選択後に右クリックして"選択対象のDiffをとる"を選びます。すると以下のようにDiff画面が出現します。
左が古いリビジョンで右が新しいリビジョンの情報になります。ブループリントの場合は関数などのグラフごとにノードがどう編集されたかの情報を比較することができます。この情報をみながら実際にブループリントを編集して、マージする作業などを行います。
テキストの比較
UE4のアセットは全てテキストでも比較することができます。ブループリントの場合は、比較画面の左側にある"ブループリントのデフォルト値のDiffをとる"というボタンがあるので、それを押すとテキストの比較が出現します。
※ブループリントのデフォルト値の比較であってノードグラフ自体の比較ではないです
テキストを比較するには"エディタの環境設定"から"ロード&保存"の中にある、"Source Control"内で使用したいDiffツールの場所を指定してあげる必要がありますので、ご注意ください。
現状では比較するのみで、ここからマージツールを使ってマージというのはできません。比較をしながら手動で修正をしていく必要があります。ブループリントには今後マージツールが用意されるらしいので、そちらに期待しておきましょう。
ブループリント以外のアセットの場合は全てテキストでの比較になります。バイナリーデータの比較ではないので、テキストで見れるだけマージはしやすいですが、巨大なアセットのマージはやはり大変です。極力アセットの編集が衝突しないように必要な場合はチェックアウトしておくべきかと思います。
アセット以外の管理
UE4の内部で使用するアセットはこれでもいいのですが、uprojectなどの特殊なファイルやC++コードなどはやはり別途ソースコントロールシステム内で管理する必要があります。
TortoiseSVNだと比較的楽に全て管理することができますが、別途ソースコントロースシステムを使うこともできますので、必要に応じて選択する必要がでてくると思います。