面向 Xbox 主机的包装游戏入门

按照以下步骤创建一个 XVC 包,该包可旁加载以在 Microsoft 游戏开发工具包上进行测试,然后提交到合作伙伴中心进行发布。

从合作伙伴中心获取产品标识信息

与 Microsoft 代表一起在合作伙伴中心创建您的产品。 这是执行下一步的先决条件,这需要知道发布者标识和包名称。 有关此步骤的详细信息超出了本话题的讨论范围,您可能需要得到 Microsoft 代表的协助。

在根文件夹中创建 MicrosoftGame.config 文件以及游戏内容的剩余部分

本主题后面 提供了一个示例 MicrosoftGame.config xml 文件。 这可以用作参考,同时使用 MicrosoftGame.config 编辑器,它可以简化 .config 文件的创建,并自动从合作伙伴中心项目中同步 ID 和名称值。

创建图标以显示在 shell 和 Microsoft Store 包中

对于以下 MicrosoftGame.config 示例中列出的每个图像,在游戏的根文件夹中放入相应的文件(可缩放到指定的大小)。 或者,可以将图像资产放置在子目录中,并调整 ShellVisuals 图标路径以进行匹配。 MicrosoftGame.config 编辑器提供生成具有单个源映像作为输入的映像的功能。

安装 Microsoft 游戏开发工具包 (GDK)(包括 MakePkg.exe 打包工具)

默认情况下,Microsoft 游戏开发工具包 (GDK) 命令提示位于以下文件夹中:
C:\Program Files (x86)\Microsoft GDK\Command Prompts

创建包装布局映射文件

在带有所有游戏内容的单个文件夹的文件夹中打开 Microsoft 游戏开发工具包 (GDK) 命令提示符,然后运行以下命令。

MakePkg genmap /f layout.xml /d <Your_Game_Folder>

这将创建一个将在包装步骤中使用的名为 layout.xml 的文件。

注意

另请参阅智能交付指南,了解如何自定义 layout.xml,从而将游戏内容整理到功能和包含说明符区块中。 这样,你就可以自定义在不同设备上按不同语言安装的内容,同时用户也可以选择想要安装的游戏部分。 有关详细信息,请参阅 智能交付概述

创建包

如何创建包

按照以下步骤创建 /lk 加密包:

  1. 一次:运行 makepkg genkey /ekb SECRET_KEY.lekb 以创建 SECRET_KEY.lekb 文件。 这是本地 EscrowEd Key Blob (LEKB),用于存储加密程序包的稳定内容密钥。 应该将其存储在需要知道访问权限的安全位置。 在理想的设置中,只有正式的生成计算机/帐户才可以访问它。
  2. 包创建:运行 makepkg pack /lk SECRET_KEY.lekb /f layout.xml /d <Your_Game_Folder_Name> /pd <Output_Folder_Name>。 这将创建一个使用存储在 SECRET_KEY.lekb 文件中的密钥加密程序包。

有关包加密的重要说明

Makepkg /lk 开关用 makepkg genkey 命令提供的稳定(始终相同)密钥对包进行加密。 除了游戏包之外,MakePkg /lk 会生成一个名称采用 PackageFullName_licenseName_GUID.EKBPackageFullName_licenseName_GUID.CEKB 格式的文件。 (请注意下划线 (_) 字符的使用。)

与测试加密 (/lt) 和提交加密 (/l) 相比,/lk 加密是用于在主机上测试和提交开发工具包的建议加密模式:

  1. packageutil 比较可以生成正确的更新大小估计(与 /l 不同)。
  2. 它可以使用主机和电脑下载内容更新时所用的算法,将增量安全上传到合作伙伴中心。
  3. 可以将其安装到开发工具包上(与/ l不同)。
  4. 它使用安全的加密密钥材料,并且只能在特定的环境中解密(与 /lt 不同)。

测试包安装

使用以下命令测试包安装:

xbapp install <Your_Package>

如果包使用智能交付功能,那么你可以使用 /i 选项来调用交互式 shell UI,以选择应该安装哪些包功能来测试零售最终用户体验。

xbapp install /i <Your_Package>

有关包安装的重要说明

xbapp install 将自动安装将程序包加载到 ERA devkit 所需的 CEKB 文件。 如果要测试基于工具的安装方案(游戏光盘、外部存储、主机到主机转移)而非安装方案,则 xbapp 安装项 命令可用于仅安装 CEKB 文件。 有关更多详细信息,请参阅 xbapp.exe(NDA 主题)要求授权

警告

LEKB 文件的内容仅进行过轻微的混淆处理。 你有责任通过对 LEKB 文件进行访问保护来确保内容包的安全性。 任何通过 makepkg pack 处理 LEKB 文件和内容包文件输出的人员可解密其内容。

警告

CEKB 文件的内容允许在任何活动的 ERA 开发工具包上加载包。 有责任通过确保对 CEKB 文件的访问来确保内容包的安全性。 任何通过 makepkg pack 处理 CEKB 文件、活动的 ERA 开发工具包、内容包文件输出的人员,可在开发工具包上安装程序包、可启动程序包、并从程序包 xbcp 文件。

重要

在 2021 年 4 月 GDK 之前生成的 LEKB 文件不会创建 CEKB 文件。 如要使用新的开发工具旁加载功能,必须使用 2021 年 4 月或更高版本的 GDK 工具重新创建 LEKB 文件。

如果计划为包创建光盘,请参阅以下主题

创建测试编译光盘
创建跨代测试光盘

将包提交到 Microsoft 合作伙伴中心

使用之前的 MakePkg.exe 命令创建的包可用于测试和提交,因为 /lk 标志用于加密包。 上传此包时,增量上传也将使你受益。 XVC 和 EKB 文件会正常上传到合作伙伴中心。 将不会上传 LEKB 和 CEKB 文件。

示例 MicrosoftGame.config

创建名为 MicrosoftGame.config 的文件。在游戏内容的根目录中使用以下内容,然后删除不需要的项目的任何注释。 有关详细信息,请参考 MicrosoftGame.config 参考页面

虽然可手动创建 MicrosoftGame.config,但最佳创建方法是使用 MicrosoftGame.config 编辑器

<?xml version="1.0" encoding="utf-8"?>
<Game configVersion="1">
    <!-- Publisher should match the exact value provided in the "Package/Identity/Publisher" field of the Game setup -> Identity section of your product's configuration area in Partner Center.
         Name should match the exact value provided in the "Package/Identity/Name" field of the Game setup -> Identity section of your product's configuration area in Partner Center. -->
    <Identity Name="**REPLACE**"
        Publisher="**REPLACE**"
        Version="1.0.1.0"/>
        <!-- The fourth digit of the version number is reserved for Microsoft Store use -->
    <!--  Optional: Use StoreId if your product will offer durable downloadable content (DLC) packages.
    Look up the Store ID (12-character alphanumeric string) of your main application package in the Game setup -> Identity section of your product's configuration area in Partner Center. (Example: 9PNX12345AAA)
    <StoreId>**REPLACE WITH STOREID**</StoreId> -->

    <MSAAppId>**REPLACE WITH MSAAPPID**</MSAAppId> <!-- This value is found in the Xbox services -> Xbox Settings section in your product's configuration area in Partner Center. -->
    <TitleId>**REPLACE WITH TITLEID**</TitleId> <!-- This value is found in the Game Setup -> Identity section of your product's configuration area in Partner Center. -->

     <!-- Use OverrideDisplayName if you want to display a different title in the shell than the DefaultDisplayName from the ShellVisuals section, or if you need to localize it. 
          Use TargetDeviceFamily to specify what platform your executable is built for (NOTE: Packaging will only allow one TargetDeviceFamily type to be specified to properly build a package. For more information, see the above reference page.) -->
    <ExecutableList>
      <Executable Name="**REPLACE**"
                  Id="Game"
                  OverrideDisplayName="**REPLACE**"
                  TargetDeviceFamily="XboxOne"
                  />
    </ExecutableList>

    <!-- DefaultDisplayName should match the exact value provided in the "Package/Identity/Name" field of the Game setup -> Identity section of your product's configuration area in Partner Center.
         PublisherDisplayName should use the exact value provided in the "Package/Properties/PublisherDisplayName" field of the Game setup -> Identity section of your product's configuration area in Partner Center.-->

    <!-- The following asset sizes apply
         StoreLogo - 100x100
         Square150x150Logo - 150x150
         Square44x44Logo - 44x44
         SplashScreenImage - 1920x1080
    -->
    <ShellVisuals DefaultDisplayName="**REPLACE**" 
                  PublisherDisplayName="**REPLACE**"
                  StoreLogo="StoreLogo.png"
                  Square150x150Logo="Logo.png"
                  Square44x44Logo="SmallLogo.png"
                  Description="**REPLACE**"
                  BackgroundColor="#000040"
                  SplashScreenImage="SplashScreen.png"/>
</Game>

另请参阅

开始为电脑打包游戏
MicrosoftGame.Config
将游戏部署到 Xbox 开发工具包(NDA 主题)要求授权