UGS プリコンパイル済みバイナリ

プリコンパイル済みバイナリを使用してプロジェクトの開発を最適化する方法

Choose your operating system:

Windows

macOS

Linux

Unreal Game Sync を使用してビルドを同期およびコンパイルする場合、ビルド プロセスの自動化は、Unreal Engine をコンパイルし、一連のスクリプトを使用する IDE がローカル マシンにあるかどうかによって異なります。しかし、プロジェクトの多くのコントリビューターは、コード ベースで作業することなく、また IDE へのアクセス権も持っていません。これらのユーザーがプロジェクトの最新ビルドを実行するため、Unreal Game Sync では、 プリコンパイル済みバイナリ (PCB) の追加によるビルドをサポートしています。Perforce に .zip ファイル形式で PCB を送信し、変更リストと関連付けることができます。その後、Unreal Game Sync を使用し、ローカルでコンパイルする代わりに .zip ファイルのコンテンツを抽出できます。

これを行うことにより、ローカルでコンパイルした場合と同じユーザー インターフェースを使用することができますが、一致するバイナリがない変更はグレー表示になります。この構成を行うと、ユーザーは [Options (オプション)] メニューの [Sync Precompiled Binaries (プリコンパイル済みバイナリを同期する)] をオンにしてプリコンパイル済みのバイナリの使用を選択することができます。

Perforce の基本設定

次の手順では、Unreal Engine 4 プロジェクトでプリコンパイル済みバイナリを使用するために必要な点について説明します。この手順では、ユーザーがすでに Perforce をソース コントロールとして 使用するよう設定していることを想定しています。UGS を使用するために Perforce サーバーのコンテンツを設定するには、以降の説明に従って進めます。

ユーザーは、エンジン ソース コード、Unreal のビルド プロセスで生成されたものではない依存関係、およびプロジェクトを含む単一のストリームが必要になります。

必要な Unreal Engine ファイルがすべて揃っていることを確認するために、Epic の既存の Perforce リリース ストリームの 1 つをコピーする必要があります。

コピー元のリリース ストリームは、「//UE4/Release-4.xx」という命名規則に沿った名前を持つものであればどれでも問題ありません。 .p4ignore.txt ファイルがコピーされていることを確認してください。このファイルにより、デベロッパーがストリームからローカルでビルドを開始した後、ストリームのコピーに余分なファイルが追加されていないことが確認されます。

また、 GitHub ソース ビルド ( ) を使用して GitDependencies.exe を実行し、フルソースと収集された依存関係をアップロードすることもできます。Epic の Perforce ストリームの 1 つをコピーすることは引き続き推奨されます。ストリームの .p4ignore.txt ファイルのコピーは、ファイルの収集方法や生成方法、アップロード方法に関係なく必要です。

Perforce 内でファイルを設定する方法としてどちらを選んでも、それらのファイル タイプとアクセス許可が、自分が設定するリリースのリリース ストリームと一致することを確認してください。ファイルがストリームで書き込み可能としてマークされている場合は、ユーザー側のストリームでも書き込み可能である必要があります。

  • 書き込み可能なものとそうでないものとの不一致により、ビルドやランタイムが失敗する可能性があります。これらの権限をチェックするには、 Perforce でストリームを開いてファイル名の右側を確認します。

    Checking permissions in Perforce

  • ストリームのファイル タイプや権限を変更する必要がある場合、編集用に開いてから右クリックして [Change Filetype (ファイルタイプを変更)] をクリックします。

    Change filetype in Perforce

    このようにしてメニューを開いたら、ファイル タイプと権限を編集してリリース ストリームと一致させることができます。

    ビルド中またはランタイム時に特定のファイルで [Access Denied (アクセスが拒否されました)] エラーが表示される場合、これらの権限が適切に設定されていないことが原因である可能性があります。

  • UGS で使用するプロジェクトはネイティブであり、Unreal Engine のファイルと同じストリーム内にある必要があります。ネイティブ プロジェクトは、Unreal のディレクトリ構造の最上位ディレクトリから、または .uprojectidrs ファイルにリストされているパスの 1 つ下の階層 (これは Unreal のディレクトリ構造の最上層でもある) から検出可能なプロジェクトです。

ストリームをセットアップする

ユーザーは、プリコンパイル済みバイナリの .zip ファイルを保持するために別のストリームを使用する必要があります。

単一のストリームを使用することもできますが、最初のストリームへのアクセス権を持つすべてのユーザーがアクセスできる 2 つ目の別のストリームを使用することを強く推奨します。これにより、PCB を使用しないチーム メンバーの混乱を回避します。

個別のワークスペースを維持する必要はありません。Unreal Game Sync はファイルの同期と同じログイン資格情報を使用して、ステートレスな方法で PCB を取得します。

PCB のアップロード先でストリームを構成するには、以下の操作を行います。

  1. プロジェクトのルート ディレクトリに「 Build/UnrealGameSync.ini 」を追加し、バイナリのアップロード先となる Perforce の場所を参照します。これは、Perforce から PCB を取得する際に UGS が検索します。

    次に、「 Build\UnrealGameSync.ini 」のエントリの例を示します。

    ``` [//UE4/Main/Samples/Games/ShooterGame/ShooterGame.uproject] ZippedBinariesPath=//UE4/Dev-Binaries/++UE4+Main-Editor.zip ```

    「UnrealGameSync.ini」は、「[Project Root]/Build/\」に配置される必要があります。*

  2. ZippedBinariesPath を指定する場合、以下のいくつかのことに注意する必要があります。

    • 「//UE4/Dev-Binaries/++UE4+Main-Editor.zip」という名前は、次のアップロードに関するセクションで説明する ArchiveStream 引数と一致する必要があります。「++UE4+Main」は現在のブランチの名前で、スラッシュは「+」文字をエスケープされています。引数を使用するときは、「+」文字の代わりにスラッシュを使用する必要があります。

    • PCB ストリームにアクセスできるすべてのユーザー アカウントは新しい PCB のセットをアップロードすることができますが、これはスタジオが希望するデプロイ方法の影響を受けるため、その方法はユーザーによって異なります。手動でユーザーが行うことも、自動化されたビルド ノードが担当することもできます。

プリコンパイル済みバイナリを生成してアップロードする

2 つのストリームを設定し、ユーザーがそれらにアクセスする権限を取得したら、PCB を生成して指定された PCB ストリームにアップロードします。

PCB を生成してアップロードする方法は、次のとおりです。

  1. Perforce の メイン ストリーム のコンテンツを同期します。

  2. 次の場所にあるサンプルに基づいた BuildGraph スクリプトを実行して PCB を生成します。 [UE Root]/Engine/Build/Graph/Examples/BuildEditorAndTools.xml 次に、それを正しい Perforce の場所 ( -ArchiveStream 引数を使用して場所を指定する) にアップロードします。

    BuildEditorAndTools を使用したサンプル コマンドは次のとおりです。

    ``` Engine\Build\BatchFiles\RunUAT.bat BuildGraph -Script=Engine/Build/Graph/Examples/BuildEditorAndTools.xml -Target="Submit To Perforce for UGS" -set:EditorTarget=ShooterGameEditor -set:ArchiveStream=//UE4/Dev-Binaries -p4 -submit ``` このサンプルでは ShooterGame がネイティブ プロジェクトで、ユーザーが PCB をアップロードするプロジェクトもすべてネイティブである必要があります。

    BuildEditorAndTools.xml の使用に関する追加情報は、このファイルの先頭にあるコメントに記載されています。

    ArchiveStream は、事前に指定している ZippedBinariesPath と一致する必要がありますが、スラッシュをエスケープするための「+」文字の代わりにスラッシュが使用されます。

  3. このサンプルでは、zip ファイルを「//UE4/Dev-Binaries/++UE4+Main-Editor.zip」に送信します。ここで ++UE4+Main は現在のブランチの名前を表していますが、スラッシュは「+」文字としてエスケープされています。同じパスを「 UnrealGameSync.ini 」の ZippedBinariesPath の値に設定する必要があります。

    CL の説明が正しい形式であることを確認してください。UGS では、各 CL の説明は、先頭が「CL」で、その後に 8 桁の数値が続くこと (CL ########) を想定しています。これにより、バイナリが関連付けられている変更リストを認識することができます。

    PDB はこの .zip ファイルに含まれますが、ビルド サイズを縮小するために除去されます。これにより、コールスタックをクラッシュから収集することができますが、完全なデバッグを行うことはできません。チームでより優れたシンボル ストレージが必要な場合は、シンボル サーバーの使用をお勧めします。これは、IT チームやデプロイ チームが実装を担当しています。

UGS のプリコンパイル済みバイナリを使用する

プリコンパイル済みバイナリを生成し、最初のストリームにあるファイルを使用して 2 つ目のストリームにアップロードすると、UGS はメイン ストリームで PCB を検出し、使用できるようになります。

  1. [Sync Precompiled Binaries (プリコンパイル済みのバイナリを同期)] オプションを有効にして最新のものに同期します。次の図の例はプリコンパイル済みバイナリのないストリームですが、これまでの手順でバイナリが適切に設定されている場合は、オプションを選択することができます。

    Sync Precompiled Binariesin the Unreal Game Sync Options menu

  2. このオプションを選択しているユーザーのために、エンジンをビルドする代わりに PCB を選択して使用する必要があります。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル