UnrealGameSyncのOptions > Sync Precompiled BinariesにあるEditorとEditor PCBsの処理の違いについて

お世話になっております。

現在PCBに含まれるPDBをStripしないように運用できるのかBuildGraphを工夫して確認しています。

その中で表題にあるとおり、UnrealGameSyncのOptions > Sync Precompiled BinariesにあるEditorとEditor PCBsの処理の違いについて気になったので投稿致しました。

■ 各バージョン

  • UnrealGameSync Application version: 1.0.0
  • Horde Server : 5.6.1-0
    • CL 44394996 + CL 45227533(Magick.NET VersionFix)
  • Perforce Server : 2025.1

■ 前提

  • Engine自体への改変を行っていません。
  • PerforceのprotectをStrip前後でいじったりはしておらず、開発ストリームもPCB格納ストリームも読み取り・書き込み可能なアカウントを使用しています。
  • Hordeの認証はAnonymousで利用しています。
  • PCBはIncremental Build(Engine/Build/Graph/Examples/BuildEditorAndTools.xml)を用いて作成しています。
  • 開発ストリームにサブミットされPCBが作成されたCLとして 169, 173, 174, 175, 177, 223, 227 などがあります。
  • PCBの格納ストリームには以下の通り格納されており、「フルサイズ」はPDBをStripしていないものになります。

※ リビジョンに空きがあるのは、同CLのPCBが再アップロードされたためと思われます

リビジョン9: CL169 : 変更前(Strip)

リビジョン11: CL173 : 変更前(Strip)

リビジョン12: CL174 : 変更前(Strip)

リビジョン13: CL175 : 変更前(Strip)

リビジョン16: CL177 : 変更前(Strip)

リビジョン17: CL223 : 変更前(Strip)

リビジョン19: CL227 : 変更後(フルサイズ)

■ 現状手元での動作

[ Editorを選択し、最新CL(227)をSync ]

最新CL(227)のPCBがPerforceからp4 printを用いて取得され、zipmanifestに基づきローカルワークスペース上に展開されています。

これによりPDBがフルサイズになっていることを確認しました。

[ Editor PCBsを選択し、最新CL(227)をSync ]

CL177のPCBがHorde ArtifactIDを用いて取得され、zipmanifestに基づきローカルワークスペース上に展開しているように見えます。

最新CLのPCBが取得されなかったため、PDBがフルサイズにならないことを確認しました。

上記のように、EditorとEditor PCBsで取得するPCBが変わることに気付きましたが

これは意図した動作でしょうか?

また、それぞれ取得先は違うもののPCBを取得する目的は一緒だと思っています。

どういう目的で分かれているのかも教えていただけないでしょうか。

■ _archiveToChangeNumberToArchiveKeyの中身について

WorkspaceControl.csのGetArchiveForChangeNumberによって、

EditorにはCL毎に取るべきPerforceファイルのPath+リビジョンが記載されたList

Editor PCBsにはCL毎に取るべきHorde ArtifactのIDが記載されたList

が_archiveToChangeNumberToArchiveKeyに保管されています。

また、Sync時にはarchiveChannelとchangeNumberの指定によって、取得すべきPathやArtifactIDが返されているように見えます。

しかし、手元環境を見てみると

Editorに紐づく全てのCLにおいて、最新CL(227)のPerforceファイルのPath+リビジョンが記載されていました。

※ 先日まで直近7件のみのListとなっていましたが、本日になって11件~14件までListに追加される挙動となっていました

[ 例 ]

CL 169 : //stream/hogehoge-binaries/++hogehoge+stream-projectEditor.zip#19

CL 177 : //stream/hogehoge-binaries/++hogehoge+stream-projectEditor.zip#19

CL 227 : //stream/hogehoge-binaries/++hogehoge+stream-projectEditor.zip#19

[Image Removed]

一方Editor PCBsの方は全てのCLにおいて、CL177のArtifactIDが記載されていました。

(CL177のものかどうかはHorde ServerのAPIで確認しました)

[ 例 ]

CL 169 : 68ad***********c52126

CL 177 : 68ad***********c52126

CL 227 : 68ad***********c52126

[Image Removed]

本来これらは各CLに沿ったArtifactIDやPerforceファイルのPath+リビジョンが記載されているListなのでは?と思ってみていたのですが、同じ内容になっているのは想定した動作でしょうか?

再現手順

  • Horde Server(5.6.1)とPerforce Serverを用意し、クライアントにはUGSをインストールする
  • Engineの内容を変更せずいくつかのCLに渡ってPDBがStripしているPCBを作成する
  • Engineの内容を変更せずPDBがフルサイズになっているPCBを作成する
  • UGSにてOptions > Sync Precompiled Binaries > Editor と Editor PCBsを切り替えながら最新CLをSyncする

(下記のリンク先は、本スレッドを英語に翻訳した英文スレッドですが、Epic Games のサポートチームが内部的に使用するものですので、ユーザーの方に利用していただく必要はございません。サポートは、この日本語スレッドに日本語で表示されるようになります。)

[Different behavior between “Editor” and “Editor PCBs” under UnrealGameSync > Options > Sync Precompiled [Content removed]

[mention removed] 様

(以下は、サポート担当の Laflamme Patrick によるコメントを翻訳したものです。)

お世話になっております。

私は UGS/Horde にはまだ不慣れなため、UGS/Horde の開発担当者と話してみて、それらのフローを理解するための基本的な情報を得ました。これからご質問に対して回答を試みますが、開発者からも助言がありました。「Perforce から取得することをお勧めします。アーカイブにはすでにフルシンボルが含まれているので」とのことです。

以下、ご質問にお答えします。

> 上記のように、EditorとEditor PCBsで取得するPCBが変わることに気付きましたが、これは意図した動作でしょうか?

確定しているわけではありませんが、おそらく、Horde に公開されている「Editor PCB」用の zip には、フルの PDB が含まれていないからだと思われます。その原因は、Build Graph の設定によるもののはずです。

もしよろしかったら、${あなたのプロジェクト}/Build/UnrealGameSync.ini にある UnrealGameSync.ini ファイルを共有していただけないでしょうか?特に「Editor」と「Editor PCB」を定義している「Archives」の設定を拝見したいと考えております。

> また、それぞれ取得先は違うもののPCBを取得する目的は一緒だと思っています。どういう目的で分かれているのかも教えていただけないでしょうか。

現時点では説明することができません。ただし、アーカイブのそれぞれの工程 (Perforce 経由 / Horde 経由) で同じものをアーカイブしていないか、同期の工程で正しいものを同期していないかのどちらかだと想定しております。おそらく、前者のアーカイブの工程のほうに原因があると考えております。