다음을 통해 공유


테스트 디스크 만들기

참고 항목

이러한 지침은 테스트 목적으로만 제공됩니다. 소매 시나리오의 경우 이 데이터가 파트너 센터의 메타데이터에 따라 자동으로 구성됩니다. 컴파일 디스크를 만들기 위해 흐름에서 선택하는 옵션은 설치 순서, 자동 실행 등을 제어하는 데 사용됩니다. 수집을 위해 게임을 제출할 때 테스트 메타데이터 또는 JSON 구성 파일을 직접 제출하지 마세요.

이 항목에서는 테스트 디스크를 만드는 방법을 설명합니다. 다음 유형의 테스트 디스크를 만들 수 있습니다.

컴파일

테스트 컴파일 디스크 만들기

컴파일 디스크를 만들고 테스트하려면 아래에 설명된 대로 catalog.js 메타데이터 파일과 디스크 레이아웃을 작성해야 합니다.

디스크 레이아웃을 만들기

다음 예와 같은 디스크 레이아웃을 만듭니다.

- Disc Root
    - Licenses (folder) - (Not needed for Xbox One ERA Development Kits - make sure to use XVCs created with /LT flag)
        License0.xml (file) - (Not needed for Xbox One ERA dev kits - make sure to use XVCs created with /LT flag)
    - MSXC (folder)
        - Package1.xvc (file)
        - Package2.xvc (file)
        - Metadata (folder)
            - catalog.js (file)
            - Bundle (folder)
                - Bundle images (files)
            - Package1.xvc (folder)
                - Package 1 images (files)
            - Package2.xvc (folder)
                - Package 2 images (files)  

디렉터리에 다음과 같은 내용이 있는 곳:

  • 라이선스에는 게임의 라이선스 파일이 포함되어 있습니다. 이 정보는 Xbox One ERA 개발 키트에 필요하지 않습니다. /LT 플래그로 만든 XVC를 사용해야 합니다. 나중에는 생략할 수 있습니다.

  • MSXC에는 패키징된 게임과 Xbox 셸이 사용하는 메타데이터가 포함되어 있습니다.

  • 메타데이터에는 셸이 디스크와 게임 패키지의 게임에 사용할 메타데이터가 포함되어 있습니다.

  • 번들에는 셸이 사용하는 이미지가 포함되어 있습니다.

  • Package1.XVC에는 셸이 첫 번째 게임에 사용하는 이미지가 포함되어 있습니다. 이름은 MSXC의 게임 패키지 파일 이름과 일치해야 합니다.

  • Package2.XVC에는 셸이 두 번째 게임에 사용하는 이미지가 포함되어 있습니다. 이름은 MSXC의 게임 패키지 파일 이름과 일치해야 합니다.

Catalog.js

Metadata 폴더에 catalog.js라는 파일을 만듭니다. 다른 폴더의 패키지 및 이미지 이름을 반영하려면 이 파일을 편집합니다. 이 파일은 UTF-16 LE로 인코딩되어 있어야 합니다. 웹에서 JSON 검증기를 사용하는 것이 좋습니다. JSON이 유효한지 확인하려면 텍스트 편집기로 복사한 다음 파일을 UTF-16 LE 형식으로 저장합니다.

설명이 있는 멀티 게임 시나리오의 catalog.js 파일 예
{
  "version": "4.1",                                        // Don't adjust this value.
  "bundle": {
    "oneStoreProductId": "9P436MXJ71GV",                   // Replace with your bundle product id.
    "titles": [
      {
        "locale": "default",
        "title": "Bundle Title"                            // Replace with bundle title.
      }
    ],
    "images": [
      {
        "size": "100x100",                                 // Don't change the size values.
        "image": "100x100_1.png"                           // Must match the image file names in MSXC\Metadata\Bundle\
      },
      {
        "size": "208x208",
        "image": "208x208_1.png"
      },
      {
        "size": "480x480",
        "image": "480x480_1.png"
      }
    ]
  },
  "packages": [                                             // This is an array of packages.
    {
      "packageName": "Package1.xvc",                        // Match your package name in MSXC\<package name> and MSXC\Metdata\<package name>
      "oneStoreProductId": "BX38WRFV50MJ",                  // Product id for package 1.
      "contentId": "2b05043b-4043-4ba0-80ed-fd4811c4b333",  // Content id for package 1.  Must match the content id of the package file.
      "franchiseGameHubId": "47445142-3636-3036-C048-464D4E574000", // Optional; Replace with the FranchiseGameHubId. This marks the package as a game hub
      "titleId": "037C3A1D",                                // Title id for package 1.
      "titles": [
        {
          "locale": "default",
          "title": "Killer Instinct"                        // Package 1 title.
        }
      ],
      "images": [
        {
          "size": "100x100",
          "image": "100x100_1.png"                          // Match file names in MSXC\Metadata\<Package1>\
        },
        {
          "size": "208x208",
          "image": "208x208_1.png"
        },
        {
          "size": "480x480",
          "image": "480x480_1.png"
        }
      ],
      "ratings": [
        {
          "system": "OFLC",
          "value": "M"
        },
        {
          "system": "DJCTQ",
          "value": "14"
        },
        {
          "system": "PCBP",
          "value": "Unrated"
        },
        {
          "system": "USK",
          "value": "16"
        },
        {
          "system": "ESRB",
          "value": "T"
        },
        {
          "system": "CERO",
          "value": "Unrated"
        },
        {
          "system": "CSRR",
          "value": "Unrated"
        },
        {
          "system": "COB",
          "value": "M"
        },
        {
          "system": "GRB",
          "value": "Unrated"
        },
        {
          "system": "PEGI",
          "value": "16"
        },
        {
          "system": "PEGIPortugal",
          "value": "Unrated"
        }
      ],
      "type": "Game"
  },
  {
    "packageName": "Package2.xvc",
    "oneStoreProductId": "BVC818MXZ6KG",
    "contentId": "4a6cb1d0-5ad3-47b7-9583-7480098b4a26",
    "associatedFranchiseGameHubId": "47445142-3636-3036-C048-464D4E574000", // Replace with the FranchiseGameHubId of the corresponding franchise game hub that this package is launched with. Optional;
    "titleId": "669E1864",
    "titles": [
      {
        "locale": "default",
        "title": "LocoCycle"
      }
    ],
    "images": [
      {
        "size": "100x100",
        "image": "100x100_1.png"
      },
      {
        "size": "208x208",
        "image": "208x208_1.png"
      },
      {
        "size": "480x480",
        "image": "480x480_1.png"
      }
    ],
    "ratings": [
      {
        "system": "OFLC",
        "value": "PG"
      },
      {
        "system": "DJCTQ",
        "value": "10"
      },
      {
        "system": "USK",
        "value": "12"
      },
      {
        "system": "ESRB",
        "value": "T"
      },
      {
        "system": "PEGI",
        "value": "12"
      },
      {
        "system": "COB",
        "value": "PG"
      }
    ],
    "type": "Game"
    }
  ]
}  

게임 및 DLC(다운로드 가능한 콘텐츠) 시나리오에 대한 catalog.js의 예
{
  "version": "4.0",                                        // Don't adjust this value.
  "bundle": {
    "oneStoreProductId": "9P436MXJ71GV",                   // Replace with bundle product id.
    "launchPackage": "Package3.xvc",                       // Should be the package name of the game package.  This is the package that is launched when the game disc is inserted.
    "titles": [
      {
        "locale": "default",                                        
        "title": "Game + DLC Bundle Title"                 // Replace with bundle name.
      }
    ],
    "images": [
      {
        "size": "100x100",
        "image": "100x100_1.png"                           // Must match the image file names in MSXC\Metadata\Bundle\
      },
      {
        "size": "208x208",
        "image": "208x208_1.png"
      },
      {
        "size": "480x480",
        "image": "480x480_1.png"
      }
    ]
  },
  "packages": [
    {
      "packageName": "Package1.xvc",                       // Match folder name in MSXC\Metadata\<folder name>
      "oneStoreProductId": "BX38WRFV50MJ",                 // Replace with DLC 1 product id.
      "contentId": "ace6ef3b-0c5b-4f17-a651-390e75169d5c", // Replace with DLC 1 content id. This must match the content id of the package file.
      "allowedOneStoreProductIds": [
        "BVC818MXZ6KG"                                     // Should match the product id of the game that will load this DLC.
      ],
      "titles": [
        {
          "locale": "default",
          "title": "DLC Title 1"
        }
      ],
      "images": [
        {
          "size": "100x100",
          "image": "100x100_1.png"                         // Match file names in MSXC\Metadata\Package1.xvc\
        },
        {
          "size": "208x208",
          "image": "208x208_1.png"
        },
        {
          "size": "480x480",
          "image": "480x480_1.png"
        }
      ],
      "ratings": [
        {
          "system": "ESRB",
          "value": "E"
        }
      ],
      "type": "Durable"                                    // Indicates that this is a DLC package.
    },
    {
      "packageName": "Package2.xvc",
      "oneStoreProductId": "9P436MXJ71GV",
      "contentId": "b0f77189-d74c-4005-b351-955d380cb875",
      "allowedOneStoreProductIds": [
        "BVC818MXZ6KG"
      ],
      "titles": [
        {
          "locale": "en-US",
          "title": "DLC Title 2"
        }
      ],
      "images": [
        {
          "size": "100x100",
          "image": "100x100_1.png"
        },
        {
          "size": "208x208",
          "image": "208x208_1.png"
        },
        {
          "size": "480x480",
          "image": "480x480_1.png"
        }
      ],
      "ratings": [
        {
          "system": "ESRB",
          "value": "E"
        }
      ],
      "type": "Durable"
    },
    {
      "packageName": "Package3.xvc",
      "oneStoreProductId": "BVC818MXZ6KG",
      "contentId": "5519355c-bff9-40b4-92bb-b5473fd9c577",
      "titleId": "35c8f637",
      "titles": [
        {
          "locale": "default",
          "title": "Game Title"
        }
      ],
      "images": [
        {
          "size": "100x100",
          "image": "100x100_1.png"
        },
        {
          "size": "208x208",
          "image": "208x208_1.png"
        },
        {
          "size": "480x480",
          "image": "480x480_1.png"
        }
      ],
      "ratings": [
        {
          "system": "ESRB",
          "value": "E"
        }
      ],
      "type": "Game"                                       // Indicates main game package.
    }
  ]
}  

설치 순서 및 알림

DLC 설치 알림은 일반적으로 DLC 패키지가 설치를 완료할 때 트리거됩니다. 특정 유형의 게임 디스크의 경우 매우 짧은 시간에 많은 수의 알림을 생성하기 때문에 원하지 않는 경우가 있습니다. 예를 들어, 올해의 게임 에디션에는 디스크에 많은 수의 작은 DLC 패키지가 포함될 수 있습니다. 이 상황을 처리하기 위해 DLC에 대한 알림은 애플리케이션을 이미 설치한 경우에만 트리거됩니다.

많은 수의 작은 DLC 패키지가 있는 게임의 경우 디스크의 패키지를 주문하여 DLC를 게임 전에 설치하는 것이 좋습니다. 이렇게 하면 DLC 패키지가 설치될 때 사용자가 너무 많은 알림을 받지 않도록 합니다.

소수의 대형 DLC 패키지가 있는 게임의 경우 모든 DLC 패키지가 설치될 때까지 사용자가 게임을 하는 것을 차단하지 않도록 메인 게임 후에 DLC를 설치하는 것이 좋습니다.

DLC 및 게임이 설치되는 순서를 제어하려면 catalog.js의 Packages JSON 배열에서 순서를 조정합니다. 이 배열은 설치의 기본 순서를 제어합니다.

배포

편집 디스크를 배포하려면 디렉터리 구조를 디스크에 굽습니다. 디스크를 개발 키트에 삽입하면 소매 본체에서 출시 버전과 마찬가지로 시작됩니다.

멀티 디스크

테스트 멀티 디스크를 만들려면 기존 XVC를 두 개의 파일로 분할합니다.

참고 항목

XVC는 Layout.xml 파일에 정의된 대로 개별 청크 경계에서만 분할할 수 있습니다. 아주 큰(45GB보다 큰) 용량을 가진 XVC는 멀티 디스크 방식을 사용하여 출시할 수 없습니다. 일반적으로 45GB보다 타이틀의 청크 크기를 작게 유지하는 것이 가장 좋습니다.

두 디스크에 XVC를 분할하려면 다음과 유사한 DiscLayout.xml 파일을 만듭니다.

<Packages>
  <Package Name="MultiDisc" Description="Package published on 2 discs" MaxDiscs="2">
  </Package>
</Packages>  

다음은 디스크로 구울 개별 파일을 만들기 위해 SplitPkg를 호출합니다. 이렇게 하면 원래 XVC 파일 이름에 ".MultiDisc.1"과 ".MultiDisc.2"가 접미사로 붙은 두 개의 파일이 생성됩니다.

SplitPkg /f DiscLayout.xml /p sourceXVC /s Multidisc /pd outputDir  

여러 디스크에서 설치를 시뮬레이션하려면 디스크 1에 xbapp install, 디스크 2에 xbapp install을 사용합니다. 디스크 1의 콘텐츠가 설치된 후 본체에 디스크 2를 삽입하라는 메시지가 나타납니다.

Catalog.js

이 테스트 디스크를 구우려면 새로운 discNumber, discCount, discSetId 필드로 Catalog.js 파일을 만드세요. 모든 디스크에는 이 메타데이터가 모두 필요합니다. 각 디스크에서 Catalog.js 파일의 차이점은 discNumber 필드 값뿐입니다. 예를 들어 디스크 1은 값 1, 디스크 2는 값 2를 가집니다. 0은 예약된 값이며 사용해서는 안 됩니다.

멀티 디스크의 Catalog.js 예

{
  "version": "4.0",                                         // Don't adjust this value.
  "discNumber": 1,                                          // 1 for disc 1, 2 for disc 2.
  "discCount": 2,                                           // Same on all discs.
  "discSetId": "00000001",                                  // For test purposes, this can be 00000001. On retail discs, this value is unique for each published disc set. 
                                                            // Don't mix installations of test discs from different sets if they share this value. Cancel your installation before starting a new one.
  "packages": [                                             // This is an array of packages.
    {
      "packageName": "Package1.xvc",                        // Match your package name in MSXC\package-name and MSXC\Metdata\package-name
      "oneStoreProductId": "BX38WRFV50MJ",                  // Product id for package 1.
      "contentId": "2b05043b-4043-4ba0-80ed-fd4811c4b333",  // Content id for package 1. Must match the content id of the package file.
      "titleId": "037C3A1D",                                // Title id for package 1.
      "titles": [
      {
        "locale": "default",
        "title": "Killer Instinct"                          // Package 1 title.
      }
    ],
    "images": [
      {
        "size": "100x100",
        "image": "100x100_1.png"                            // Match file names in MSXC\Metadata\Package1\
      },
      {
        "size": "208x208",
        "image": "208x208_1.png"
      },
      {
        "size": "480x480",
        "image": "480x480_1.png"
      }
    ],
    "ratings": [
      {
        "system": "OFLC",
        "value": "M"
      },
      {
        "system": "DJCTQ",
        "value": "14"
      },
      {
        "system": "PCBP",
        "value": "Unrated"
      },
      {
        "system": "USK",
        "value": "16"
      },
      {
        "system": "ESRB",
        "value": "T"
      },
      {
        "system": "CERO",
        "value": "Unrated"
      },
      {
        "system": "CSRR",
        "value": "Unrated"
      },
      {
        "system": "COB",
        "value": "M"
      },
      {
        "system": "GRB",
        "value": "Unrated"
      },
        {
        "system": "PEGI",
        "value": "16"
      },
      {
        "system": "PEGIPortugal",
        "value": "Unrated"
      }
    ],
      "type": "Game"
    }
  ]
}  

참고 항목