> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Intelligent Delivery：裝置規範

> Intelligent Delivery：裝置規範

裝置規範會宣告安裝區塊中的內容適用於哪些 XBOX One 系列主機和 XBOX Series 主機。裝置規範可讓您在某個主機世代上提供最高擬真度的體驗，同時不會讓未使用該世代最高階主機的使用者進行不必要的下載。在 XBOX One 系列裝置中，您可以將某些內容 (例如 HDR 圖形) 標記為只需要在 XBOX One X 裝置上下載的區塊。這可讓 XBOX One 和 XBOX One S 使用者更有效率地下載，而不會包含這些裝置不支援的 HDR 資產。有些內容會是兩種主機共用的。例如，音訊資產在執行遊戲的任何裝置上可能都相同。包含這些資產的區塊將不會有裝置規範。

裝置規範可實現下列案例。

* 針對整個 XBOX 主機系列的裝置推出新遊戲時，您可以宣告哪些內容只有在該主機系列中較高階的裝置上才需要。沒有裝置規範的內容會安裝到所有主機。如需詳細資訊，請參閱[新遊戲的封裝設計](/zh-TW/build/core-features/common/packaging/intelligentdelivery-device#new-title)一節。

* 藉由新增包含較高擬真度資產的新區塊，您可以更新現有遊戲，以支援 XBOX One X 或 XBOX Series X 裝置上的較高解析度。如果您以正確的裝置規範標記這些新區塊，已在 XBOX One、XBOX One S 或 XBOX Series S 主機上安裝您遊戲的玩家就不會受到不利影響。如需詳細資訊，請參閱[僅為 XBOX One X 或 Anaconda 裝置指定資產](/zh-TW/build/core-features/common/packaging/intelligentdelivery-device#existing-title)一節。

<a id="new-title" />

## 在同一世代多部裝置上執行並具有各裝置專用資產之新遊戲的封裝設計

同時針對 XBOX One、XBOX One S 和 XBOX One X 裝置，或針對 XBOX Series S 和 XBOX Series X 裝置推出的新遊戲，可以使用 Intelligent Delivery 以特定內容鎖定特定裝置類型。鎖定資產有兩種一般策略。

* [針對每個裝置類別調整特定內容](/zh-TW/build/core-features/common/packaging/intelligentdelivery-device#ID4ERD)
* [宣告同一世代中最高效能裝置 (XBOX One X、Anaconda) 的附加資產](/zh-TW/build/core-features/common/packaging/intelligentdelivery-device#console-specific)

<a id="ID4ERD" />

### 針對每個裝置類別調整特定內容

針對不同裝置鎖定資產的其中一個策略，是針對同一世代中的每部裝置調整特定內容。在此案例中，您的遊戲會將裝置專用資產封裝到以特定裝置為目標的區塊中。

<Note>檔案名稱和路徑不能在不同區塊之間重複，即使一次只會安裝其中一個包含重複項目的區塊也一樣。建議您依據資料夾名稱將檔案分組到區塊中 (例如將所有較高解析度的資產分組到特定資料夾)，或者以可讓遊戲區分的方式修改檔案名稱 (例如在檔案名稱後附加 "\_sco" 或 "\_ana")。</Note>

下列 layout.xml 檔案的範例片段宣告了兩個以不同裝置為目標的區塊。在安裝時，系統會依據硬體裝置類型決定要安裝區塊 2001 還是區塊 2002。

XBOX One 世代：

```xml theme={null}
<Chunk Id="2001" Devices="Xbox-Durango">
    <FileGroup DestinationPath="\Data\Maps\XboxOneOnly\LightMaps"             SourcePath="Y:\Maps\Level1\XboxOneOnly\LightMaps" Include="*.map"/>
<Chunk>
<Chunk Id="2002" Devices="Xbox-Scorpio">
    <FileGroup DestinationPath="\Data\Maps\Scorpio\HiResLightMaps"             SourcePath="Y:\Maps\Level1\Scorpio\HiResLightMaps" Include="*.map"/>
<Chunk>  
```

Lockhart 和 Anaconda 裝置：

```xml theme={null}
<Chunk Id="2001" Devices="Xbox-Lockhart">
    <FileGroup DestinationPath="\Data\Maps\LockhartOnly\LightMaps"             SourcePath="Y:\Maps\Level1\LockhartOnly\LightMaps" Include="*.map"/>
<Chunk>
<Chunk Id="2002" Devices="Xbox-Anaconda">
    <FileGroup DestinationPath="\Data\Maps\Anaconda\HiResLightMaps"             SourcePath="Y:\Maps\Level1\Anaconda\HiResLightMaps" Include="*.map"/>
<Chunk>  
```

### 取得裝置類型

在執行階段，讓您的遊戲使用 [XSystemGetDeviceType](/zh-TW/reference/system/xsystem/functions/xsystemgetdevicetype) 方法來判斷遊戲是在哪部裝置上執行，而遊戲需要依據該資訊使用適當的資產集。

```cpp theme={null}
#include <XSystem.h>

XSystemDeviceType deviceType = XSystemGetDeviceType();

switch (deviceType)
{
case XSystemDeviceType::Pc:                     ... break;
case XSystemDeviceType::XboxOne:                ... break;   //Xbox-Durango device specifier tag
case XSystemDeviceType::XboxOneS:               ... break;   //Xbox-Durango device specifier tag
case XSystemDeviceType::XboxOneX:               ... break;   //Xbox-Scorpio device specifier tag
case XSystemDeviceType::XboxOneXDevkit:         ... break;
case XSystemDeviceType::XboxScarlettLockhart:   ... break;   //Xbox-Lockhart device specifier tag
case XSystemDeviceType::XboxScarlettAnaconda:   ... break;   //Xbox-Anaconda device specifier tag
case XSystemDeviceType::XboxScarlettDevkit:     ... break;
case XSystemDeviceType::Unknown:                ... break;
}
```

零售主機的 [XSystemGetDeviceType](/zh-TW/reference/system/xsystem/functions/xsystemgetdevicetype) 值會對應到您將在 layout.xml 檔案中使用的裝置規範標籤。請注意，`Xbox-Durango` 是 XBOX One 和 XBOX One S 共用的裝置規範標籤。

| 裝置規範標籤 | XSystemDeviceType |
| - | - |
| `Xbox-Durango` | XBOX One<br />XBOX One S |
| `Xbox-Scorpio` | XBOX One X |
| `Xbox-Lockhart` | XBOX Series S |
| `Xbox-Anaconda` | XBOX Series X |

裝置規範標籤是您將在 layout.xml 檔案中使用的值。

<a id="console-specific" />

### 宣告 XBOX One X 專用或 Anaconda 專用資產

鎖定特定裝置的第二個策略，是宣告只會安裝在某一世代中特定主機裝置上的額外資產。在此案例中，兩種主機共用的所有資產都放在沒有裝置規範的區塊中。XBOX One X 專用或 Anaconda 專用資產則放在各自的區塊中。

<a id="existing-title" />

## 僅為 XBOX One X 或 Anaconda 裝置指定資產

若要將裝置專用的資產新增至您的遊戲，請找出只適用於該裝置的資產，在 layout.xml 檔案中將它們隔離到新區塊，然後對其套用 `Xbox-Durango` 或 `Xbox-Anaconda` 裝置規範。下列範例示範了此做法。

XBOX One 世代

```xml theme={null}
<Chunk Id="2002" Devices="Xbox-Scorpio">
    <FileGroup DestinationPath="\Data\Maps\Scorpio\HiResLightMaps"             SourcePath="Y:\Maps\Level1\Scorpio\HiResLightMaps" Include="*.dat"/>
<Chunk>  
```

XBOX Series X|S 世代

```xml theme={null}
<Chunk Id="2002" Devices="Xbox-Anaconda">
    <FileGroup DestinationPath="\Data\Maps\Anaconda\HiResLightMaps"             SourcePath="Y:\Maps\Level1\Anaconda\HiResLightMaps" Include="*.dat"/>
<Chunk>  
```

<a id="ID4EYH" />

## 另請參閱

[Intelligent Delivery](/zh-TW/build/core-features/common/packaging/overviews/intelligentdelivery)
[XSystemGetDeviceType](/zh-TW/reference/system/xsystem/functions/xsystemgetdevicetype)


## Related topics

- [Intelligent Delivery](/build/core-features/common/packaging/overviews/intelligentdelivery.md)
- [Intelligent Delivery: device specifiers](/build/core-features/common/packaging/intelligentdelivery-device.md)
- [Intelligent Delivery: features and recipes](/build/core-features/common/packaging/intelligentdelivery-features-recipes.md)
- [Intelligent Delivery: language specifiers](/build/core-features/common/packaging/intelligentdelivery-language.md)
- [Intelligent Delivery: características y recetas](/es/build/core-features/common/packaging/intelligentdelivery-features-recipes.md)
