💡

AWSとPerforceでUnrealEngineのソースコントロール

2022/05/16に公開

はじめに

この記事を書こうと思ったキッカケは、とにかくPerforceに関する日本語記事が少ない & 初心者にはちと難しい内容ばかりだったので、初心者代表としてメモを残そうじゃないかと。
UnrealEngine4で共同開発やバージョン管理がしたいけど、具体的にどうやればいいの?
AWSのインスタンス起動や設定、Perforceサーバの初期設定や使い方が知りたい!
という方に少しでもお役に立てれば嬉しいです。

開発環境

  • クライアントOS:Windows11
  • サーバOS:Ubuntu20.04 LTS

作業中にインストールするソフト

UE4のインストールとAWSのアカウント作成は済ませてある前提で話していますので、作成していない方は作成してください。

  • Tera Term
  • Helix Core (P4D)
  • Helix Visual Client(P4V)

作業開始

全体の流れです。

  1. AWSでインスタンスを起動
  2. Tera TermでUbuntuにSSH接続
  3. Ubuntuの設定
  4. P4Dのインストールと初期設定
  5. P4Vでワークスペースを作成する
  6. UE4でソースコントロールをオンにする

それでは始めて行きましょう。

1. AWSでインスタンスを起動

AWSのダッシュボードからインスタンスの起動を選択する。

1.1. 名前とタグの設定

なんでもいいです。好きな名前で登録しましょう。

1.2. アプリケーションおよびOSイメージ(Amazonマシンイメージ)

いやどれ選べばええねん!って自分が最初につまずいたとこですね。
WindowsかLinux系かだと思いますが、Linuxの方が高速 & 設定しやすいし、個人的に昔Ubuntuを使っていたのでUbuntuで。

Ubuntu Server 20.04 LTS、アーキテクチャは64ビットを選択します。

1.3. インスタンスタイプ

無料枠はt1.microとt2.microしかないです。変な理由がない限りt2.microにしましょう。

1.4. キーペア

新しいキーペアの作成を押すと、作成画面が出ます。

キーペア名は好きな名前に、
キーペアのタイプはRSA、
プライベートキーファイル形式は.pemでキーペアを作成する。

1.5. ネットワーク設定


VPCはデフォルトのままで構いません。
サブネットはプルダウンすると3つ出てくるので、一番上のを選択する。
パブリックIPの自動割り当ては有効に。

次に、セキュリティグループを作成します。名前はわかりやすいものにした方が後々便利です。
セキュリティグループを作成することで、AWSに接続できるポートを開放することができます。
Perforceに接続するには、TCPのポート1666を開放します。また、Ubuntuの設定をするためにWindowsからssh接続するので、ssh接続で一般的に使われているポート22を開放します。
赤枠で囲んだAdd security group ruleを押せば新しいルールを追加できます。

1.6. ストレージを設定

無料枠は30GBまでです。
ルートボリュームはgp2かgp3でいいと思います。違いがあるらしいですが、知りたい方はググってみてください(そして私に教えてくれ)
私はいつもgp3にしてます。

1.7. 起動!!!

右の方に概要の項目があり、今まで設定してきた内容が記載してあると思います。
インスタンス数が1であることを確認したら、インスタンスを起動を押します。
これにてようやくEC2が起動しました。

2. Tera TermでUbuntuにSSH接続

2.1. Tera Termのインストール

Tera Termをインストールします。
https://ttssh2.osdn.jp/

2.2. Tera Termの接続設定

Tera Termを起動すると、接続先のIPアドレスを聞かれます。
AWSのダッシュボードからパブリック IPv4 アドレスをコピーして、貼り付ける。

OKを押すと、次はSSH認証です。

UbuntuOSのEC2にssh接続するときの初期ユーザー名は「ubuntu」です。
パスフレーズはありません。
認証方式はRSA/DSA/ECDSA/ED25519鍵を使うにチェックし、秘密鍵に先ほど作成した.pemのキーペアを選択する。
OKを押すと接続されるはずです。

3. Ubuntuの設定

3.1. Ubuntuのアップデート

ここからはUbuntuで作業します。
先にアップデートとアップグレードをしておきます。

sudo apt update
sudo apt upgrade -y

3.2. 時刻合わせ

Ubuntuの時刻が日本になっていないので合わせる。

timedatectl

上記のコマンドを打つと、次のようになる。

おそらくTime zoneの項目がEtc/UTCになっているので、これをAsia/Tokyoに変更する。

sudo timedatectl set-timezone Asia/Tokyo

もう一度timedatectlを打って、Time zoneが変わっているか確認する。

3.3. ファイアウォールの設定

まずはファイアウォールのステータスを確認する。

sudo ufw status

Ubuntuファイアウォール(ufw)の設定はデフォルトで無効になっているので、「Status: inactive」と表示されます。
ここから有効にするのですが、まずは全ての番号を拒否してから必要な番号のみを開放します。

sudo ufw default deny

ssh接続とPerforceで使用するポートは22と1666でしたね。

sudo ufw allow 22/tcp
sudo ufw allow 1666/tcp

これで22と1666以外のポートは拒否する設定になりました。
ufwを有効にします。

sudo ufw enable

最後にもう一度ステータスを確認しましょう。設定した通りになっていれば大丈夫です。

4. P4Dのインストールと初期設定

4.1. P4Dのインストール

  • Perforceから公開鍵をダウンロードする。
wget https://package.perforce.com/perforce.pubkey
  • 公開鍵のフィンガープリントを確認する。
gpg perforce.pubkey


実行して、途中にある英数字の羅列が、下に書いたのと同じであればOKです。
E581 31C0 AEA7 B082 C6DC 4C93 7123 CB76 0FF1 8869

  • ダウンロードした公開鍵をaptリングに追加する。
wget -qO - https://package.perforce.com/perforce.pubkey | sudo apt-key add -

OKと表示される。

  • PerforceリポジトリをAPT構成に追加する。
sudo vim /etc/apt/sources.list.d/perforce.list

Vimが立ち上がるので、次のコードを記入する。

deb http://package.perforce.com/apt/ubuntu focal release

Ubuntu20.04 LTSの開発コードはfocalです。バージョンによって変わるので適宜書き換えること。
保存して閉じる。

  • 構成を変えたので再度アップデート
sudo apt update
  • P4Dパッケージのインストール
sudo apt install helix-p4d -y

4.2. P4Dの起動と設定

  • P4Dを起動する。
sudo /opt/perforce/sbin/configure-helix-p4d.sh

起動すると初期設定に入る。
順番に、

  • サーバ名
  • P4Dのルートディレクトリ
  • ディレクトリを作成するか
  • Unicodeモードの有無
  • 文字の大小の区別
  • サーバアドレス
  • スーパーユーザー名(管理者)
  • スーパーユーザーパスワード
  • スーパーユーザーパスワード(確認)

これで起動します。
サーバ名、ユーザー名、パスワードを入力
Unicodeはy、文字の大小はnを打ってからEnterを押してください。
それ以外はデフォルトのままEnterでOKです。

もうひとつ、、、

5. P4Vでワークスペースを作成する

5.1. P4Vのインストール

ここからはWindowsでの作業となります。
PerforceのWebサイトから、P4Vをインストールします。
https://www.perforce.com/downloads/helix-visual-client-p4v

P4Vの中には、P4Admin、P4V、P4Mergeがありますが、管理者の方は全てインストールしましょう。ただの共同作業者の方は、P4Adminは必要ありません。

5.2. P4Adminに接続 & ユーザー追加

インストールが終わったら、P4Adminを立ち上げます。

タブにRemote ServerとPersonal Serverがありますが、共同作業なのでRemote Serverに。(AWSじゃなくてローカル環境で使用する場合ならPersonalで良い?)
Serverの欄には、ssl:IPアドレス:1666
IPアドレスの部分は、Tera Termの接続に使ったIPアドレスを入力する。
Userの欄には、さっき決めたスーパーユーザー名を入力する。

OKを押すとパスワードの入力が出るので、これもさっき決めたパスワードを入力する。

ログインするとダッシュボードのような画面が出てくる。
左上に次のアイコンが整列していると思うので赤枠のユーザー追加をクリックする。

新規ユーザー登録フォームが出るので、赤枠の部分のみで良いので入力する。
Userの欄がログインするときに使うユーザー名になる。

OKを押すと登録完了。

5.3. P4 Typemapのセットアップ

UnrealEngine公式ページにもありますが、Perforceがアンリアルのファイルタイプをどのように扱うかを認識させるために必要な儀式だそうです。

コマンドプロンプトを開いてコードを打ちます。

p4 set P4USER=your.username
p4 set P4PORT=ssl:IPアドレス:1666

your.usernameはスーパーユーザー名を入力してください。

p4 typemap

と入力するとテキストエディタが開かれます。
Typemap:以下の文を、公式ページにあるタイプマップからコピペして書き換えます。
Ctrl + Sで保存して閉じると、Typemap Savedと表示されます。

5.4. P4Vの起動 & 簡単な用語説明

P4Vを起動する。
P4Adminを起動したときと同じようにConnectionが出てくるので、
Server欄には、ssl:IPアドレス:1666
User欄には、さっき作った管理者ではない一般ユーザー名。
Workspace欄は空白でOKです。

接続すると、P4Vのホームが出てきます。

用語については公式ユーザーズガイドを見たほうが良いと思いますが、今度私なりにも頭整理のために書こうと思います。

とりあえず赤枠の大事な用語だけ・・・

  • Depot(ディポ)
    • サーバのファイルリポジトリ。要はサーバにどんなファイルがあるかを見れる場所です。
  • Workspace
    • ローカル内のどのディレクトリを作業場とするか決めるもの。(とんでもなく省略したので是非使いながら覚えてください。うまく説明できない。)
  • Checkout
    • チェックアウトしたファイルは、その人以外編集できなくなります。「私が今からこのファイルを編集するので触らないでください」と宣言するような意味。
  • Submit
    • チェックアウトしたファイルをDepotにアップロードすること。チェックアウトしても、サブミットさえしなければDepotのファイルが更新されることはありません。

5.5. ワークスペースの作成

ワークスペースを作成していきます。
上タブのViewから、Workspacesと、Submit Changelistsを選択して右のタブに追加します。

追加したWorkspacesタブを選択した状態で、Ctrl + Nを押すと新規ワークスペース作成画面が出ます。

  • Workspace name:自分のワークスペースだとわかる名前にしましょう。(ユーザー名 + プロジェクト名とか)
  • Workspace root:ワークスペースに登録するローカルのディレクトリです。Browse...を押して、共同作業したいUE4プロジェクトのディレクトリを選択します。
  • StreamとStream at changeは空白のままで。
  • Workspace Mappings:サブミットしたときに、Depotのどこにアップロードするかを決めます。

Workspace Mappingsですが、Depotの中にもフォルダを作ってわかりやすくしたいですよね。
今はUE4のプロジェクトを使ってますが、いずれUE5に移行したい。とすると

  • Depot
    • UE4プロジェクト
      • プロジェクト1
      • プロジェクト2
    • UE5プロジェクト
      • プロジェクト1
      • プロジェクト2

のように管理した方が分かりやすいです。
しかし、普段のように右クリックしてフォルダを作成・・・としてもDepotにフォルダを作ることはできません。

このWorkspace Mappingsの設定の時に、Depotにないフォルダを指定することで自動的にフォルダが作成され、階層分けされます。
実際にやってみましょう。

赤枠のアイコンをクリックすると、Depotがパス形式になって表示されます。

さっき書いたフォルダ分けをするなら、パスを次のように書き換えます。
Your_ProjectNameはご自身のプロジェクト名に直してください。

これでDepotの直下にUE4Projectフォルダと、Your_ProjectNameフォルダが作成され、このワークスペースはYour_ProjectNameフォルダ内で作業することを定義できました。

OKを押すと、次の警告文が出る場合があります。

先にUE4プロジェクトが作成してあると出ます。
「すでにフォルダあるし中身も入ってるんだが!?違うディレクトリ選んだ方がいいんじゃねーの!?」と聞いてきますが、Noで大丈夫です。

すると、サーバ空っぽだからファイル追加しなさいと言われます。

右側のBrowseからファイルを追加しますが、追加するファイルはUnrealEngine公式ページに書いてあります。公式から画像拝借しました。緑色のフォルダを追加します。

6. UE4でソースコントロールをオンにする

6.1. UE4からPerforceに接続

それではUE4のプロジェクトを立ち上げましょう。
ソースコントロールを押して、ソースコントロールに接続を押します。

サーバとユーザー名を入力して、利用可能なワークスペースを押すと作成したワークスペースが出てくるので、選択してから設定を承認を押す。

ソースコントロールが次のようになれば接続成功です。

お疲れさまでした!!!

まとめ

初投稿でした。わかりにくい部分や、順番通りにやったけど出来なかった等あればコメントください。
みんなでPerforce使おう!!!

参考

https://kbkn.xyz/ue4/ue4-perforce/

https://www.perforce.com/blog/vcs/how-use-unreal-engine-4-perforce

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

Discussion