Unreal Engine 4でソースコントロールをPerforceではじめよう #UE4Study

はじめに

「プロジェクトのバージョン管理してますか?」

普段使い慣れたGitで管理してみると、バイナリファイルのあまりのデカさに同期が遅いし、我慢して使ってたらリポジトリぶっ壊れるしでどうしたらいいものかと頭を抱えつつ、何かあってからじゃ遅いとわかっていつつも、なんとなく管理しないでそのままの人が多いのではないでしょうか。

バージョン管理について

UnityならばAssetServerが超おすすめ。

Screenshot of japan.unity3d.com

Unity – コラボレーション – Unity Team License

以前はProライセンス約16万円に合わせ、チームライセンス(月$20か、一括$500)が必要で合計20万円以上しましたが、3/4からはProライセンスにチームライセンスが含まれるようになりました。

Screenshot of www.famitsu.com

ゲームエンジン“Unity 5”正式版が公開、プロユース版の日本販売価格が5月1日より改定 – ファミ通.com

GitでもOK

betaではありますがUnrealEngineでも対応済み。Unityでももちろんのこと、Gitで何の問題もないし。やることやっていれば

むしろ既存のCIがあるのであれば運用を工夫すればよいし、gitのforkであるgit annexかgit-bigfilesへ移行する手もある。

Screenshot of japan.blogs.atlassian.com

巨大なリポジトリを Git で上手く扱う方法

ちなみに容量無制限を謳うbitbucketは2GBを超えると読み取り専用になるため実質2GB

ちょっとリッチなVRコンテンツを作ろうとバイナリデータをpushしていると、2GBの容量制限なんてすぐにオーバー

また、何年か前に使っていたGitのリポジトリが10G越えたあたりでぶっ壊れたということもあり、デカいコミットをpushするときの待ち時間に甦るトラウマがつらい。

なぜPerforceなのか。そもそもPerforceとは?

軽量、大容量のバイナリデータの管理に向いたバージョン管理ツールだそうな。

Screenshot of d.hatena.ne.jp

Googleでも採用されているPerforce社製のマージツールPerforce Visual Merge Tool (P4Merge)を使ってみる – 大人になったら肺呼吸 (id:replication / @id_replication)

2009年の記事で、今となってはgitもshallow cloneが使えるものになってきて超巨大な歴史でも問題なくなってきてるらしい。

Screenshot of www.toyo.co.jp

>> 高速ソフトウェア構成管理ツール PERFORCE の製品概要 – 東陽テクニカSS

日本代理店のナウさは一気にやる気が削がれるので閲覧注意。

UE4での導入について

Unreal Engine | UE4 内のソース コントロールとして Perforce を使用する
https://docs.unrealengine.com/latest/JPN/Engine/Basics/SourceControl/Perforce/index.html

また、UE4の中の人である @junyah さんが作成された UE4でPerforceと連携するための手順.pdf – Google ドライブ https://drive.google.com/file/d/0B1ux4tmFqksyVUxCNFBqTGF6U2c/view
が参考になる。

サーバー構築

自分で鯖を立てます。

Azureとかでもよさそう、ギガ単価5円くらい。
自鯖なら古いノートPC(電気代的に)へHDDつないだり、QNAPなどのNASや

Raspberry Piあたりがおすすめ

QNAP TS-469PROで立てる

以下完全に俺得メモ

hhttps://twitter.com/yuujii/status/569136209106046977

port確認 lsof -i:1666

 >> QNAP TurboNASのautorunについて – デジカシ http://mimimopu.com/blog/2013/05/qnap-autorun.html

vi /share/MD0_DATA/.qpkg/autorun/autorun.sh

#!/bin/sh

# P4
ln -sf /share/MD0_DATA/.qpkg/perforce /usr/local/perforce
echo "export PATH=$PATH:/usr/local/perforce" >> /etc/profile
PATH=$PATH:/usr/local/perforce
p4d -xi
p4d -d -p 1666 -r /usr/local/perforce &

# tmpfs
mount -t tmpfs tmpfs /tmp -o remount,size=512M

http://htlab.net/blog/2013/05/14/qnap-dnsmasq/
http://sakopc.myqnapcloud.com/wordpress_ks/2013/05/50

vi /share/MD0_DATA/.qpkg/Optware/etc/dnsmasq.conf
address=/qnap/192.168.0.200
user=admin
group=administrators
no-hosts
addn-hosts=/share/MD0_DATA/.qpkg/Optware/etc/dnsmasq.hosts

vi /share/MD0_DATA/.qpkg/Optware/etc/dnsmasq.hosts

 >> QNAP NAS Community Forum • View topic – Perforce http://forum.qnap.com/viewtopic.php?t=4085

PerforceをLinuxサーバーへ入れる

※perforceユーザーは作るべきかも。自宅内で適当にやるので端折る。

mkdir -p /usr/local/perforce
cd /usr/local/perforce
wget ftp://ftp.perforce.com/pub/perforce/r14.2/bin.linux26x86/p4
wget ftp://ftp.perforce.com/pub/perforce/r14.2/bin.linux26x86/p4d
chmod +x p4 p4d
p4d -d -p 1666 -xi -r /usr/local/perforce &
p4 set P4USER=yuji
p4 set P4PORT=1666
p4 -P password typemap
TypeMap:
                binary+w //depot/....exe
                binary+w //depot/....dll
                binary+w //depot/....lib
                binary+w //depot/....app
                binary+w //depot/....dylib
                binary+w //depot/....stub
                binary+w //depot/....ipa
                binary //depot/....bmp
                text //depot/....ini
                text //depot/....config
                text //depot/....cpp
                text //depot/....h
                text //depot/....c
                text //depot/....cs
                text //depot/....m
                text //depot/....mm
                text //depot/....py
                binary+l //depot/....uasset
                binary+l //depot/....umap
                binary+l //depot/....upk
                binary+l //depot/....udk

 >> Unreal Engine | UE4 内のソース コントロールとして Perforce を使用する
https://docs.unrealengine.com/latest/JPN/Engine/Basics/SourceControl/Perforce/index.html

  >> UE4でPerforceと連携するための手順.pdf – Google ドライブ
https://drive.google.com/file/d/0B1ux4tmFqksyVUxCNFBqTGF6U2c/view

UE4からPerforceへ接続

ソースコントロールの設定画面を開く
※もし表示されない場合はPluginsでPerforceが入っているか確認(デフォルトON)

鯖で設定した内容を入力。

 ほかにローカルのP4Vから接続してみることで確認が可能。

設定が完了するとSourceControlのアイコンが変わる。

アセットをコミットする(Submit)

エラーが起こった場合

エラーの詳細をメッセージログで確認します。

通知内の「メッセージログを表示」をクリックするか、ツールバーから探してクリック。

エラー The filesystem ‘TEMP’ has only 63.57M free, but the server configuration requires at least 250M available.

これはtmpfsの割り当ての容量不足だそうで、とりあえずsshでログインしてmount -t tmpfs tmpfs /tmp -o remount,size=512Mとか、適当に割り当て直します。

で、QNAPは再起動のたびに巻き戻るのでこの設定をautorun.shへ追加。

それで改めてUnreal Engine4でSubmit。3分くらいで完了。

基本操作

 >> アンリアル エンジン 4 内のソース コントロール
https://docs.unrealengine.com/latest/JPN/Engine/Basics/SourceControl/InEditor/index.html

 >> UE4 内のソース コントロールとして Perforce を使用する
https://docs.unrealengine.com/latest/JPN/Engine/Basics/SourceControl/Perforce/index.html

 >> ソース コントロール
https://docs.unrealengine.com/latest/JPN/Engine/UI/SourceControl/index.html

 >> UE4でPerforceと連携するための手順.pdf – Google ドライブ
https://drive.google.com/file/d/0B1ux4tmFqksyVUxCNFBqTGF6U2c/view

コミットコメントで日本語が??に文字化ける

QNAP上のp4dサーバ起動前にp4d -xi で Unicode モードへ変えればOK

p4d -xi
p4d -d -p 1666 -r /usr/local/perforce &

 >> ソースコントロールのコメントで日本語が使えない – UE4 AnswerHub
https://answers.unrealengine.com/questions/106944/%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%E3%81%AE%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88%E3%81%A6%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%8B%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%84.html