BLOGブログ

2021.06.25UE5

[UE5] 同じマップを複数人で同時編集できる! “One File Per Actor”の使い方

執筆バージョン: Unreal Engine 5.0 Early Access

今回はUE5にて新しく追加された機能、”One File Per Actor”(以下OFPA)について紹介したいと思います。

※尚、この記事はバージョン管理システムに「Perforce」を使用する前提で解説していきます。Subversion、Plastic SCM、Gitに関しましてはUE4同様プルダウンメニューから確認できていますが、検証は行っていません。

はじめに

UE4ではレベルに配置されたアクターの情報は、すべて配置したレベルに保存されていました。

そのため、ファイルとしては1つのレベルのファイルのみが存在する形になっており、配置したアクターを編集するたびにそのレベルを上書き保存することで更新を行ってきたかと思います。この仕組はファイルを管理する上ではとても楽ですが、一つ大きな問題を抱えていました。

それは複数人で同じレベルを作業する場合、レベルのファイルが1つしかないため作業の競合を起こしかねないという問題でした。
従来の解決方法では、「チェックアウトした人がサブミット完了するまで待つ」「作業する人間単位でサブレベルを分ける」など、開発現場内で運用で回避したり何かしらの工夫や対策が必要でしたが、UE5では今回ご紹介するOFPAを利用する事で、この問題を解消できるようになりました。

OFPAとは

OFPAは、従来のアクターの情報をレベルに保存する以外にも、レベルに配置したアクターを個別のファイルとして管理することで、作業の競合を起こしにくくする機能です。ファイルさえ分かれていれば、同じレベル内に配置しているアクターであっても、同時に編集してそれぞれで保存することが可能というわけです。

Perforceとの連携

まずは前提としてバージョン管理システムを利用する必要があるので、まずはPerforceの機能をUEエディタ内でも使えるようにします。この方法はUE4と全く同じです。

接続に成功した場合、下の方に接続が完了した旨のポップアップが表示されます。

UEエディタとPerforceとの連携が完了したら、まずは編集したいレベルを事前にチェックアウトします。

OFPAを使う

レベルに配置した編集したいアクターを選択し、パッケージ化モードを「外部」に変更します。これだけでこのアクターはレベルとは独立した別ファイルになります。

このOFPAの設定を保存するため、忘れずに対象のアクターが配置されているレベルを保存しましょう。

しかしこれだけでは当然見た目も変わらないため、きちんと別ファイルになったのかわかりません。そこで「ツール」の「変更リスト」でアクター用のファイルが別になったかを確認したいと思います。

変更リストを確認すると、さきほどチェックアウトしたレベル以外に、先程選択した「Chair」であるStaticMeshActorのファイルが追加されている事がわかります。無事ファイルが別になっている事が確認できました。

ちなみにUEエディタを使わずにP4Vなどの専用クライアントツールからチェンジリストを確認するとこのようになります。

UEエディタでは対象のアクターが「Chair」だと認識できますが、実際に出力されたファイル名は全く別の文字列になっているため、何のアクターだかわからなくなっています。
そのため、OFPAを使ってアクターを編集する場合は、UEエディタの変更リストを確認するようにしましょう。

レベル単位でOFPAを利用する場合

また、OFPAはまとめてレベルに配置されているすべてのアクターに適用させる事が可能です。その場合はワールドセッティングの「外部アクタを使用」にチェックマークを入れるだけです。

チェックマークを入れたら下記のようなメッセージが出てくるので、「はい」を選択すれば完了です。

ただしここでの設定はサブレベルには適用されないため、各サブレベルに配置されているアクターにも適用させたい場合は、サブレベルごとに直接開いて、そこでワールドセッティングを編集必要があります。

公式ドキュメントによると、レベルと複数のサブレベル全てを自動的に変換するコマンドが提供されているようなので、一括で全てに適用したい場合はそのコマンドを使うとよいでしょう。使い方も記載されています。

https://docs.unrealengine.com/5.0/ja/WorldFeatures/OneFilePerActor/

サブレベルに椅子を2つ置いて、そのサブレベルのワールドセッティングを「外部アクタを使用」に変更した場合がこちらになります。

個別で設定しなくても自動で2つのアクターのパッケージ化モードが「外部」に変更されている事が確認できました。この時も忘れずにサブレベルを保存しましよう。

OFPAの利用により変更したレベル、追加されたアクターはそれぞれ変更リストで確認すると下のようになります。

これらをサブミットすれば完了です。

実際に作業を行う場合

OFPAを利用したアクターを編集する場合、パラメーターを変更した際にチェックアウトを求められます。

チェックアウトされていないアセットを編集するとチェックアウトを求められる事はこれまでのアセットでも同様ですが、ここで注目すべきはチェックアウトを求められているファイルがレベルではなくアクターだという事です。

これでアクター単位でチェックアウトできている事が確認できました。レベルはチェックアウトする必要がないため、誰かがレベルをチェックアウトしていても、何も気にする事なくこのアクターを編集する事ができます。

では、このアクターがもし誰かがチェックアウトした場合はどうなるでしょうか?
その場合はUEエディタがきちんと警告してくれます。

この場合は大人しくチェックアウトしているユーザーの作業を待つか、その人に声を掛けるようにしましょう。

さて、アクターの編集が終わりました。あとは保存をしてサブミットするだけですが、この際に注意が必要です。UE4の頃の様にいつも通りレベルを保存しても、この編集したアクターのパラメーターはもちろん保存されません。そこで「ファイル」の「保存するファイルを選択」を選びます。

編集状態でまだ保存されていないアセットの一覧が表示されますが、そこに配置したアクターも一緒に載るため、ここで保存を行います。

あとは変更リストからサブミットを行えば作業完了です。

これでレベルの編集作業でも作業待ちなどが発生せず、更に作業が効率化できるかと思います。みなさんも是非UE5の新機能、OFPAをお試し下さい。