AWSを使ってPerforce HelixCoreサーバを構築してみた

バージョン管理システムのHelixCore(旧名:Perforce)をAWS上に構築しUnrealEngineのプロジェクトを管理してみます
2022.05.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ここでは、ゲーム開発でよく利用されているPerforce HelixCore(以降、HelixCoreと表記)をAWS環境上に構築し、UnrealEngine(以降UEと表記)に用意されているバージョン管理の仕組みが使えるようにしていきます。

HelixCoreとは

HelixCoreは、主にゲーム開発で利用されているファイルのバージョン管理システムです。

システム開発ではよくgitが利用されており、UEでもgitが利用可能です。ただ、ゲーム開発特有の事情として大容量のバイナリーデータ(グラフィックデータ、サウンドデータなど)を大量に扱うなど開発スタイルの違いを考慮するとHelixCoreを利用した方が何かと便利だと感じることが多いでしょう。たとえば、HelixCoreには同じデータを2人以上で同時に編集できないようにする仕組みなどがあります。なお、UEの開発元であるEpicGamesでもゲーム開発ではHelixCoreを利用しています。

HelixCore自体は有償のソフトウェアですが、5ユーザ、20プロジェクトまでは無償で利用できます。そのため、本格導入する前に自分たちで試して利用することも可能です。

HelixCoreサーバを構築する

HelixCoreのサーバをセットアップしていきます。AWS MarketplaceにはHelixCoreのイメージが配布されていますので、それを利用してサーバ構築を行ってみます。

本エントリーでは、利用できる環境を手早く構築することを優先してHelixCoreサーバを構築していきます。なお、Perforce社からはHelixCoreをAWS上に構築するためのホワイトペーパー(技術資料)が公開されており、よりAWSの特性を活かしたサーバ構築も可能です。実際に運用する際はセキュリティ等にも配慮した設定が必要となることでしょう。

今回構築するサーバのスペックですが、インスタンスとストレージサイズの設定は次の通りです。

・インスタンス : c5.4xlarge
・ストレージ : gp2 500GB

では、HelixCoreのサーバを構築していきましょう。AWS MarketplaceにてHelixCoreと検索キーワードを入力することで今回利用するイメージが選択できます。

あとはkey pair、Network Setting、ストレージのサイズを設定してインスタンスを作成します。このインスタンスが起動した段階でHelixCoreのサーバも起動しています。本来であればSecurityGroupの設定も必要ですが、このAMIを利用することで既に設定済みとなっています。

HelixCoreが扱うファイルは、/p4d/rootフォルダにあります。そのため、ターミナルからHelixCoreの設定を変更する際は、そちらのフォルダに移動した上に実施する必要があります。

文字コードの設定を変更する

デフォルトでは文字コードは自動選択となっています。このままでも利用できますが、今回は文字コードをutf-8(no BOM)で保存するように設定します。設定を変更するには、HelixCoreサーバにSSHでログインした後に、以下のコマンドを実行します。

最初に、HelixCoreサーバにsshでログインします。

$ ssh -i ~/.ssh/aws_server.pem ubuntu@xxx.xxx.xxx.xxx

HelixCoreサーバの設定変更は基本的にp4dコマンドを通して行います。この設定変更はUbuntuのrootユーザで実行しなければなりませんので注意してください。

rootユーザに切り替えた後、以下のコマンドをターミナルから実行します。実行が完了するとServer switched to Unicode modeとメッセージが出力されます。

# cd /p4d/root
# export P4CHARSET=utf8
# p4d -xi

Typemapの設定

次にTypemapを設定します。これはファイルの拡張子を元にファイルの種別(テキスト or バイナリ)や排他ロック(誰かが編集中のファイルは他の人が編集できないようにする)が必要なファイルなどを設定するためのものです。

UnrealEngine向けのTypemapはEpicGamesから配布されていますので適用します。

TypeMapは次の通りです。

# 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 //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
                binary+l //depot/....ubulk

Ubuntuのrootユーザに切り替えた後に、ターミナルから以下のコマンドを実行します。

# p4 typemap

すると、(デフォルトでは)vimが起動して編集状態になります。上記のTypemapに更新した後に保存します。Typemapの仕様は、Helix Coreサーバ管理者ガイド: 基本 (2019.1)に記載がありますので、設定の追加等を行う場合に参考にしてください。

クライアントをインストール

次にクライアントをインストールします。コマンドラインからも利用できますが、ここはGUIで操作していきます。クライアントは、Helix Visual Client (P4V) | Perforceからダウンロードできます。自分が利用しているOSにあわせてダウンロードします。今回はWindows版(p4vinst64.exe)を選択しました。

実行するとインストーラが起動し、インストールするアプリを選択するメニューが表示されます。管理者の方はすべてインストールします。管理者以外の一般ユーザは、Helix Visual Client(P4V)、Merge and Diff Tool(P4Merge)、Command-Line Clinet(P4)の3つをインストールするとよいでしょう。

管理者パスワードを変更する

HelixCoreの管理者アカウントは、初期設定でIDはroot、パスワードはp@ssw0rdとなってます。安全のためパスワードを変更しておきます。管理者用クライアントp4adminからメニューのAdministration > Change Password.. からパスワードが変更できます。

ユーザを作成する

次にユーザを作成します。今回は無償バージョンですので5名までのユーザが登録できます。

p4adminから、Users & Groupsタブを選択し、右クリックしたコンテキストメニューからNew Userを選択します。

ウィンドウから、User、Email、Full Name、Passwordを設定します。Passwordは、アルファベット以外の記号も混在させる必要があります。

これで、ユーザ登録できました。

ファイル管理するプロジェクトを登録する

UEのプロジェクトをHelixCoreのワークスペースとして登録します。詳細について、Unreal Engine でソース コントロールとして Perforce を使用する | Unreal Engine ドキュメントにも書かれています。

ですので、本エントリーではでは流れを中心に解説します。ワークスペースとはHelixCoreの用語で、ファイルを管理する場所を指します。

管理対象となるファイルを登録する際、初回のみp4vを利用します。新規にファイルを管理するためのワークスペースを作成し、そこに管理対象となるファイルをコピーします。

次にワークスペースにある管理対象となるファイルを"Mark for Add"で指定して追加します。

そして、ファイルをSubmitします。

これでHelixCoreサーバに管理対象となるファイルが登録されます。

UnrealEditorでHelixCoreを使えるように登録する

p4vを使わずUnrealEditorからも直接HelixCoreサーバへのファイルのコミットも可能です。ではHelixCoreの設定を行っていきましょう。

HelixCoreの設定は、UnrealEditorのTools > Connect to Source Controlを選択します。

すると設定用のウィンドウが開きますので。必要な項目を設定していきます。

UnrealEditorからコミットしてみる

ではUnrealEditorからコミットしてみます。実際にデータなどを変更し、保存した後にTools > Submit Contentを選択します。

すると、Submit Filesのウィンドウが表示されます。そこで変更内容とコミットされるデータを確認したあと、Submitボタンを押下することで、コミットされます。

これでUnrealEditorからも操作できるようになりました。HelixCoreはこのようにゲーム開発と相性のよいバージョン管理ツールですので、一度試してみてはいかがでしょうか。