Perforce でビルドを同期する

Perforce を使用して Unreal Engine 4 のビルドを取得するためのガイド

Windows
MacOS
Linux

ファイル改訂の確認方法は大きく 2 種類あります。ラベルとチェンジリストです。ざっくりいうと、ラベルは QA 承認ビルドのようなエンジンの特定ビルドを構成する全ての変更を特定し、チェンジリストは特定の変更を割り出します。この 2 つの違いについては Perforce のウェブサイトの『コードラインとブランチング 』 で分かりやすく説明されています。Epic の Perforce デポへの同期については、以下の事項を念頭に置いて下さい。

  • ラベル - 新しい QA 承認ビルドへ更新するには、ラベルと同期させます。

  • チェンジリスト - エンジンの特定部分に対する変更を更新するには、チェンジリストと同期させます。

P4V および Depot

P4V のツリー ペインには、自分のワークスペースとデポツリーが含まれています。デポ ツリー ビューで、デポ ノードをクリックして拡大し、既存のディレクトリを確認して下さい。

p4v_depot_tree.jpg

  • CodeDrop - サンプルとして使用可能な、Epic が製作したゲームの様々なスナップショットが含まれています。

  • PhysX - 物理ミドルウェアの共通ファイルを含んでいます。契約内容によっては、追加のディレクトリやファイルも確認できます。

  • UnrealEngine3 - UnrealEngine3 をビルドし、実行する全てのものを含んでいます。また、ExampleGame と UDKGame の例も含んでいます。

  • UnrealMCP - UnrealMCP のソースが入っています。これは、SOA (サービス指向アーキテクチャ) で、非常にスケーラブルであり、プレイヤーのオンライン体験を拡張するためのサービス セットを提供することに重点を置いています。

詳細は、「ディレクトリ レイアウト 」を参照してください。

Unreal Engine 3 のディレクトリには幾つかのサブディレクトリがあります。「Binaries」、「Development」、「Engine」、および 2 つのゲームディレクトリ「ExampleGame」と「UDKGame」です。

p4v_depot_tree_ue3.jpg

ExampleGame は、Epic によって提供されている、最小のゲーム実装であり、開発するゲームが Unreal Tournament とあまり似ていない場合など、ゲームプロジェクトの作成に関して良い参考となるでしょう。

UDKGame は、Unreal Tournament 3 をベースにした、Epic の現在の Unreal Engine 4 を使用したデモです。このデモでは、複合的な例によって、 Epic が意図したエンジンの用途が正確に示されています。当社としては UDKGame から拡張するのではなく、サンプルとしての UDKGame の使用を推奨します。ゲーム プロジェクト用に UDKGame の C++ 言語やアンリアル スクリプト コードを使用しても構いませんが、Epic のゲームのコンテンツ (テクスチャ、メッシュ、レベル、サウンド等) をゲームに移植することは出来ません。

Unreal Engine 3 では、Epic のゲーム内容の大部分がゲーム専用のディレクトリにありますが、エンジンのソースが欲しい場合は、 //Depot/UnrealEngine3/Development ディレクトリに同期することが可能です。必要に応じて、特定のディレクトリをハイライトすることも可能です。例えば、UDKGame の内容を更新せずに ExampleGame の最新の内容を手に入れる、などが可能です。

p4v_depot_tree_ue3_examplegame.jpg

改訂を取得するときは、ログ ウィンドウで大量のダウンロードが進行します。警告やエラーが出ずに「Sync completed (同期が完了しました)」と表示されれば完了です。

QA ビルドへの同期

QA 承認ビルドへの同期については、下記の順序に従ってください。

  1. P4V クライアント アプリケーションを実行します。

    p4v_small.jpg

  2. デポツリーにて、Unreal Engine 3 ディレクトリを右クリックして、その後 [Get Revision...(リビジョンを取得)] をコンテキスト メニューから選択して下さい。もしくは UnrealEngine3 ディレクトリを選択して、[Action (アクション)] メニューから [Get Revision...(リビジョンを取得)] を選んで下さい。

    p4v_depot_menu.jpg

  3. [Get Revision] ウィンドウが開きます。

    p4v_get_revision.jpg

    [Specify revision using] ラジオボタンを選択してコンボボックスとテキスト フィールドを有効にして下さい。

    p4v_specify_revision.jpg

  4. コンボボックスから [label (ラベル)] を選択して下さい。

    p4v_revision_label.jpg

    [Browse...(ブラウズする)] ボタンを押して [Select Label (ラベルを選択)] ウィンドウを開いて下さい。

    p4v_select_label.jpg

  5. 同期したいラベルを選択して下さい。通常、これは QA_APPROVED_BUILD[月][年] という形のラベルに指定された最新の QA 承認ビルドです。すべてのラベルをロードするには、リストを何回かスクロール ダウンする必要があるかもしれません。

    p4v_label_build.jpg

    [Ok] ボタンを押してラベルを選択してウィンドウを閉じて下さい。

  6. [Get Revision] ボタンを押して [Get Revision] ウィンドウを閉じて同期を開始して下さい。ログ に同期作業の進行状況が表示されます。

    p4v_sync_progress.jpg

ベスト プラクティスと戦略

Client Specs を複数使用するのではなくて、テストチームに承認されたビルド専用のバイナリ / ファイルの全てと同期をとるバッチファイルの使用を推奨します。そのバッチファイルは、#head へのコンテンツの同期にも使用することができます。

サポート ポータルで常に最新のビルド チェンジリスト ノートが分かるようになっています。

ゲーム コンテンツ ディレクトリに関しては、Perforce はバイナリ差分を提供しないので、パッケージを更新する際には Perforce は更新ファイルを再度全部ダウンロードすることになります。コンテンツが数ギガバイトに及ぶと、1 回でうんざりしてしまいます。この作業は夜間などに行うことをお勧めします。リファレンスとして使うコンテンツを 1 度取得しておいて、必要な分だけ後で更新する方法を強く推奨します。

最新の QA 承認ビルド完全同期するのが難しい場合は、部分的に同期してみてください。滅多にありませんが、ライセンシーとコントラクターが同期中に切断されることが時々あります。重大な問題ではないにしろ、イライラしてしまうかもしれません。この問題を軽減するために、Unreal Engine 3 ルートの各フォルダを同期します。「Development」、「Engine」、「ExampleGame」などです。UDKGame の場合は、さらに細かく分類します。UDKGame のうち、コンテンツ以外の全てのサブフォルダと個々に同期します。コンテンツを取得する際は、コンテンツのそれぞれのサブフォルダを個々に同期します。面倒臭い作業ですが、これを 1 回行っておくと、その後の作業がぐっと楽になります。

同期中、「書き込み可能ファイルに上書きできません」という警告が表示されることがあります。クライアント ワークスペースにあるファイルのどれかが書き込み可能とマークされていることが原因と思われます。安全策として、 Perforce はどんな状況でもクライアント上で書き込み可能なファイルに上書きしないようになっています。保存しておく必要のある変更があると感じた場合は、変更があったファイルを判断し、それらをチェックインします。何も変更する必要がなく同期をリフレッシュしたいだけの場合は、QA ラベルに「force sync」を実施して、それらのファイルが強制的に上書きされるようにします。

ビルドに関する問題がある場合は、最新のビルド ノートを必ず確認するようにしてください。Perforce の [Check Consistency (一貫性を確認)] にチェックをいれる方法もあります (P4Win[File] メニューの [More] サブメニュー、または P4V[Actions] メニューの [Reconcile Offline Work (オフライン作業の調整)] サブメニューから行います) 。[Remove from Client (クライアントから削除)] を使ってルートフォルダ全体とそのコンテンツを物理的に移動 (または削除) するという、苦肉の策もあります。その後は、通常に同期します。デポ上の Remove from Client により何もないことがサーバーに伝わります。これにより、全てのファイルが強制的に更新されます。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback