今日から始めるUnreal Engine 4のSource Control SVN編


おやくそくとか

この記事でわかること

  • ざっくりとしたUnreal Engine 4のSource Controlについて
  • Subversion(svn)のローカル環境構築(Windows, Linux)
  • Perforceのローカル環境構築(Windows, Linux)
  • svnとPerforceのちょっとした使い方

この記事じゃわからないこと

  • gitのコマンド
  • svnのコマンド
  • CentOS等Linuxの基礎知識

環境

サーバ: CentOS 7.2
クライアント: Windows 10

いつもの

Unreal Engine 4の更新によって情報は古くなっていく可能性があります。
また、作業によって環境が壊れたりセキュリティ上のリスクを背負うことになる可能性があります。
いかなる責任も取れませんのでよろしくお願いします。

そもそもSource Controlとはなんぞや

ざっくり言うと作業にセーブポイントが作れます。
そしてそのセーブポイントに戻ったりファイルの編集履歴が見られたり、いろいろ捗ります。
本題ではないのでGoogle先生にでも聞いてください。

Unreal Engine 4でサポートしているSource Controlは…

git

git(ギット)は、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。 Linuxカーネルのソースコード管理に用いるためにリーナス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで採用されている。

git - Wikipedia より

Subversion

Subversion(Apache Subversion)は、さまざまなソフトウェアの開発現場において広く使われているソースコード管理システムです。 標準のコマンドラインクライアント/プロトコルの名称から「svn」と呼ばれることもあります。

Subversion(svn)によるソフトウェア開発を始めよう - OSDN より

Perforce

Perforce Helixは企業の重要なデジタル資産を管理するソフトウェア構成管理ツールをコアにした統合プラットフォームです。
ソースコード等のテキストデータからドキュメントやグラフィック等のバイナリまでのあらゆるファイルをバージョン化します。
テラバイト単位の大容量なデジタル資産でも高速に処理します。

高速ソフトウェア構成管理ツール Perforce Helix | 東陽テクニカ より

で、どれがいいの?

各々に長所があり、短所があります。
決して詳しいワケではない上に書いていくとキリがないので詳細はググっていただくとして、UE4で使う上での話ぐらいにとどめておきます。

git

メリット

  • 行単位で追跡できるのでテキストベースの物を管理しやすい
  • 困った時のドキュメントが豊富
  • エンジニアはGitHub等に慣れている場合が多いので学習コストが低い

デメリット

  • Commit(コミット,作業状態の保存)時にファイル全体を記録するので最終的に大きな容量を取られやすい
    • Unreal Engineで使う.uassetはモデルとか大きいものもあるわけで…
  • UEから直接pushできない(最新でできるようになってたりしたらゆるして)

参考: バージョン管理システム比較資料

Subversion(svn)

メリット

  • バイナリファイルは差分で記録する
    • gitのデメリットと反対の性質
  • 仕組みがありえんぐらいわかりやすい(gitに慣れてるとわかりにくいかも?)
  • UE4が推奨している

デメリット

  • ローカルでのCommitができない
    • 作業は必ずサーバに流れていく
      • 「ちょっとテストして問題なかったらアップロードしよう、だけど今セーブポイントが欲しい」の時ちょっと悩む
    • サーバもマシンも一緒なら正直どうでも良い感はある

参考:
Subversion 対 Git:どちらを使うべきなのか?いろいろな観点から比較してみた | tracpath:Works
バージョン管理システム比較資料

Perforce

メリット

  • UE4が推奨してる
    • みんな大好きヒストリアさんも使ってるらしいよ!
    • 2015年のUnreal Festに東陽テクニカさん来てたよ!
  • 管理用の専用UIが用意されてる
  • なんかすごい強いらしい

デメリット

  • 情報が少ない
  • ライセンスを購入しないと制限がある
    • ライセンスが(個人で使うには)高い

なんとなくわかったので環境構築

gitに関しては手前味噌ですがLinuxに限り昔書いたWindows AzureにGitLabを構築してみるあたりが参考になるかもしれません。
ただ情報が古いのでググると幸せになれると思います。
各々長い上に合計4項目あるので自分の使いたいものを右側から選ぶといいと思います。

SVN編

SVN + Windows

使ってるPCでデータ管理もUE4も使うという極めて一般的な環境は方はこちら
書いてる途中で気づいたけどソース コントロールとして SVN を使用する | Unreal Engineなるモノが既に存在していて同じことをやっていたけれどもうちょっと噛み砕いている、ということで許していただきたい。

必要なもの

  • Windowsが入ったPC

セットアップ

まずは今回使うVisualSVN Serverを落としてきます
VisualSVN Server | Download
基本的には読みながら進めて行けば大丈夫ですが、Webサーバを立ち上げている方は開いているPortを選んでください。
一応以下選んだもの
Select Components: VisualSVN Server and Administration Tools
Edition: Standard
Configuration: Use secure connectionのチェックを外してそれ以外はデフォルト

使ってみる


こんな画面が出てくるのでまずはアカウント作成のために左側からUsersを選んで右クリック→Create Users...

適当なアカウントを作ってOK

次はRepositoriesに飛んで同じようにCreate New Repository...

Regular FSFS repositoryDistributed VDFS repositoryがありますが、VisualSVN Server | Multisite Repository Replicationを読む限り後者のほうが強そうなのですが、Master/Slave構成は今回必要ないので前者を選びました。

適当な名前をつけて…

よくわからないけどrecommendedというなら選んでおきましょう。

アクセス制御についてですが、上から
1. 誰もアクセスできない
2. Usersで作られたアカウントは読み書きできる
3. 特定のユーザのみなどに制限

という感じです、今回は2番でいいでしょう。

さて、これでRepositoryができました。簡単ですね。
Repository URLをクリックすればブラウザから開くこともできますし、そのままUE4に登録しても問題ありません。
ただし、サーバとして使うPCとは別のPCからアクセスする場合は当然ながら事故るのでIPアドレスでアクセスしてください。

UE4で使う

その前に一度svnをcheckoutしてこなければなりません。適当なクライアントで適当な場所にcheckoutし、ソース コントロールとして SVN を使用する | Unreal Engineを参考に必要なファイルを追加してください。
クライアントに迷ったらとりあえずTortoiseSVNを使うといいと思います。


checkoutしてきた空っぽのフォルダにファイルを追加(ファイル的にも、svn的にも)してcommitします。作ったばかりのプロジェクトだとこんな感じ。


無事commitされるとVisualSVNにも反映されます。


あとはcheckoutしてきたフォルダをUEで開き、Source Controlから繋いであげればOK

SVN + Linux

サーバが大好きな方はこちら
注意: めんどくさいのでrootで作業していますがオススメしません、多分

SVNのWeb管理といえばSubminことSVN/git web administrationやUSVNことUser-friendly SVNがありますけど、今回はSCM-Managerを使います。
理由は最近の投稿がないから、そして「Very easy installation」の言葉を信じたからです。
wikiはこちら
何気にGit,Mercuiak,Subversionに対応しているようです。
ちなみにWindowsでもいけるようですが知ったのは後からなのでとりあえずそっちは保留で…

必要なもの

  • CentOS 7.2がセットアップされた環境
    • 今回はESXi 6.0でMinimalな環境を用意しました
    • CUIなのでDesktop環境だとちょっと変わるかもしれません。
  • sshが叩ける環境

作業

まずは必須のjreを入れておきましょう。

yum install jre -y

SCMはyumで導入できます。
sdorra / scm-manager / wiki / RPM and DEB packages — Bitbucket
を参考にRepositoryを追加しましょう。

 vi /etc/yum.repos.d/SCM-Manager.repo

以下貼り付け

[scm-releases]
name=SCM-Manager Releases
baseurl=http://maven.scm-manager.org/nexus/content/repositories/releases
enabled=1
protect=0
gpgcheck=0
metadata_expire=30s
autorefresh=1
type=rpm-md

あとはもう簡単に入れられて

yum install scm-server

起動するだけ

/opt/scm-server/bin/scm-server start

http://[IP]:8080/
にアクセスするだけで接続できます。

ID,PWはscmadminで通ります。
ね?簡単でしょう?


まずはセキュリティ的に、というよりも扱いにくいので左側のSecurity → Users の上の方にあるAddから自分のアカウントを作ってしまいましょう。
その後Log out→自分のアカウントでログインをしたら不要なscmadminは削除してしまっても構いません。
匿名のアクセスは許可したくなかったためanonymousも削除しました。

次に、Config → Repository TypesからGitとMercurialのDisabledにチェックを入れておきましょう、別にしなくてもいいですが不要なので一応入れています。saveを忘れずに。


Subversionの設定は初期値のまま変更していませんが、パーティションを切っている等で必要があれば変更してください。
また、互換性やGZipに関しても自由にしてかまわないと思います。(検証はしていません)


次にRepositoriesのAddから適当なRepositoryを作ります。
PublicにチェックをつけるとUsersの全てから見えてしまうので非推奨です。


次にPermissionsの設定を済ませます。Nameがサジェストされないのがイケてません。
一人なのでとりあえずOwnerでいいでしょう。

このあとの手段はWindowsと同じなため割愛します。
アプリケーションを止める時は

/opt/scm-server/bin/scm-server stop

これも sdorra / scm-manager / wiki / daemons — Bitbucket にかかれています。

Perforce編

別記事予定[いつ?]