🗂

[UE5] ローカルに構築したPerforce Helix Coreと連携させる

2023/02/24に公開

前置き

  • UE5の仮想アセット[1]を使いたいのでサポートされてるPerforceを導入してみます
  • 今回はセットアップからやっていきます。構築手順は以下の記事を参照ください

https://zenn.dev/174/articles/189c2e49185d08

やりたいこと

  • UE5プロジェクトをWindowsのローカル上に構築したPerforce Helix Coreと連携させる
  • P4 Typemapの設定
  • Workspaceの作成
  • Depotへの紐づけ・ファイル追加
  • UE5プロジェクトからの接続・ソースコントロール有効化

構成イメージ

※正確でない部分もあるかもですが、あくまでイメージとしてご容赦ください

また、以下の記事が大変参考になります

https://zenn.dev/p4misc/articles/9a9ae63a6830cc7b1d78

登場人物

Perforce

  • バージョン管理プロダクト群。バイナリファイルの扱いが得意とのこと
  • 各機能ごとに以下のHelix~に分かれるが、慣習的に旧名のPerforceと呼ばれてるっぽい

Helix Core Server

  • 通称P4D、Windowsサービスとして起動する場合P4Sと呼ぶ
  • 内部に持っているデータベースでバージョン情報やDB自身のメタデータを管理している

Helix Visual Client

  • 通称P4V
  • 開発者が自端末からP4Dの機能(バージョン管理等)を利用するのに使う

手順

UE5プロジェクトを準備

作成していない場合は作成する

後々クライアント側のWorkspace(作業ディレクトリ)としての利用を考えて、以下のディレクトリ構成で配置しました

任意のディレクトリ
└─Unreal Projects
    └─Workspaces
	└─<プロジェクト名>★ここをWorkspaceとして登録する
            └─UE5_1 (UEのバージョン。大規模なアップデートがあれば分岐する)
                └─<プロジェクト名> (UEプロジェクト作成時に作成されるプロジェクトのルート)
                   ├─Config
                   ├─Content
                   ├─Source (C++プロジェクトのみ)
                   ├─<プロジェクト名>.sln (C++プロジェクトのみ)
	           └─<プロジェクト名>.uproject

ディレクトリ構成についてはヒストリアさんの記事&資料を参考にさせて頂きました

https://historia.co.jp/archives/13406/

P4 Typemapの設定

以降は公式ドキュメントに沿ってセットアップしていきます

https://docs.unrealengine.com/5.1/ja/using-perforce-as-source-control-for-unreal-engine/

  1. コマンドプロンプトを管理者として実行
  2. P4Dサービスが起動していない場合は起動
C:\WINDOWS\system32>sc start Perforce
[SC] StartService FAILED 1056:

サービス インスタンスは既に実行されています。


C:\WINDOWS\system32>
  1. p4コマンドを実行 ※<ユーザー名>は自身のPerfoceユーザに置き換えてください
C:\WINDOWS\system32>p4 set P4USER=<ユーザー名>

C:\WINDOWS\system32>p4 set P4PORT=localhost:1666

C:\WINDOWS\system32>
  1. 以下のコマンドを実行。テキストエディタが開くのでtypemap設定ファイルに追記し、保存して閉じる
C:\WINDOWS\system32>p4 typemap
Typemap saved.

C:\WINDOWS\system32>
編集差分 +の部分を追記する
# Perforce File Type Mapping Specifications.
#
#  TypeMap:             a list of filetype mappings; one per line.
#                       Each line has two elements:
#
#                       Filetype:The filetype to use on 'p4 add'.
#
#                       Path:     File pattern which will use this filetype.
#
# See 'p4 help typemap' for more information.

TypeMap:
+               binary+w //....exe
+               binary+w //....dll
+               binary+w //....lib
+               binary+w //....app
+               binary+w //....dylib
+               binary+w //....stub
+               binary+w //....ipa
+               binary //....bmp
+               text //....ini
+               text //....config
+               text //....cpp
+               text //....h
+               text //....c
+               text //....cs
+               text //....m
+               text //....mm
+               text //....py
+               binary+l //....uasset
+               binary+l //....umap
+               binary+l //....upk
+               binary+l //....udk
+               binary+l //....ubulk

Depotの作成 (2023/3/2 追加)

  1. P4Adminを起動

  2. "File > New... > Depot..."をクリックし、作成したいDepot名を入力して"OK"をクリック

  1. "Depot type"で"local"を選択して"OK"をクリック

Workspaceの作成

  1. P4Vを起動

  2. 画面左の "Depot"もしくは"Workspace"をクリックしてタブを表示し、"(no workspace selected)" をクリックして表示されるプルダウンメニューから "New Workspace..." をクリック

"Depot Tree"タブがどこにあるかわからない場合
  • "View > Depot Tree"をクリック

"Workspaces"タブから行う場合
  • "View > Workspaces" で "Workspaces"タブを表示

  • "Workspaces"タブの中で右クリックし、"New Workspace..."をクリック

  1. ポップアップウィンドウが開くので、以下の通り設定
    • Workspace name:
      • 任意のWorkspace名を入力
    • Workspace root:
      • ローカルの作業ディレクトリを選択 (ここで★を付けたディレクトリ)
    • Workspace Mappings:(任意)
      • 一番右のハンバーガーメニューみたいなアイコンをクリックしてマニュアル入力に切り替え
      • 左側のDepotの指定が作成したDepot名になっていることを確認
      • 既定で用意されている"depot"など、他のDepot名になっている場合は修正

  1. "OK"をクリック

  1. 既にリソースが存在するディレクトリを "Workspace root"に選択したため、警告が表示されるが "No" をクリック

  1. サーバー側に追加するリソースを選択するよう促される[2]が、"Cancel"をクリックしてWizardを終了

ファイルの追加

  1. 画面左の "Workspace"をクリックして "Workspace Tree"タブを表示し、"Workspace root" で選択したローカルリソースが表示されることを確認
"Workspace Tree"タブがどこにあるかわからない場合
  • "View > Workspace Tree"をクリック

  1. 以下を複数選択(Ctrl + 左クリック)し、画面上部の操作メニューの "Add"をクリック[3]
    • Config
    • Content
    • Source (C++プロジェクトのみ)
    • <プロジェクト名>.uproject
    • <プレビュー画像> (作成してる場合のみ)
    • Plugins (作成してる場合のみ) [4]

  1. "OK"をクリック

  • 以下のように、選択したディレクトリのファイルに "+"がついていればOK (ファイルを内包しないディレクトリは追加できないので無視して問題ない)

  1. "Pending Changelists"タブに表示されたチェンジリストを右クリックし、"Submit..."をクリック
"Pending Changelists"タブがどこにあるかわからない場合
  • "View > Pending Changelists"をクリック

  1. ポップアップウィンドウが開くので、"Write a changelist description"にコメントを入力し、"Submit"をクリック

  1. 画面左の "Depot"をクリックして "Depot Tree"タブを表示し、追加したファイルが表示されればOK

UE5プロジェクトから接続・ソースコントロール有効化

  1. UE5プロジェクトを起動

  2. レベルエディタの右下にある "Source Control > Connect to Source Control..."をクリック

  1. ポップアップウィンドウが開くので、以下の通りに設定し、"Accept Settings"をクリック
    • Provider
      • Perforce
    • P4 Config
      • 無効(チェックしない)[5]
    • Server
      • localhost:1666 (ローカルPCにクライアント・サーバを同居させてる場合)
    • User Name
      • <Perforceのユーザ名>
    • Workspace / Available Workspaces
      • "Available Workspaces"をクリックすると作成したWorkspaceが表示され、選択すると自動入力される

  1. レベルエディタの右下の "Source Control"の左が緑のマークになっていればOK

エディタの環境設定 (2023/2/26 追加)

個人で利用する場合は以下設定すると便利かもしれません

  1. "Edit > Editor Preferences"でエディタの環境設定を開く

  2. "General > Loading & Saving > Source Control"にある、以下の設定を運用に応じて有効化

    • Automatically Checkout on Asset Modification
    • Prompt for Checkout on Asset Modification
    • Add New Files when Modified

おまけ Helix Plugin for Visual Studio(P4VS)からのログイン・ソースコントロール

コードを編集する際に自動チェックアウトしてくれたりするので、VSでC++を使う場合は入れておくと便利です。

Helix Plugin for Visual Studio(P4VS) vsixファイル

https://www.perforce.com/downloads/helix-plugin-visual-studio-p4vs

導入については以下の記事を参照ください

https://zenn.dev/174/articles/189c2e49185d08#helix-plugin-for-visual-studio(p4vs)インストール

以下の手順は導入が終わっていることを前提で進めます

  1. "ファイル(F) > Open Connection to a Helix Core server..."をクリック

  1. 以下の通り入力し、"OK"をクリック
    • Server:
      • localhost:1666 (ローカルPCにクライアント・サーバを同居させてる場合)
    • User:
      • <Perforceユーザ名>
    • Workspace:
      • <今回作成したWorkspace>

  • この後は "ファイル(F) > Helix" や "表示(V)"、ファイル右クリックからP4Vでできるような操作ができます。
  • 利用をやめたい場合は、拡張機能を無効化 or アンインストールするのがよいかと思います
    • ソースコントロールの設定切替だけでは挙動がおかしくなったので

各設定項目や利用方法の詳細については、以下の東陽テクニカさんのドキュメントを参照ください(旧バージョンなのでそこだけ注意)

https://www.toyo.co.jp/files/user/img/product/ss/pdf/p4vs_ja.pdf

その他参考資料

そのほか以下の情報を参考にさせて頂きました

https://dev.classmethod.jp/articles/parforce_helixcore_server_with_aws/

https://zenn.dev/pate_techmemo/articles/81720f755dace5

https://qiita.com/dgtanaka/items/bfacaff81faf34d21538

以上

脚注
  1. 仮想アセットの参考情報 1)https://www.unrealengine.com/ja/tech-blog/virtual-assets-in-unreal-engine-5-1-smaller-faster-data-syncs 2)https://docs.unrealengine.com/5.1/ja/virtual-assets-in-unreal-engine/ 3)https://www.docswell.com/s/EpicGamesJapan/53P8EK-UE5_1_World Buliding_Core#p44 ↩︎

  2. 恐らくそのサーバで初めてWorkspaceを作成する場合のみ ↩︎

  3. 右クリックメニューの"Mark for Add..."だと複数追加ができなかった ↩︎

  4. このタイミングでディレクトリ(フォルダ)を作成した場合は、"Refresh"をクリックして最新状態を反映させる ↩︎

  5. 資料がネットに転がってなかったので最近追加された項目っぽい。チェックして有効化すると以降の項目がグレーアウトされ、恐らくP4Vの環境設定をもとに自動入力される。設定はP4Vを起動して "Connection > Environment Settings..." から "Use current connection for encironment settings"を外して表示されるもの。私の場合、Workspace名が入っていなかったのだが、その場合はクライアント端末のホスト名になるようで、UE5エディタの "Workspace"の欄は端末ホスト名が自動で入力された。特に使用する必要がないし、場合によっては事故のもとになりそうなので無効とする ↩︎

Discussion