Git, Mercurial, SVN のようにファイルのバージョン管理を行うためのソフトウエアです。 Git, Mercurial といった分散型とは異なり、中央サーバーが必要な集中型1)となっています。 集中型なので、排他的ロックが可能でバイナリデータの扱いに向いています。 また非常に高速であり、UE4 のような巨大なエンジンや、膨大な PC/コンソールゲームのリソースなどをまとめて管理する用途に向いています。 UE4 では標準で Perforce をサポートしており、ゲーム開発でも Perforce と組み合わせて用いられるケースが増えています。
Perforce を利用するにはライセンスの購入が必要です。 ただし 5 user までは無料で利用できるので、個人などの小規模な場合はコストが掛かりません。
Windows PC をサーバーにする場合の手順です。一人で使う場合は作業 PC にそのまま入れてください。
すでに起動しているサーバーを一旦停止します。
p4 admin stop
データベースと ssl の設定を行います。管理者権限でなくても構いません。先に P4ROOT , P4SSLDIR のフォルダを作っておいてください。
p4 set -s P4ROOT=C:\Perforce\root p4 set -s P4SSLDIR=C:\Perforce\ssl p4 set -s P4CHARSET=utf8 p4 set -s P4PORT=ssl:localhsot:1666 p4d -xi p4d -Gc
データベースの場所や文字コードなど、各種設定を行います。 これはサーバー(Service)側の設定になります。 管理者権限が有効な Console (cmd.exe や PowerShell) で実行してください。( -S オプションの大文字、小文字の違いに注意してください)
p4 set -S perforce P4PORT=ssl:1666 p4 set -S perforce P4ROOT=C:\Perforce\root p4 set -S perforce P4SSLDIR=C:\Perforce\ssl p4 set -S perforce P4CHARSET=utf8
ipv6 対応が必要な場合は P4PORT を以下のように変更します。(https://www.toyo.co.jp/files/user/img/product/ss/help/perforce/r15.1/manuals/p4sag/chapter.install.html)
p4 set -S perforce P4PORT=ssl64:[::]:1666
サーバーを起動します。これも管理者権限が必要です。
svcinst start -n perforce
ユーザーを追加します。ここから先は管理者権限でなくても構いません。
p4 trust のあとに yes を入力します。
p4 trust
任意のユーザーを追加します。エディタ (メモ帳) が立ち上がるのでそのまま閉じます。(必要ならメールアドレスの修正)
p4 user <ユーザー名>
下記のコマンドで、ユーザーが追加されているかどうか確認できます。
p4 users
アクセス権限を有効化します。 下記のコマンドを実行するとエディタ (メモ帳) が開くので、下の方で自分のユーザーが “super” になっていることを確認してください。 問題なければ何もせずに閉じます。
p4 protect
これで終わりです。 あとは P4V などの client から Perforce Server を利用することができます。
また P4Admin を使うとサーバーの管理も GUI 上で行うことができます。
Windows よりも高速なので、可能なら Linux をサーバーにした方が良いようです。
下記手順ではとりあえず一般ユーザー権限でサーバーを起動しています。
サーバー起動
$ mkdir $HOME/perforce $ mkdir $HOME/perforce/root $ mkdir $HOME/perforce/ssl $ chmod 700 $HOME/perforce/ssl $ export P4ROOT=$HOME/perforce/root $ export P4SSLDIR=$HOME/perforce/ssl $ export P4PORT=ssl:1666 $ export P4CHARSET=utf8 $ cd $HOME/perforce/root $ p4d -xi $ p4d -Gc $ p4d
ユーザー作成など
$ export P4PORT=ssl:localhost:1666 $ export P4CHARSET=utf8 $ p4 trust $ p4 user admin $ p4 users $ p4 protect
あとは P4Admin を使って gui 上で設定可能です。
サーバーの ssl 証明書は 1~2 年ほどで切れるため定期的に更新する必要があります。
UE4 のアセットを扱う場合は typemap の設定が必要です。
p4 typemap
テキストエディタ (メモ帳) が開くので、下記のページにある TypeMap の一覧をコピペします。
上記以外にも、排他ロックが必要な binary file は “binary+l” で追加しておいてください。
UE5 からは .~.json と .so への “+w” が必要なので注意。
TypeMap: binary+w //....exe binary+w //....dll binary+w //....lib binary+w //....app binary+w //....dylib binary+w //....stub binary+w //....ipa binary+w //....pdb binary+w //....obj binary+w //....a binary+w //....response binary+w //....o binary+w //....bin binary+w //....so text+w //....target text+w //....modules text+w //....version text+w //....generated.h text+w //....xml text+w //....log text+w //....exe.config text+w //....tps text+w //....csproj text+w //....csproj.References text+w //....dev.json text+w //....deps.json text+w //....runtimeconfig.json text+w //....tlh text+w //....tli ~
Git/Mercurial と違い、除外指定ファイルはフォルダに置いておくだけでは機能しません。 予めコマンドで設定しておく必要があります。 またプロジェクトではなくユーザー単位の判定になるので、使用する方が各自設定を行ってください。
p4 set P4IGNORE=<除外設定ファイルのパス>
例
p4 set P4IGNORE=D:\Workspace\UE\.p4ignore.txt
除外指定は Git/Mercurial ほど柔軟ではなくかなり制限があります。
git のようなより厳密な除外判定を行いたい場合は、p4 add するための外部ツールを用意した方が良いでしょう。
コマンドラインから設定する P4CHARSET は、“utf8” を設定すると BOM 無しになります。BOM を使用する場合は “utf8-bom” を設定します。
P4V で設定する CHARSET の “utf-8” はコマンドラインの設定と逆になるので注意してください。デフォルトの “Unicode (UTF-8)” は BOM 付きです。BOM 無しにするには、“Unicode (UTF-8, no BOM)” を選択する必要があります。
P4 Command Line | P4V | |
---|---|---|
UTF-8 BOM 無し | utf8 | Unicode (UTF-8, no BOM) |
UTF-8 BOM あり | utf8-bom | Unicode (UTF-8) |
Perforce ではファイルタイプが text の場合改行コード変換が行われます。
ファイルタイプ判定が間違っているとバイナリファイルでも CR (0x0d) が挿入されてしまうので注意してください。 そのため typemap の設定は重要になります。
例えば utf16 のファイルが unicode ではなく text で登録されてしまうと 「00 0D 00 0A」 → 「00 0D 00 0D 0A」と余計なバイト文字が挿入さ文字化けします。