おやくそくとか
この記事でわかること
- ざっくりとした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カーネルのソースコード管理に用いるためにリーナス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで採用されている。
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 repositoryとDistributed VDFS repositoryがありますが、VisualSVN Server | Multisite Repository Replicationを読む限り後者のほうが強そうなのですが、Master/Slave構成は今回必要ないので前者を選びました。
適当な名前をつけて…
よくわからないけどrecommendedというなら選んでおきましょう。
アクセス制御についてですが、上から
- 誰もアクセスできない
- Usersで作られたアカウントは読み書きできる
- 特定のユーザのみなどに制限
という感じです、今回は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編
別記事予定[いつ?]