BuildPatch Tool Instructions (1.5.0)

빌드 설정과 처리 가이드입니다.

19 분 소요

시작하기 전에

크리덴셜 ID를 찾는 방법

개발자 포털(Developer Portal)에서 몇 가지 ID를 찾아야 합니다.

제품의 클라이언트 ID 및 클라이언트 암호

  1. 개발자 포털 대시보드(Developer Portal Dashboard) > 제품(Product) > 게임 서비스(Games Services) > 제품 세팅(Product Settings) 으로 이동합니다.
  2. 제품 세팅 > SDK 크리덴셜(SDK Credentials) > BPT 크리덴셜(BPT Credentials) 에서 크리덴셜을 확인합니다.

오퍼의 아티팩트 이름 및 ID

  • 제품 > 아티팩트(Artifacts) 페이지** > 오퍼 아티팩트(Offer Artifact) > 세부사항 편집 (Edit Details)** 드롭다운을 선택합니다.

  • 아티팩트 이름 및 ID는 아티팩트 관리(Manage Artifact) 모달 > 세부사항 편집(Edit Details) 드롭다운에 표시됩니다.

오퍼의 오퍼 ID

  • 제품 > 오퍼(Offers) 페이지 > 오퍼(Offer) 로 이동합니다.

  • 오퍼 ID는 오퍼 편집(Edit Offer) 모달의 하단에 있습니다.

조직의 빌드 패치 툴 크리덴셜 보기

조직(Organization)에서의 역할(Roles)이 소유자(Owner), 관리자(Admin) 혹은 스토어(Store)인 모든 사용자는 제품의 빌드 패치 툴 크리덴셜을 확인할 수 있습니다. 크리덴셜을 클립보드에 복사할 수도 있습니다.

다음은 조직의 빌드 패치 툴 크리덴셜을 확인하는 방법입니다.

  1. 개발자 포털에 로그인합니다.
  2. 크리덴셜을 확인할 제품을 선택합니다.
  3. 제품 세팅 을 선택합니다.
  4. 스크롤을 내려 SDK 크리덴셜 > BPT 크리덴셜 로 이동합니다.
  5. 크리덴셜을 클립보드에 복사하려면 복사(Copy) 를 누릅니다.

명령줄의 경로

명령 프롬프트가 명령줄에서 \" (백슬래시 바로 다음에 큰따옴표가 옴)를 해석하는 방식 때문에 BuildPatchTool 실행인자에서 경로를 지정할 때 다음 지침 중 하나 이상을 따라야 합니다.

  • 디렉터리 이름 끝에 트레일링 슬래시를 붙이지 않습니다.
  • 디렉터리 구분 기호에 슬래시를 사용합니다.
  • 경로를 따옴표로 묶지 않습니다(경로에 공백이 하나 이상 포함된 경우에는 가능하지 않음).
  • 큰따옴표로 묶인 경우 트레일링 백슬래시만 다른 백슬래시로 이스케이프합니다(오류가 발생하기 쉬우므로 권장하지 않음).

유효한 경로 구문 예시

  • -BuildRoot="D:/MyFolder/"
  • -BuildRoot=D:\MyFolder\
  • -BuildRoot=D:\MyFolder
  • -BuildRoot=D:/MyFolder/
  • -BuildRoot=D:/MyFolder
  • -BuildRoot="D:\MyFolder\\"

유효하지 않은 경로 구문

명령줄에서 경로를 정의할 때, 다음 구문은 작동하지 않습니다.

-BuildRoot="D:\MyFolder\"

초기 설정

업로드하려는 바이너리에 액세스할 머신에 BuildPatchTool ZIP 파일의 콘텐츠를 추출합니다. 이 머신은 에픽 백엔드와 통신할 인터넷 연결도 필요합니다.

ZIP 파일 링크를 통해 항상 최신 버전의 BPT를 다운로드할 수 있습니다. 파일에 액세스할 수 없다면, 케이스를 생성하세요.

인증

BuildPatchTool에 클라이언트 ID(Client ID)클라이언트 암호(Client Secret) 를 제공함으로써 인증을 수행합니다. 명령줄 실행인자를 사용하는 모든 작업에 이러한 ID와 암호를 제공해야 합니다. 에픽에서는 사용자의 크리덴셜로 사용할 클라이언트 ID와 암호를 발급합니다.

BuildPatchTool은 게임에서 사용할 수 있는 EOS 클라이언트 ID와는 별도로 고유한 클라이언트 ID클라이언트 암호 를 사용합니다. 보통 xyza*로 시작하는 EOS 클라이언트 ID는 BuildPatchTool에서 사용할 수 없습니다.

ClientId 파라미터는 에픽의 백엔드 서비스와 상호작용하는 모든 작업에서 제공되어야 합니다. 클라이언트 암호는 ClientSecret 또는 ClientSecretEnvVar 파라미터를 사용하여 제공되어야 합니다.

ClientSecret 파라미터를 사용하면, 클라이언트 암호는 파라미터 값으로 그대로 전달되어야 합니다.

Engine\Binaries\Win64>BuildPatchTool.exe
-ClientId="<YourClientId>"
-ClientSecret="<YourClientSecret>"

ClientSecretEnvVar 파라미터를 사용하면, 클라이언트 암호가 들어 있는 OS 환경 변수 이름을 전달합니다.

Engine\Binaries\Win64>set MyEpicSecret=<YourClientSecret>
Engine\Binaries\Win64>BuildPatchTool.exe
-ClientId="<YourClientId>"
-ClientSecretEnvVar="MyEpicSecret"

가능하면 ClientSecretEnvVar 파라미터를 사용하는 것이 좋습니다. 이 파라미터를 사용하면 암호 값이 시스템 로그와 명령줄 히스토리에 나타나지 않기 때문입니다. 클라이언트 암호를 Hashicorp Vault 같은 비밀 관리 시스템에 저장하고 각 실행 동안 빌드 시스템 환경에 안전하게 주입하는 것이 모범 사례입니다.

바이너리 업로드 방법

Engine/Binaries/Win64/ 디렉터리로 이동합니다. 명령줄에서 UploadBinary 모드로 BuildPatchTool.exe를 실행하고 바이너리를 가리킵니다(아래 CLI 실행인자 세부사항 참조).

그러면 바이너리가 처리되고 에픽의 클라우드 스토리지에 업로드된 다음 바이너리가 에픽의 백엔드에 등록됩니다.

Engine\Binaries\Win64>BuildPatchTool.exe
-OrganizationId="<YourOrg>"
-ProductId="<YourProduct>"
-ArtifactId="<YourArtifact>"
-ClientId="<YourClientId>"
-ClientSecretEnvVar="<YourSecretEnvVar>"
-mode=UploadBinary
-BuildRoot="<LocationOfLocalBuild>"
-CloudDir="<YourCloudDir>"
-BuildVersion="<YourBuildVersion>"
-AppLaunch="<AppToRun>"
-AppArgs="<LaunchArguments>"
선택 항목:
-FileList="<LocationOfFileList>"
-FileAttributeList="<LocationOfAttributesFile>"
-FileIgnoreList="<LocationOfIgnoreFile>"

아래에 지정해야 하는 각 파라미터 대한 설명이 나와 있습니다. 어떠한 모드든 뒤에 ‘help’ 옵션을 추가하여 필요한 실행인자에 대한 정보를 얻을 수도 있습니다(예: "BuildPatchTool.exe -mode=PatchGeneration -help" ).

실행인자 이름설명
OrganizationID크리덴셜과 함께 제공된 조직 ID(Organization ID) 스트링을 사용합니다.
ProductID크리덴셜과 함께 제공된 제품 ID(Product ID) 스트링을 사용합니다.
ArtifactID크리덴셜과 함께 제공된 아티팩트 ID(Artifact ID) 스트링을 지정합니다.
ClientId인증 섹션을 참조하세요.
ClientSecretEnvVar인증 섹션을 참조하세요.
BuildRoot읽고 처리할 바이너리가 포함된 디렉터리 경로입니다. 이 경로는 드라이브 루트에서 시작하는 절대 경로가 될 수도 있고, 현재 작업 디렉터리에서 시작하는 상대 경로가 될 수도 있습니다. 또한, OS MAX_PATH 제한(일반적으로 260자)을 초과하는 파일이 없도록, 이 경로는 드라이브 루트 가까이에 두는 것이 좋습니다.
CloudDirBuildPatchTool이 업로드할 파일을 저장할 수 있는 위치입니다. 실행할 때마다 이 디렉터리를 비울 수 있습니다. BuildRoot와 마찬가지로 절대 경로일 수도 있고, 상대 경로일 수도 있습니다. (이 위치는 기존 바이너리에 대한 정보를 캐시하는 데 사용되며, BuildRoot 파라미터와는 다른 디렉터리여야 합니다. 처음에 이 디렉터리가 비어 있어도 괜찮습니다. BuildPatchTool은 필요에 따라 에픽 백엔드에서 정보를 다운로드해 CloudDir에 저장합니다.)
BuildVersion빌드의 버전 스트링입니다. 지정한 아티팩트의 빌드마다 고유한 스트링을 사용해야 합니다. 빌드 버전의 스트링에는 다음과 같은 제한이 있습니다. 문자 길이 제한 1100자, 공백 입력 불가, az/AZ/09/.+-_ 문자만 포함 가능
AppLaunch게임 실행 시 시작해야 하는 앱 실행 파일의 경로(BuildRoot 상대(BuildRoot 내) 경로)입니다. Mac 바이너리의 경우, 일반적으로 Game.app/Contents/MacOS/Game에 있는 .app 폴더에 포함된 실행 파일이어야 합니다.
AppArgs실행 시 앱에 전송할 명령줄입니다. 추가 실행인자가 필요 없는 경우, “”로 설정할 수 있습니다.
FileList(선택 항목)바이너리에 포함될 파일이 들어 있는 텍스트 파일 경로입니다. 포함될 파일들은 BuildRoot의 상대 경로여야 합니다. FileIgnoreList 대신 사용할 수 있습니다.
FileAttributeList(선택 항목)설정되어야 하는 파일 및 해당하는 특수 어트리뷰트(예: 실행 비트) 목록이 들어 있는 텍스트 파일 경로입니다. 파일 콘텐츠에 대한 설명은 특수 파일 어트리뷰트 설정하기 섹션을 참조하세요. 잘못하여 바이너리 업로드에 포함되지 않도록, 이 어트리뷰트 파일은 BuildRoot 안에 있으면 안 됩니다.
FileIgnoreList(선택 항목)생성된 패치 데이터에서 제외할 파일 목록이 들어 있는 텍스트 파일 경로입니다. 항목마다 줄이 바뀌어야 하며, BuildRoot의 상대 경로여야 합니다. 슬래시("/") 구분 기호를 사용해야 합니다. 무시할 파일이 BuildRoot 안에 있는 경우, 패치 데이터에 포함되지 않도록 무시 목록에 자체 상대 파일 경로를 포함해야 합니다.

특수 파일 어트리뷰트 설정하기

PatchGeneration 모드와 함께 옵션으로 -FileAttributeList 매개변수를 사용하여 실행 파일, 또는 파일의 태깅 그룹과 같은 바이너리 내의 파일에 특수 어트리뷰트를 적용할 수 있습니다. 실행 앱(-AppLaunch 실행인자에서 지정함)은 실행 파일로 자동 표시되며 이 환경설정 파일에 명시적으로 포함할 필요는 없습니다. 특별한 어트리뷰트를 설정하지 않아도 된다면, -FileAttributeList 실행인자는 생략해도 됩니다.

커스텀 FileAttributeList 파일은 줄 바꿈으로 구분된 항목이 하나 이상 있는 텍스트 파일이어야 합니다. 각 줄에는 인용된(BuildRoot 상대) 파일 경로가 포함되어야 하며, 그 뒤에 참조된 파일에 적용할 공백으로 구분된 어트리뷰트가 하나 이상 나와야 합니다.

"<QuotedRelativePathToFile>" <list of attributes>

항목 예시

"Relative/Path/To/My/file.bin" executable tag:my_tag "Second/Path/To/A/file.txt" tag:txt_files

다음과 같은 파일 어트리뷰트 플래그가 지원됩니다.

  • executable
  • tag:my_tag

파일 태깅은 설치 옵션 화면에 노출되는, 에픽게임즈 런처의 선택적 다운로드 기능에 대한 입력을 제공하는 데 사용됩니다. 아직 베타 단계 기능이므로, 이 기능을 사용해야 할 것 같다면, 에픽게임즈 담당자에게 문의하시기 바랍니다.

바탕화면 바로 가기 아이콘 설정하기

기본적으로 바탕화면 바로 가기 아이콘은 AppLaunch 실행인자로 표시된 앱 실행 파일의 아이콘으로 설정됩니다. 이 아이콘은 두 가지 방법으로 업데이트할 수 있습니다.

  • 앱 실행 파일에 내장된 아이콘 업데이트하기
  • 앱 실행 파일과 이름이 같은 별도의 .ico 파일 추가(예: 실행 파일이 launch.exe인 경우, launch.ico를 사용해야 함)

바이너리 라벨 지정 방법

청크 및 업로드 프로세스가 완료되면, 바이너리에 라벨을 적용하여 에픽게임즈 런처에서 액세스할 수 있도록 만들어야 합니다. 바이너리에 라벨을 적용하면 라벨 이름(예: ‘Live’)과 플랫폼(예: ‘Win32’)이 하나의 바이너리 버전으로 연결됩니다. 같은 바이너리에 여러 개의 라벨을 할당할 수 있습니다.

EpicGamesLauncher 클라이언트는 현재 실행 중인 플랫폼과 연결된 바이너리만 쿼리합니다. 예를 들어, Win32 Launcher 클라이언트는 Win32 플랫폼만 쿼리합니다. 따라서 Windows나 Mac으로 라벨이 지정된 바이너리는 절대 수신하지 않습니다. 마찬가지로, Windows x64 클라이언트는 Windows 플랫폼을 사용하는 바이너리만 쿼리하는 식입니다. 실제로 하나의 바이너리가 여러 플랫폼과 호환되는 경우(예: Windows 및 Win32 모두와 호환), 같은 바이너리에 두 개의 라벨(플랫폼당 하나씩)을 적용하여 다시 업로드할 필요 없이 두 플랫폼 모두에서 사용하게 할 수 있습니다.

LabelBinary 모드:

Engine\Binaries\Win64>BuildPatchTool.exe
-OrganizationId="<YourOrg>"
-ProductId="<YourProduct>"
-ArtifactId="<YourArtifact>"
-ClientId="<YourClientId>"
-ClientSecretEnvVar="<YourSecretEnvVar>"
-mode=LabelBinary
-BuildVersion="<YourBuildVersion>"
-Label="<LabelName>"
-Platform="<Platform>"
-SandboxId="<YourSandbox>"

파라미터 설명:

실행인자 이름설명
OrganizationID크리덴셜과 함께 제공된 조직 ID 스트링을 사용합니다.
ProductID크리덴셜과 함께 제공된 제품 ID 스트링을 사용합니다.
ArtifactID크리덴셜과 함께 제공된 아티팩트 ID 스트링을 지정합니다.
ClientId인증 섹션을 참조하세요.
ClientSecretEnvVar인증 섹션을 참조하세요.
BuildVersion라벨을 지정해야 하는 바이너리의 버전 스트링입니다. 이 버전의 바이너리는 이미 등록되어 있어야 합니다. 그렇지 않으면, 라벨 지정 작업이 거부됩니다.
Label바이너리에 적용할 라벨 이름입니다. 바이너리를 공개적으로 라이브로 설정할 경우 이 인수는 ‘Live’ 스트링이어야 합니다. 또한, 플랫폼당 라이브가 종료된 뒤에도 유지되어야 하는 하나의 바이너리 라벨에 ‘Archive’ 문자열을 지정할 수 있습니다. 라벨이 지정되지 않은 바이너리는 약 1주일이 지나면 자동 클린업 작업에 의해 삭제됩니다.
Platform라벨을 지정할 바이너리와 연결된 플랫폼입니다. 현재는 [Windows, Win32, Mac] 중 하나여야 합니다.
SandboxId해당 바이너리가 라벨링될 샌드박스 ID를 지정합니다. 샌드박스 ID를 제공하지 않으면 퍼블릭 샌드박스에 바이너리가 라벨링됩니다.

바이너리 라벨 지정 해제 방법

참고: 바이너리에서 모든 라벨을 제거하면, 해당 바이너리는 7일 후에 자동으로 삭제됩니다. 삭제되는 것을 방지하려면, 비활성 바이너리(Inactive binaries) 섹션에서 라벨을 최소 하나 이상 추가하세요.

기존에 설정한 라벨을 제거하려면, LabelBinary 모드에 사용된 것과 같은 파라미터와 함께 UnlabelBinary 를 사용하면 됩니다.

Engine\Binaries\Win64>BuildPatchTool.exe
-OrganizationId="<YourOrg>"
-ProductId="<YourProduct>"
-ArtifactId="<YourArtifact>"
-ClientId="<YourClientId>"
-ClientSecretEnvVar="<YourSecretEnvVar>"
-mode=UnlabelBinary
-BuildVersion="<YourBuildVersion>"
-Label="<LabelName>"
-Platform="<Platform>"
-SandboxId="<YourSandbox>"

파라미터 설명:

실행인자 이름설명
OrganizationID크리덴셜과 함께 제공된 조직 ID 스트링을 사용합니다.
ProductID크리덴셜과 함께 제공된 제품 ID 스트링을 사용합니다.
ArtifactID크리덴셜과 함께 제공된 아티팩트 ID 스트링을 지정합니다.
ClientId인증 섹션을 참조하세요.
ClientSecretEnvVar인증 섹션을 참조하세요.
BuildVersion라벨을 지정해야 하는 바이너리의 버전 스트링입니다. 이 버전의 바이너리는 이미 등록되어 있어야 합니다. 그렇지 않으면, 라벨 지정 작업이 거부됩니다.
Label바이너리에 적용할 라벨 이름입니다. 바이너리를 공개적으로 라이브로 설정할 경우 이 인수는 ‘Live’ 스트링이어야 합니다. 또한, 플랫폼당 라이브가 종료된 뒤에도 유지되어야 하는 하나의 바이너리 라벨에 ‘Archive’ 문자열을 지정할 수 있습니다. 라벨이 지정되지 않은 바이너리는 약 1주일이 지나면 자동 클린업 작업에 의해 삭제됩니다.
Platform라벨을 지정할 바이너리와 연결된 플랫폼입니다. 현재는 [Windows, Win32, Mac] 중 하나여야 합니다.
SandboxId해당 바이너리의 라벨을 해제할 샌드박스 ID를 지정합니다. 샌드박스 ID를 제공하지 않으면 퍼블릭 샌드박스에서 바이너리의 라벨이 해제됩니다.

기존 바이너리 목록 확인 방법

에픽의 백엔드에 쿼리하여 ListBinaries 모드를 통해 이미 등록된 바이너리 목록을 검색할 수도 있습니다.

Engine\Binaries\Win64>BuildPatchTool.exe
-OrganizationId="<YourOrg>"
-ProductId="<YourProduct>"
-ArtifactId="<YourArtifact>"
-ClientId="<YourClientId>"
-ClientSecretEnvVar="<YourSecretEnvVar>"
-mode=ListBinaries
선택 항목:
-OnlyLabeled
-Num="<NumberOfBinariesReturned>"
-OutputFile="<OutputFileName>"

파라미터 설명:

파라미터설명
OrganizationID크리덴셜과 함께 제공된 조직 ID 스트링을 사용합니다.
ProductID크리덴셜과 함께 제공된 제품 ID 스트링을 사용합니다.
ArtifactID크리덴셜과 함께 제공된 아티팩트 ID 스트링을 지정합니다.
ClientId인증 섹션을 참조하세요.
ClientSecretEnvVar인증 섹션을 참조하세요.
OnlyLabeled (선택 항목)라벨과 연결된 바이너리만 나열합니다.
Num (선택 항목)반환되는 바이너리 수를 제한합니다. 바이너리는 가장 최근 바이너리부터 날짜순으로 반환됩니다.
OutputFile (선택 항목)지정된 파일에 JSON 배열로 바이너리 목록이 출력됩니다.

바이너리 삭제 방법

바이너리를 삭제하려면, 해당 바이너리에서 모든 라벨을 제거하세요. 그러면 7일 후에 자동으로 삭제됩니다.

파라미터 설명:

실행인자 이름설명
OrganizationID크리덴셜과 함께 제공된 조직 ID 스트링을 사용합니다.
ProductID크리덴셜과 함께 제공된 제품 ID 스트링을 사용합니다.
ArtifactID크리덴셜과 함께 제공된 아티팩트 ID 스트링을 지정합니다.
ClientId인증 섹션을 참조하세요.
ClientSecretEnvVar인증 섹션을 참조하세요.
BuildVersion라벨을 지정해야 하는 바이너리의 버전 스트링입니다. 이 버전의 바이너리는 이미 등록되어 있어야 합니다. 그렇지 않으면, 라벨 지정 작업이 거부됩니다.

바이너리 복사 방법

CopyBinary 모드를 사용하여 바이너리를 다시 업로드하지 않고도 하나의 아티팩트에서 다른 아티팩트로 바이너리를 복사할 수 있습니다. 이는 스태이징 아티팩트에서 라이브 아티팩트로 최종 바이너리를 이동하려는 경우에 유용합니다.

Engine\Binaries\Win64>BuildPatchTool.exe
-OrganizationId="<YourOrg>"
-ProductId="<YourProduct>"
-ClientId="<YourClientId>"
-ClientSecretEnvVar="<YourSecretEnvVar>"
-mode=CopyBinary
-BuildVersion="<VersionToCopy>"
-SourceArtifactId="<SourceArtifact>"
-DestArtifactId="<DestArtifact>"

파라미터 설명:

실행인자 이름설명
OrganizationID크리덴셜과 함께 제공된 조직 ID 스트링을 사용합니다.
ProductID크리덴셜과 함께 제공된 제품 ID 스트링을 사용합니다.
ArtifactID크리덴셜과 함께 제공된 아티팩트 ID 스트링을 지정합니다.
ClientId인증 섹션을 참조하세요.
ClientSecretEnvVar인증 섹션을 참조하세요.
BuildVersion라벨을 지정해야 하는 바이너리의 버전 스트링입니다. 이 버전의 바이너리는 이미 등록되어 있어야 합니다. 그렇지 않으면, 라벨 지정 작업이 거부됩니다.
SourceArtifactId바이너리를 복사할 소스 아티팩트 ID를 지정합니다.
DestArtifactId바이너리가 복사될 대상 아티팩트 ID를 지정합니다.

바이너리 비교 방법

DiffBinaries 툴 모드는 이미 업로드된 두 바이너리의 차이를 계산하고 둘 간의 업데이트를 적용하기 위한 통계를 출력합니다.

Engine\Binaries\Win64>BuildPatchTool.exe
-OrganizationId="<YourOrg>"
-ProductId="<YourProduct>"
-ArtifactId="<YourArtifact>"
-ClientId="<YourClientId>"
-ClientSecretEnvVar="<YourSecretEnvVar>"
-mode=DiffBinaries
-BuildVersionA="<FirstBuildVersionToCompare>"
-BuildVersionB="<SecondBuildVersionToCompare>"
선택 항목:
-InstallTagsA="<FirstInstallTagSet>"
-InstallTagsB="<SecondInstallTagSet>"
-CompareTagSet="<DiffInstallTagSet>"
-OutputFile="<OutputFileName>"

파라미터 설명:

실행인자 이름설명
OrganizationID크리덴셜과 함께 제공된 조직 ID 스트링을 사용합니다.
ProductID크리덴셜과 함께 제공된 제품 ID 스트링을 사용합니다.
ArtifactID크리덴셜과 함께 제공된 아티팩트 ID 스트링을 지정합니다.
ClientId인증 섹션을 참조하세요.
ClientSecretEnvVar인증 섹션을 참조하세요.
BuildVersionA기본 바이너리 이미지의 버전 스트링입니다.
BuildVersionB업데이트될 바이너리 이미지의 버전 스트링입니다.
InstallTagsA (선택 항목)BuildVersionA에서 사용되는 쉼표로 구분된 설치 태그 목록을 따옴표로 지정합니다. 태그가 지정되지 않은 파일을 계산하고 싶다면, 빈 스트링을 포함해야 합니다. 이 파라미터를 생략하면 모든 파일이 사용됩니다. InstallTagsA="" 태그가 지정되지 않은 파일만 사용됩니다. InstallTagsA=",tag" 태그가 지정되지 않은 파일과 tag로 태그가 지정된 파일이 사용됩니다. InstallTagsA="tag" 'tag'로 태그가 지정된 파일만 사용됩니다.
InstallTagsB (선택 항목)BuildVersionB에서 사용되는 쉼표로 구분된 설치 태그 목록을 따옴표로 지정합니다. InstallTagsA와 같은 규칙이 적용됩니다.
CompareTagSet (선택 항목)바이너리 간에 차이 통계 계산에 사용되는 쉼표로 구분된 설치 태그 목록을 따옴표로 지정합니다. 여러 개의 목록이 허용됩니다. InstallTagsA와 같은 규칙이 적용됩니다.
OutputFile (선택 항목)지정된 파일에 JSON 오브젝트로 차이가 출력됩니다.

업데이트 크기 줄이기

1.4.0 이상 버전 필요

BuildPatchTool은 UploadBinary 모드를 통해 업로드된 모든 바이너리에 대해 일반 패치 시스템을 사용합니다. 일반 패치 시스템을 통해 에픽게임즈 스토어에서는 사용자 머신의 바이너리 버전을 다른 버전으로 업데이트하여 다운로드 크기를 최소로 줄일 수 있습니다.

BinaryDeltaOptimise 모드는 에픽 서비스에 이미 업로드된 두 개의 바이너리를 가져와서 그 두 가지 특정 버전 간에 업데이트하는 사용자를 위해 더 작은 다운로드를 생성하도록 설계되었습니다. 에픽에서는 이를 A-to-B 패치라고 합니다. 이 명령은 대다수 플레이어가 특정 바이너리 버전(바이너리 ‘A’)을 사용한다고 알려진 일반적인 패치보다 큰 패치를 출시할 때, 사용자 경험을 개선하기를 원하는 경우 실행할 수 있습니다.

다음은 두 바이너리 간의 델타 패치를 개선하는 명령줄 샘플입니다.

Engine\Binaries\Win64>BuildPatchTool.exe
-OrganizationId="<YourOrg>"
-ProductId="<YourProduct>"
-ArtifactId="<YourArtifact>"
-ClientId="<YourClientId>"
-ClientSecretEnvVar="<YourSecretEnvVar>"
-mode=BinaryDeltaOptimise
-CloudDir="<YourCloudDir>"
-BuildVersionA="<YourSourceBuildVersion>"
-BuildVersionB="<YourDestinationBuildVersion>"
선택 항목
-DiffAbortThreshold="<UpperLimitInBytes>"

파라미터 설명:

실행인자 이름설명
OrganizationID크리덴셜과 함께 제공된 조직 ID 스트링을 사용합니다.
ProductID크리덴셜과 함께 제공된 제품 ID 스트링을 사용합니다.
ArtifactID크리덴셜과 함께 제공된 아티팩트 ID 스트링을 지정합니다.
ClientId인증 섹션을 참조하세요.
ClientSecretEnvVar인증 섹션을 참조하세요.
CloudDirBuildPatchTool이 업로드할 파일을 저장할 수 있는 위치입니다. 실행할 때마다 이 디렉터리를 비울 수 있습니다. BuildRoot와 마찬가지로 절대 경로일 수도 있고, 상대 경로일 수도 있습니다. (이 위치는 기존 바이너리에 대한 정보를 캐시하는 데 사용되며, BuildRoot 파라미터와는 다른 디렉터리여야 합니다. 처음에 이 디렉터리가 비어 있어도 괜찮습니다. BuildPatchTool은 필요에 따라 에픽 백엔드에서 정보를 다운로드해 CloudDir에 저장합니다.)
BuildVersionA기본 바이너리 이미지의 버전 스트링입니다.
BuildVersionB대상 바이너리 이미지의 버전 스트링입니다.
DiffAbortThreshold (선택 항목)개선을 위한 기존 비교 결과의 상한선이 바이트로 표시됩니다. 이를 이용해 도움될 가능성이 없는 대규모 비교의 단축을 최적화할 수 있습니다. 허용 범위는 n>= 1GB이며 기본적으로는 중단되지 않습니다.

BinaryDeltaOptimise 모드에서 실행할 때, BuildPatchTool은 에픽의 클라우드 네트워크에서 기본 바이너리 데이터를 스트리밍하고 다시 분석하고 새로운 A-to-B 특정 패치 데이터를 업로드합니다. BuildVersionABuildVersionB 간의 원래 다운로드 크기가 큰 경우, 이 프로세스는 표준 PatchGeneration 모드보다 더 오래 걸릴 수 있습니다.

일반적으로 현재 라이브 바이너리를 'BuildVersionA'로 사용하고 다음에 출시할 바이너리를 'BuildVersionB'로 사용하여 BinaryDeltaOptimise 모드를 실행하는 것이 좋습니다. 이상적으로는, 네트워크 손실 등, 툴 실행에 문제가 발생할 상황에 대비하여 출시 며칠 전에 이 프로세스가 완료되도록 계획을 세우세요.

현재 라이브 바이너리 버전을 확인하기 위해 ListBinaries 모드를 사용할 수 있습니다. BinaryDeltaOptimise 가 이미 제공된 두 BuildVersion 값 간에 실행된 경우, 작업 단축에 성공하며 출력에 표시됩니다.

1.3.0-Windows -> 1.3.1-Windows 패치 최적화 실행 중
** 제공된 목록에 대한 청크 델타 최적화가 이미 완료되었습니다. **
로드된 최적화 델타 파일 E:/CloudDir/Deltas/jd63jdu7-jsg58dh58dki8dk323/a5nbd0jbweof98fvytsvnthcsvf.delta

프로세스가 완료되면, 달성한 개선도가 출력에 표시됩니다.

  • "알 수 없는 최종 압축 바이트와 메타 [바이트]"
    • BuildVersionABuildVersionB 간의 패치에 대해 달성된 새로운 다운로드 크기를 나타냅니다.
  • "알 수 없는 원본 압축 바이트 [바이트]"
    • 최적화가 실행되기 전 BuildVersionA와 BuildVersionB 사이의 패치에 대한 다운로드 크기를 나타냅니다.
  • "개선도: [백분율]"
    • 달성된 개선도를 나타냅니다. 백분율은 감소한 크기를 나타내며, 클수록 좋습니다.

출력 샘플: