【VPS】PerforceでUE4ソースコントロール【サーバー】CentOS7

2023年9月30日

複数人でゲーム開発をする際に欲しいのがソースコントロール。GitとかGit Hubとかよく聞きますね。(この2つは別物)
Perforceでソースコントロールのサーバーを作ってみたのですが、情報が古かったりアチコチから情報を集めて苦労したのでまとめてみました。理解度はそこまで高くないので間違っていましたらぜひコメントやTwitterから指摘をお願い致します。


UE4でサポートされている3種の比較

git

メリット

  • テキストベースの物を管理しやすい
  • ネット上に 情報が豊富

デメリット

  • Commitする際、ファイル全体を保存するため、容量を食う
  • 現在ベータ版

参考資料
Kuzuniku blog: UnrealEngine4でGitを使って共同開発したい

Subversion(SVN)

メリット

  • バイナリファイルは差分で記録するため容量を食わない
  • UE4公式サポート

デメリット

  • ローカルでCommitできず、必ずサーバー上にCommitする。(一旦様子見で記録、ができない)

参考資料
ソース コントロールとして SVN を使用する | Unreal Engine
UE4 ソースコントロールを使ってアセット管理をする – Let’s Enjoy Unreal Engine
今日から始めるUnreal Engine 4のSource Control SVN編 – QiitaQiita

Perforce

メリット

  • UE4公式サポート
  • 管理用GUIがある
  • 天下のEpic GamesやUBI SOFTが使ってる

デメリット

  • 情報が少ない(苦労したのでこの記事を書いてます)
  • 5ユーザー20プロジェクト以上はライセンス料がかかり、高い

この欄の参考資料: 今日から始めるUnreal Engine 4のSource Control SVN編 – QiitaQiita

今回はPerforceを使ってみることにしました。

Perforceサーバーの構築

VPSサーバーのレンタル

私は4人でゲームを作っているので、サーバーでPerforceを使うことにしました。
お試しということでConohaの1GBコースにしました。

  • メモリ:1GB
  • CPU:2コア
  • SSD:50GB
  • 月額料金:900円(時間課金1.3円/時)
  • OS:Cent OS7.9

RPMの最新化(パッケージの更新)

$ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
$ rpm -qa gpg-pubkey*
gpg-pubkey-f4a80eb5-53a7ff4b
$ sudo yum -y update

参考資料:CentOS7 パッケージ管理(インストール済みRPMの最新化) – QiitaQiita

Perforce (P4D) のインストール

$ mkdir /etc/yum.repos.d
$ cd /etc/yum.repos.d
$ vi perforce.repo

perforce.repoを以下の内容で作成します。

[perforce]
name=Perforce
baseurl=http://package.perforce.com/yum/rhel/7/x86_64/
enabled=1
gpgcheck=1

あまりCUIに触ったことがない方向けにviの操作方法

  1. 「i」と入力してインサートモードに変更
  2. 編集
  3. ESCキーを押してインサートモードを終了
  4. 「:w」と入力して保存
  5. 「:q」と入力してviを終了

PERFORCEパッケージ署名鍵のインポート

$ rpm --import https://package.perforce.com/perforce.pubkey

Perforceパッケージのインストール

$ yum install helix-p4d

Perforceサーバの設定

$ sudo /opt/perforce/sbin/configure-helix-p4d.sh
Summary of arguments passed:

Service-name        [(not specified)]
P4PORT              [(not specified)]
P4ROOT              [(not specified)]
Super-user          [(not specified)]
Super-user passwd   [(not specified)]
Unicode mode        [(not specified)]
Case-sensitive      [(not specified)]

(略)

Please provide the following details about your desired Perforce environment:

初期設定です。何も入力せずにEnterキーを押すと[]内のデフォルト設定になります。記載があるものはオススメ設定です。オススメの理由は下記。

#サービスの名前
Perforce Service name [master]:
#ワークスペースを置くディレクトリ
Perforce Server root (P4ROOT) [/opt/perforce/servers/master]: 
Create directory? (y/n) [y]: y
#UnicodeモードをONにするか(日本語コメントを残したい場合はON)
Perforce Server unicode-mode (y/n) [n]: y
#英字の大小を区別するか
Perforce Server case-sensitive (y/n) [y]: n
#使用ポートの設定
Perforce Server address (P4PORT) [ssl:1666]: 1666
#superユーザーの名前
Perforce super-user login [super]: 
#superユーザーのパスワード
Perforce super-user password: 
Re-enter password.
Perforce super-user password: 

オススメ設定について

  • Unicodeモード:主に日本語コメントによるエラーなどを防ぐ目的でオンにします。
  • 英字の大小区別:UE4のアセット名は大小区別をしないので。詳しくは参考資料1を参照してください。

参考資料

  1. UE4でのPerforce運用・第一回-Qiita
  2. ソースコントロールのコメントで日本語が使えない – UE4 AnswerHub

ポート開放

一時的な開放

$ firewall-cmd --zone=public --add-port=1666/tcp

恒久的な開放

$ firewall-cmd --zone=public --add-port=1666/tcp --permanent

設定再読み込み

$ firewall-cmd --reload

設定確認

$ firewall-cmd --list-all

アップデートしておこうじゃないかと。

$ yum --showduplicates list helix-p4d
$ sudo yum install helix-p4d

クライアント(作業PC)側の準備

クライアントを用意する(Windows)

GUIクライアント(P4V)をダウンロードする。
Download Helix Visual Client (P4V)

インストールします。
インストール画面の中で情報を求められたら、
Serverには「(IPアドレス):1666」
ユーザー名はsuper以外に作成予定のユーザー名を入れておきます。

クライアントを用意する(Mac)

GUIクライアント(P4V)をダウンロードする。
Download Helix Visual Client (P4V)

インストールします。

各アプリケーションをApplicationsフォルダにドラッグ&ドロップしてインストールします。

クライアントの設定

P4Adminを起動し、接続します。
Server欄には

(IPアドレス):1666

と入力します。僕の場合は

ssl:(IPアドレス):1666

で接続できました。この後も「ssl:」が必要かどうかは環境に依るかもしれないので、各自の環境で試してみてください。
P4Adminでsuper以外のユーザーを作成します。権限設定なども行います。
次にコマンドプロンプトを起動し、環境変数を設定します。

p4 set P4USER=your.username
p4 set P4PORT=ssl:(IPアドレス):1666
p4 -P YourPassword typemap

your.usernameやYourPasswordは各自の設定で読み替えてください。「p4 -P YourPassword typemap」を入力するとテキストウィンドウが開きます。以下の内容に書き換えます。

# Perforce ファイルのタイプマッピングの仕様
#
#  TypeMap:             ファイルタイプ マッピングのリスト、一行にひとつづつ
#                       各行には、2 つのエレメントがあります。
#
#                       Filetype:'p4 add' で使用するファイル タイプ
#
#                       Path:     このファイル タイプを使用するファイル パターン
#
# 詳細は、'p4 help 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

編集したら保存し、終了します。コマンド プロンプトに Typemap saved と表示されます。
typemapの参考資料:Helix Core Server Administrator Guide: Fundamentals (2019.1)
なお、私は権限の設定を間違えていたようで、「You don’t have permission for this operation.」と出てしまったので、

p4 set P4USER=super
p4 -P YourPassword typemap
p4 set P4USER=your.username

というように一度ユーザーをsuper userに変えてtypemapを書き換えるという力業を使いました。
この対処が正しい自信はありませんので自己責任で…

p4 info

で現在のクライアント設定が確認できますので確認しながら格闘してみてください。(投げやり)
正直、試行錯誤しすぎてどのコマンドが要らなかったのか確証がありません。古いユーザーガイドを頼りに進めましたので、一応一番最後に最後にリンクを張っておきます。

ワークスペースの構築

p4vを起動します。Serverアドレス、作成したユーザー名を入力します。Workspaceにはソースコントロールのデータを置きたい場所を指定して、接続します。
EpicGamesの資料ではこの画面の「new」からユーザーを作成できるとあったんですが、私の場合はうまくいかなかったので、一度P4Adminでuserを作成してからp4vで接続しました。

Workspceタブを開き、「New Workspace」からWorkspaceを作成します。作成するとアップロードが促されますので、プロジェクトをアップロードします。 プロジェクトの以下のディレクトリだけ追加します。

SC_P4_Files_To_Add.png
引用元:UE4ドキュメント「 ソース コントロールとして Perforce を使用する」

緑でハイライトされているフォルダやファイルはデポに追加します。黄色のバイナリフォルダはオプションです。 プロジェクトでC++コードを使用している場合は、Sourceフォルダも追加します。
私の場合はアップロード元とPerforceのWorkspaceに設定したディレクトリが違ったので、アップロードが終わってから「GetLatest」でサーバーからダウンロードしました。

UEエディターの接続

UE4のプロジェクトを起動し、ソースコントロールの設定を開きます。

プロバイダをPerforceに変更するとServerとUser Nameは自動で埋まります。Available Workspacesからp4vで作成したWorkspaceを選択します。

「設定を承認」を押せば設定完了です。

ソースコントロールの使い方

設定が完了すると右クリックメニューにソースコントロールの選択肢が出るようになります。
詳しい使い方はUE4のドキュメントを参考にしてください。
ソースコントロール | Unreal Engine
ソース コントロールとして Perforce を使用する | Unreal Engine

参考資料

全体
UE4でPerforceと連携するための手順 Slide Share
Unreal Engine 4でソースコントロールをPerforceではじめよう #UE4Study | develog.holo
ソースコントロール | Unreal Engine
ソース コントロールとして Perforce を使用する | Unreal Engine

インストールについて
Linuxパッケージを利用してPerforceサーバをインストールすることができますか? | 東陽テクニカ
サーバーガイド2019英語:Helix Core Server Administrator Guide: Fundamentals (2019.1)
サーバーガイド2015日本語:Perforceの使用開始にあたって: インストールとアップグレード // Perforceサーバ管理者ガイド: 基本
クライアントガイド2015日本語:P4をインストールする // P4ユーザーズガイド