はじめに
「普段はUnityばっかり触っているが、そろそろUE勉強したい
どうせだったら現場でよく使われるバージョン管理構築して、一石二鳥したろ」
という軽い気持ちで始めてます
その為、間違いなど往々にしてあると思うので、あれば指摘してください
どうしてPerforceなの?Gitじゃダメなの?
「ダメじゃないけど、Perforceの方が適している」という感じです
Perforceには以下の特徴があります
- 大容量ファイルの扱いが得意
- バイナリファイルの扱いが得意
- ファイルの排他ロックが可能
- UE公式にPerforceでの開発サポートページがある
少し話が逸れますが、AWS公式にもPerforceを構築するサポートページがあります
UEではUnityに比べて巨大なファイルを扱うこと、バイナリファイルを扱うことも増えます
UEでの開発において、小規模であればGitを使用することの方が多いとは思いますが、大規模開発ではPerforceを採用していることが多いです
また、前述した通り、Perforceに関する構築をサポートしてくれるようなサイトも最近は増えてきており、個人でも学習しやすい環境になっています
それこそ、個人でPerforce環境を構築することにロマンを感じる...!
使う理由とは関係ないですが、基本的にはPerforceはSVNなどと同じ集中型になっています
(Perforceも頑張ればGitのような分散型もできる?(要勉強))
どうしてWSL2なの?
テスト環境で動かしてみてから実環境の構築をしたかったからです
それ以外に特に理由はないです
実環境での構築も改めて記事にする予定です
そもそもWSL2とは何ぞやって部分に関してはこちらを参照
https://www.pc-koubou.jp/magazine/40465
実装環境
Windows : Windows10 Pro
Linux : Ubuntu 22.04.3 LTS
Helix Core ServerVersion : 2023.4/2535420
Helix Visual Client(Windows用GUI) : 2023.4/2534624
PerforceServer自体はパッケージが分割されており、以下が存在します
- helix-p4d
- helix-p4dctl
- helix-proxy
- helix-broker
- helix-cli
※現在は「Helix Core」という名称ですが、呼び方は「Perforce」で統一します
今回のゴール
PerforceServerをWSL2に構築し、実際に起動するところまで
WSL2環境を構築する
- WSL2を有効にする
- コントロールパネル
- プログラム
- プログラムと機能
- Windowsの機能の有効化または無効化
- 「Windows Subsystem for Linux」にチェックを入れる
- Hyper-Vが有効になっていない場合は、これも有効にする
- 再起動
- Ubuntuをインストールする
WindowsStoreからインストールする
インストール完了すると、Ubuntuの起動用アイコンが追加されるため、そこから起動する
PerforceServerのセットアップ
上記記事の「APT(Ubuntu)の場合」に沿って順にセットアップしていきます
perforce.pubkeyをAPTのキーリングに追加
wget -qO - https://package.perforce.com/perforce.pubkey | sudo apt-key add -
上記コマンドを実行することでperforce.pubkeyをダウンロードし、APTキーリングに追加されます
apt-keyは非推奨になり削除されるという話ですが、今回は公式の手順に沿って実装を行います
※APTについてはこちらを参照
https://weblabo.oscasierra.net/ubuntu-apt/
APTの追加
-
/etc/apt/sources.list.d/
にperforce.list
を作成
sudo touch /etc/apt/sources.list.d/perforce.list
-
perforce.list
を編集する ※今回はnanoコマンドを使用
sudo nano /etc/apt/sources.list.d/perforce.list
-
perforce.list
に以下の文言を追加
deb http://package.perforce.com/apt/ubuntu hogehoge release
hogehoge
には、Ubuntuのバージョンに合わせた文言を入れてください
今回はUbuntu 22.04.3
なのでJammy
になります
- APTパッケージの更新
apt-get update
sudo apt update
でもいいですが、前述の通り公式の手順に沿います
PerforceServerの追加設定
P4D(PerforceServer)を起動し、初期設定を行います
上記記事を参考に設定していきます
設定用のスクリプトを実行する
sudo /opt/perforce/sbin/configure-helix-p4d.sh
サービス名
サービスの開始や停止で使用する名前
リポジトリ名という認識で問題なし
今回は「Hoge」にする
Perforce Service name [master]: Hoge
サーバルート(P4ROOT)
バージョン化ファイルおよびメタデータを保管するディレクトリ
指定したいディレクトリがなければデフォルトでOK([]に記載されているディレクトリ)
Perforce Server root (P4ROOT) [/opt/perforce/servers/Hoge]:
Create directory? (y/n) [y]: y
サーバのUnicodeモード
日本語コメントを残したいのでYにする
一度オンにするとオフに戻せないので注意
Perforce Server unicode-mode (y/n) [n]: y
サーバの大文字と小文字の区別
区別させたくないのでNにする
UE以外で使う場合は基本Yでいい(はず)
追記 : UEでは文字の大小を区別しない(FName型)
オフにしないとバグの原因になるらしいので、注意
Perforce Server case-sensitive (y/n) [y]: n
サーバアドレス(P4PORT)
Helixサーバの待機対象となるホストとポート
通信をプレーンテキストまたはSSLのどちらで行うかを指定
詳細は通信ポート情報
環境や状況に合わせて設定する
今回はデフォルトのまま
Perforce Server address (P4PORT) [ssl:1666]:
スーパーユーザーの設定
スーパーユーザーに関する詳細はアクセスレベル
パスワードは大文字小文字混合か、数字混合の上、8文字以上必須
Perforce super-user login [super]: hoge
Perforce super-user password: HogeHoge
設定まとめ
Perforce Service name [master]: Hoge
Perforce Server root (P4ROOT) [/opt/perforce/servers/Hoge]:
Create directory? (y/n) [y]: y
Perforce Server unicode-mode (y/n) [n]: y
Perforce Server case-sensitive (y/n) [y]: n
Perforce Server address (P4PORT) [ssl:1666]:
Perforce super-user login [super]: hoge
Perforce super-user password: HogeHoge
P4D configuration has completed successfully.
と表示されたら成功です
また、p4 infoで現在のPerforceServerの情報が見られます
番外編
ローカルネットワーク上の別端末からアクセスできるようにする
- PowerShellを管理者実行で起動
-
ipconfig
を実行
WindowsのIPアドレス(IPv4 アドレス)とWSLのIPアドレスを確認する - ファイアウォールとプロキシの設定を変更する
netsh advfirewall firewall add rule name="allow p4port" dir=in action=allow protocol=TCP localport=1666
netsh interface portproxy add v4tov4 listenaddress=windows_ip listenport=1666 connectaddress=wsl_ip connectport=1666
windows_ipとwsl_ipを先程ipconfigで確認したIPアドレスに書き換える
ポートフォワード設定を削除する場合は以下を実行する
netsh interface portproxy delete v4tov4 listenport=1666
最後に
今回はまだ最低限サーバーを構築したのみで、Perforceで何かをするところまでは行けてません
次回クライアント側で使用できるところまで構築していきます
次回
追記
VPSを使用したAlmaLinux編を執筆しました