> For the complete documentation index, see [llms.txt](/llms.txt)

# GS2-Enhance 마스터 데이터 레퍼런스

마스터 데이터 포맷과 임포트할 각종 모델의 레퍼런스




## 마스터 데이터 포맷


**JSON**
```json
{
  "version": "2020-08-22",
  "rateModels": [
    {
      "name": "[string]강화 레이트 모델 이름",
      "description": "[string?]설명문",
      "metadata": "[string?]메타데이터",
      "targetInventoryModelId": "[string]강화 대상으로 사용할 수 있는 GS2-Inventory 인벤토리 모델의 GRN",
      "acquireExperienceSuffix": "[string]GS2-Experience에서 획득한 경험치를 저장하는 프로퍼티 ID에 부여하는 서픽스",
      "materialInventoryModelId": "[string]강화 소재로 사용할 수 있는 GS2-Inventory 인벤토리 모델 GRN",
      "acquireExperienceHierarchy": [
        "[string]ItemModel의 메타데이터에 저장할, 획득 경험치를 정의하는 JSON 데이터의 계층 구조 정의"
      ],
      "experienceModelId": "[string]강화 결과로 얻는 GS2-Experience 경험치 모델 GRN",
      "bonusRates": [
        {
          "rate": "[float]경험치 보너스 배율 (1.0 = 보너스 없음)",
          "weight": "[int]추첨 가중치"
        }
      ]
    }
  ],
  "unleashRateModels": [
    {
      "name": "[string]한계돌파 레이트 모델명",
      "description": "[string?]설명문",
      "metadata": "[string?]메타데이터",
      "targetInventoryModelId": "[string]한계돌파 대상에 사용할 수 있는 GS2-Inventory 인벤토리 모델 GRN",
      "gradeModelId": "[string]그레이드 모델 GRN",
      "groupKeyHierarchy": [
        "[string]ItemModel의 메타데이터에 저장할, 그룹 키를 정의하는 JSON 데이터의 계층 구조"
      ],
      "gradeEntries": [
        {
          "gradeValue": "[long]대상 그레이드",
          "type": "[string]소재 조건의 종류",
          "needCount": "[int]동일 종류의 아이템을 몇 개 소비할지",
          "recipes": [
            {
              "name": "[string]레시피 이름",
              "metadata": "[string?]메타데이터",
              "targetGroupKeys": [
                "[string]그룹 키"
              ],
              "materials": [
                {
                  "name": "[string]소재 이름",
                  "materialType": "[string]소재의 종류",
                  "individualSetting": {
                    "matchType": "[string]소재와 한계돌파 대상의 일치 조건",
                    "gradeCondition": "[string]소재의 그레이드 조건",
                    "gradeValue": "[long]소재에 요구하는 그레이드",
                    "count": "[int]소비할 아이템 세트의 수"
                  },
                  "quantitySetting": {
                    "matchType": "[string]소비할 아이템 모델을 정하는 방법",
                    "materialInventoryModelId": "[string]소재를 찾을 GS2-Inventory 인벤토리 모델 GRN",
                    "itemModelId": "[string]소비할 GS2-Inventory 아이템 모델 GRN",
                    "count": "[int]소비할 수량"
                  }
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}
```


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| version | string | | ✓ | 2020-08-22 | | 마스터 데이터 포맷 버전 |
| rateModels | [List&lt;RateModel&gt;](#ratemodel) |  |  |  |  ~ 10000 items | 강화 레이트 모델<br>강화 레이트는 강화에 사용하는 소재와 강화 대상을 정의한 데이터입니다.<br><br>소재 데이터와 강화 대상 데이터는 모두 GS2-Inventory에서 관리되고 있어야 합니다.<br>강화로 얻는 경험치는 GS2-Inventory의 메타데이터에 JSON 형식으로 기록됩니다.<br>여기서는 메타데이터의 어느 계층에 경험치 값이 저장되어 있는지를 기재해야 합니다.<br><br>강화 시 일정 확률로 `대성공`과 같은 형태로 입수할 수 있는 경험치량에 보정값을 적용할 수 있습니다.<br>그 추첨 확률도 이 엔티티에서 정의합니다.<br><br>`targetInventoryModelId` 에는 강화 대상이 되는 아이템을 보유하는 인벤토리 모델을, `materialInventoryModelId` 에는 소재로 사용할 수 있는 아이템을 보유하는 인벤토리 모델을 지정합니다.<br>양쪽은 서로 다른 인벤토리 모델로 할 수 있으므로, 캐릭터를 강화 대상으로 하고 강화 전용 아이템을 소재로 하는 구성이 가능합니다.<br><br>각 소재가 제공하는 경험치는 소재 아이템의 아이템 모델 메타데이터에 기술하며, 그 JSON의 어디에 값이 들어 있는지를 `acquireExperienceHierarchy` 로 지정합니다.<br>`{ "aaa": { "bbb": { "experienceValue": 100 } } }` 와 같은 구조라면 `[ "aaa", "bbb", "experienceValue" ]` 와 같이 지정합니다. 계층은 최대 10단계까지 지정할 수 있습니다.<br><br>획득한 경험치는 `experienceModelId` 로 지정한 GS2-Experience 의 경험치 모델에 가산됩니다.<br>가산 대상 프로퍼티 ID는 강화 대상 아이템의 프로퍼티 ID에 `acquireExperienceSuffix` 를 부여한 것이 됩니다. 이를 통해 하나의 아이템에 캐릭터 레벨의 `level` 과 호감도의 `like` 같은 여러 종류의 경험치를 가지게 할 수 있습니다.<br><br>`bonusRates` 에는 획득 경험치에 적용할 배율의 가중치 추첨을 정의합니다.<br>각 항목은 배율(1.5 라면 150%)과 배출 가중치를 가지며, 강화를 실행할 때마다 가중치 추첨으로 하나가 선택됩니다. 항목은 최대 1,000건까지 등록할 수 있습니다. |
| unleashRateModels | [List&lt;UnleashRateModel&gt;](#unleashratemodel) |  |  |  |  ~ 10000 items | 한계돌파 레이트 모델<br>아이템의 한계돌파(해방) 조건을 정의합니다.<br><br>여기서 말하는 한계돌파란, 동일 종류의 아이템을 소재로 소비함으로써 GS2-Grade 에서 관리하는 그레이드를 끌어올리는 강화 처리입니다.<br>그레이드가 올라가면 GS2-Experience 측의 랭크 캡이 상향되어, 대상을 더 높은 레벨까지 육성할 수 있게 됩니다.<br><br>`targetInventoryModelId` 에는 한계돌파 대상이 되는 아이템을 보유하는 GS2-Inventory 의 인벤토리 모델을 지정합니다.<br>한계돌파하는 아이템과 소재로 소비하는 동일 종류 아이템 모두 이 인벤토리 모델에 속해 있어야 합니다.<br>`gradeModelId` 에는 대상 아이템의 그레이드를 추적하는 GS2-Grade 의 그레이드 모델을 지정합니다. 한계돌파에 성공하면 해당 그레이드가 1 상향됩니다.<br><br>`gradeEntries` 에는 각 그레이드에 도달하기 위해 소비하는 동일 종류 아이템의 수를 그레이드별로 정의합니다. 엔트리는 1건 이상 1,000건까지 등록할 수 있습니다.<br>예를 들어 그레이드 1은 1개, 그레이드 2는 3개와 같이 설정함으로써 한계돌파 단계마다 비용을 개별적으로 제어할 수 있습니다.<br><br>소재로 소비한 리소스는 그 리소스가 보유하고 있던 내용과 함께 사라집니다.<br>소재가 경험치 등의 리소스를 가지고 있더라도 대상에게 인계되지 않으므로, 인계가 필요한 경우에는 사전에 인계용 리소스로 변환해 두어야 합니다. |

## 모델

### RateModel

강화 레이트 모델<br>

강화 레이트는 강화에 사용하는 소재와 강화 대상을 정의한 데이터입니다.<br>

소재 데이터와 강화 대상 데이터는 모두 GS2-Inventory에서 관리되고 있어야 합니다.<br>
강화로 얻는 경험치는 GS2-Inventory의 메타데이터에 JSON 형식으로 기록됩니다.<br>
여기서는 메타데이터의 어느 계층에 경험치 값이 저장되어 있는지를 기재해야 합니다.<br>

강화 시 일정 확률로 `대성공`과 같은 형태로 입수할 수 있는 경험치량에 보정값을 적용할 수 있습니다.<br>
그 추첨 확률도 이 엔티티에서 정의합니다.<br>

`targetInventoryModelId` 에는 강화 대상이 되는 아이템을 보유하는 인벤토리 모델을, `materialInventoryModelId` 에는 소재로 사용할 수 있는 아이템을 보유하는 인벤토리 모델을 지정합니다.<br>
양쪽은 서로 다른 인벤토리 모델로 할 수 있으므로, 캐릭터를 강화 대상으로 하고 강화 전용 아이템을 소재로 하는 구성이 가능합니다.<br>

각 소재가 제공하는 경험치는 소재 아이템의 아이템 모델 메타데이터에 기술하며, 그 JSON의 어디에 값이 들어 있는지를 `acquireExperienceHierarchy` 로 지정합니다.<br>
`{ "aaa": { "bbb": { "experienceValue": 100 } } }` 와 같은 구조라면 `[ "aaa", "bbb", "experienceValue" ]` 와 같이 지정합니다. 계층은 최대 10단계까지 지정할 수 있습니다.<br>

획득한 경험치는 `experienceModelId` 로 지정한 GS2-Experience 의 경험치 모델에 가산됩니다.<br>
가산 대상 프로퍼티 ID는 강화 대상 아이템의 프로퍼티 ID에 `acquireExperienceSuffix` 를 부여한 것이 됩니다. 이를 통해 하나의 아이템에 캐릭터 레벨의 `level` 과 호감도의 `like` 같은 여러 종류의 경험치를 가지게 할 수 있습니다.<br>

`bonusRates` 에는 획득 경험치에 적용할 배율의 가중치 추첨을 정의합니다.<br>
각 항목은 배율(1.5 라면 150%)과 배출 가중치를 가지며, 강화를 실행할 때마다 가중치 추첨으로 하나가 선택됩니다. 항목은 최대 1,000건까지 등록할 수 있습니다.

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| rateModelId | string |  | ※ |  |  ~ 1024자 | 강화 레이트 모델 GRN<br>※ 서버가 자동으로 설정 |
| name | string |  | ✓ |  |  ~ 128자 | 강화 레이트 모델 이름<br>강화 레이트 모델 고유의 이름입니다. 영숫자 및 -(하이픈) _(밑줄) .(마침표)로 지정합니다. |
| description | string |  |  |  |  ~ 1024자 | 설명문 |
| metadata | string |  |  |  |  ~ 2048자 | 메타데이터<br>메타데이터에는 임의의 값을 설정할 수 있습니다.<br>이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. |
| targetInventoryModelId | string |  | ✓ |  |  ~ 1024자 | 강화 대상으로 사용할 수 있는 GS2-Inventory 인벤토리 모델의 GRN<br>강화 대상이 되는 아이템을 보유하는 GS2-Inventory의 인벤토리 모델을 지정합니다. 강화되는 아이템은 이 인벤토리 모델에 속해 있어야 합니다. |
| acquireExperienceSuffix | string |  | ✓ |  |  ~ 1024자 | GS2-Experience에서 획득한 경험치를 저장하는 프로퍼티 ID에 부여하는 서픽스<br>아이템의 프로퍼티 ID 끝에 추가되어, 경험치가 저장되는 GS2-Experience의 프로퍼티 ID를 구성하는 문자열입니다. 같은 아이템에 여러 경험치 종류를 부여할 수 있습니다(예: 캐릭터 레벨의 "level", 호감도의 "like"). |
| materialInventoryModelId | string |  | ✓ |  |  ~ 1024자 | 강화 소재로 사용할 수 있는 GS2-Inventory 인벤토리 모델 GRN<br>강화 소재로 사용할 수 있는 아이템을 보유하는 GS2-Inventory의 인벤토리 모델을 지정합니다. 각 소재가 제공하는 경험치는 acquireExperienceHierarchy로 지정된 JSON 계층을 사용하여 아이템 모델의 메타데이터에 정의됩니다. |
| acquireExperienceHierarchy | List&lt;string&gt; |  |  |  | 0 ~ 10 items | ItemModel의 메타데이터에 저장할, 획득 경험치를 정의하는 JSON 데이터의 계층 구조 정의<br>GS2-Enhance에는 GS2-Inventory와 연동하여 강화를 수행하는 기능이 있으며, ItemModel의 메타데이터에 JSON 형식으로 강화 소재로 사용했을 때의 경험치량을 설정합니다.<br>예를 들어, { "aaa": { "bbb": { "experienceValue": 100 } } }와 같은 구조의 데이터 정의로 메타데이터에 설정하고 싶은 경우에는 [ "aaa", "bbb", "experienceValue" ]와 같이 지정합니다.<br>자세한 내용은 [마이크로서비스 소개 / GS2-Enhance](/microservices/enhance/#강화-레이트) 항목에서 설명합니다. |
| experienceModelId | string |  | ✓ |  |  ~ 1024자 | 강화 결과로 얻는 GS2-Experience 경험치 모델 GRN<br>강화로 얻은 경험치가 기록되는 GS2-Experience의 경험치 모델을 지정합니다. 경험치는 대상 아이템의 프로퍼티 ID와 acquireExperienceSuffix를 조합하여 식별되는 프로퍼티에 가산됩니다. |
| bonusRates | [List&lt;BonusRate&gt;](#bonusrate) |  |  |  | 0 ~ 1000 items | 경험치 획득량 보너스<br>강화 시 보너스 경험치 배율의 가중치 추첨을 정의합니다. 각 항목은 배율(예: 1.5로 150%)과 추첨 가중치를 지정합니다. 강화 실행 시 가중치 추첨으로 하나의 항목이 선택되어, 획득 경험치에 "대성공" 보너스가 적용되는지 여부가 결정됩니다. |

---

### BonusRate

경험치 획득량 보너스<br>

강화 시 경험치 보너스 배율을 결정하는 가중치 추첨의 단일 항목을 정의합니다. 서로 다른 배율과 가중치를 가진 여러 항목을 설정함으로써, 제어된 확률에 따른 "대성공"이나 "초성공" 같은 시스템을 구현할 수 있습니다.

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| rate | float |  |  | 1.0 | 0 ~ 10000 | 경험치 보너스 배율 (1.0 = 보너스 없음)<br>이 항목이 추첨되었을 때 기본 경험치에 적용되는 배율입니다. 1.0은 보너스 없는 일반 강화, 1.5는 경험치 150%(대성공), 2.0은 경험치 200%(초성공) 등을 의미합니다. |
| weight | int |  |  | 1 | 0 ~ 2147483645 | 추첨 가중치<br>보너스 레이트를 선택하는 가중치 추첨에서 사용되는 상대적인 가중치입니다. 값이 클수록 이 보너스 레이트가 선택될 확률이 높아집니다. 실제 확률은 이 가중치를 보너스 레이트 목록 내 모든 가중치의 합계로 나눈 값이 됩니다. |

---

### UnleashRateModel

한계돌파 레이트 모델<br>

아이템의 한계돌파(해방) 조건을 정의합니다.<br>

여기서 말하는 한계돌파란, 동일 종류의 아이템을 소재로 소비함으로써 GS2-Grade 에서 관리하는 그레이드를 끌어올리는 강화 처리입니다.<br>
그레이드가 올라가면 GS2-Experience 측의 랭크 캡이 상향되어, 대상을 더 높은 레벨까지 육성할 수 있게 됩니다.<br>

`targetInventoryModelId` 에는 한계돌파 대상이 되는 아이템을 보유하는 GS2-Inventory 의 인벤토리 모델을 지정합니다.<br>
한계돌파하는 아이템과 소재로 소비하는 동일 종류 아이템 모두 이 인벤토리 모델에 속해 있어야 합니다.<br>
`gradeModelId` 에는 대상 아이템의 그레이드를 추적하는 GS2-Grade 의 그레이드 모델을 지정합니다. 한계돌파에 성공하면 해당 그레이드가 1 상향됩니다.<br>

`gradeEntries` 에는 각 그레이드에 도달하기 위해 소비하는 동일 종류 아이템의 수를 그레이드별로 정의합니다. 엔트리는 1건 이상 1,000건까지 등록할 수 있습니다.<br>
예를 들어 그레이드 1은 1개, 그레이드 2는 3개와 같이 설정함으로써 한계돌파 단계마다 비용을 개별적으로 제어할 수 있습니다.<br>

소재로 소비한 리소스는 그 리소스가 보유하고 있던 내용과 함께 사라집니다.<br>
소재가 경험치 등의 리소스를 가지고 있더라도 대상에게 인계되지 않으므로, 인계가 필요한 경우에는 사전에 인계용 리소스로 변환해 두어야 합니다.

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| unleashRateModelId | string |  | ※ |  |  ~ 1024자 | 한계돌파 레이트 모델 GRN<br>※ 서버가 자동으로 설정 |
| name | string |  | ✓ |  |  ~ 128자 | 한계돌파 레이트 모델명<br>한계돌파 레이트 모델 고유의 이름. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| description | string |  |  |  |  ~ 1024자 | 설명문 |
| metadata | string |  |  |  |  ~ 2048자 | 메타데이터<br>메타데이터에는 임의의 값을 설정할 수 있습니다.<br>이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. |
| targetInventoryModelId | string |  | ✓ |  |  ~ 1024자 | 한계돌파 대상에 사용할 수 있는 GS2-Inventory 인벤토리 모델 GRN<br>한계돌파 대상이 되는 아이템을 보유하는 GS2-Inventory의 인벤토리 모델을 지정합니다. 한계돌파하는 아이템과 소재로 소비되는 동일 종류 아이템 모두 이 인벤토리 모델에 속해 있어야 합니다. |
| gradeModelId | string |  | ✓ |  |  ~ 1024자 | 그레이드 모델 GRN<br>대상 아이템의 한계돌파 레벨을 추적하는 GS2-Grade의 그레이드 모델을 지정합니다. 한계돌파가 성공하면, 이 그레이드 모델 내에서 아이템의 그레이드가 가산됩니다. |
| groupKeyHierarchy | List&lt;string&gt; |  |  | [] | 0 ~ 10 items | ItemModel의 메타데이터에 저장할, 그룹 키를 정의하는 JSON 데이터의 계층 구조<br>그룹 키는 장비의 부위처럼 아이템 모델을 분류하는 값으로, 레시피가 소재와 한계돌파 대상을 비교할 때 사용합니다.<br>{ "unleash": { "group": "weapon" } }와 같은 구조의 메타데이터라면 [ "unleash", "group" ]으로 지정합니다.<br>값은 문자열이어야 합니다. 레시피에서 "같은 그룹"이나 targetGroupKeys를 사용하는 경우에는 필수입니다. |
| gradeEntries | [List&lt;UnleashRateEntryModel&gt;](#unleashrateentrymodel) |  | ✓ |  | 1 ~ 1000 items | 그레이드 엔트리 목록<br>한계돌파의 각 그레이드 레벨에 대한 소재 비용을 정의합니다. 각 엔트리는 그레이드 값과, 해당 그레이드에 도달하기 위해 소비해야 하는 동일 종류 아이템 수를 매핑합니다. 예를 들어, 그레이드 1은 복제품 1개, 그레이드 2는 복제품 3개와 같이 설정할 수 있습니다. |

---

### UnleashRateEntryModel

한계돌파 레이트 엔트리 모델<br>

한계돌파 진행에서 단일 그레이드 레벨의 소재 비용을 정의합니다. 각 엔트리는 대상이 되는 그레이드 값과, 해당 그레이드를 달성하기 위해 소비해야 하는 동일 종류 아이템의 수를 지정합니다.

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| gradeValue | long |  | ✓ |  | 1 ~ 1000 | 대상 그레이드<br>이 엔트리가 비용을 정의하는 그레이드 값입니다. 이 그레이드 레벨로의 한계돌파를 실행할 때, needCount로 지정된 수의 아이템이 소비됩니다. |
| type | 문자열 열거형<br>enum {<br>"simple",<br>"recipe"<br>}<br> |  |  | "simple" |  | 소재 조건의 종류<br>"심플(simple)"은 한계돌파 대상과 같은 아이템 모델의 복제를 needCount개 소비합니다. 기존의 동작입니다.<br>"레시피(recipe)"는 플레이어가 레시피를 하나 선택하고, 선택한 레시피에 정의된 소재를 소비합니다.simple: 심플 / recipe: 레시피 /  |
| needCount | int | {type} == "simple" | ✓※ |  | 1 ~ 1000 | 동일 종류의 아이템을 몇 개 소비할지<br>대상 그레이드로의 한계돌파를 실행하기 위해 소비해야 하는 동일 종류 아이템의 수입니다. 이 아이템들은 한계돌파되는 아이템과 동일한 아이템 모델의 것입니다.<br>※ type이(가) "simple" 이면 필수 |
| recipes | [List&lt;UnleashRecipe&gt;](#unleashrecipe) | {type} == "recipe" | ✓※ |  | 1 ~ 10 items | 레시피 목록<br>type이 "레시피"일 때 사용합니다. 한계돌파 실행 시, 플레이어는 이 중에서 레시피를 하나 선택합니다.<br>※ type이(가) "recipe" 이면 필수 |

---

### UnleashRecipe

한계돌파 레시피<br>

그레이드를 1단계 올리는 방법 중 하나입니다. 그레이드 엔트리에 여러 레시피가 있는 경우, 플레이어는 그중 하나를 선택하며, 선택한 레시피의 소재는 모두 필요합니다.

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| name | string |  | ✓ |  |  ~ 128자 | 레시피 이름<br>그레이드 엔트리 안에서 고유한 이름입니다. 한계돌파 실행 시, 플레이어는 이 이름으로 레시피를 지정합니다. |
| metadata | string |  |  |  |  ~ 2048자 | 메타데이터<br>메타데이터에는 임의의 값을 설정할 수 있습니다.<br>이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. |
| targetGroupKeys | List&lt;string&gt; |  |  | [] | 0 ~ 10 items | 이 레시피를 사용할 수 있는 한계돌파 대상의 그룹 키<br>비어 있는 경우, 어떤 한계돌파 대상에도 사용할 수 있습니다.<br>값이 있는 경우, 한계돌파 대상 아이템 모델의 그룹 키가 포함될 때만 사용할 수 있습니다. 그룹 키는 한계돌파 레이트 모델의 groupKeyHierarchy를 사용하여 아이템 모델의 메타데이터에서 읽습니다. |
| materials | [List&lt;UnleashMaterial&gt;](#unleashmaterial) |  | ✓ |  | 1 ~ 10 items | 이 레시피가 필요로 하는 소재<br>이 레시피를 사용하면 모든 소재가 소비됩니다. |

---

### UnleashMaterial

한계돌파 소재<br>

레시피가 필요로 하는 소재의 1종류를 정의합니다.<br>
"개체(individual)"는 장비의 복제처럼, 플레이어가 선택한 아이템 세트를 소비합니다.<br>
"수량(quantity)"은 범용 강화 소재처럼, 설정으로 정해지는 아이템을 수량으로 소비합니다.

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| name | string |  | ✓ |  |  ~ 128자 | 소재 이름<br>레시피 안에서 고유한 이름입니다. 한계돌파 실행 시, 플레이어는 개체 소재마다 이 이름으로 아이템 세트를 지정합니다. |
| materialType | 문자열 열거형<br>enum {<br>"individual",<br>"quantity"<br>}<br> |  | ✓ |  |  | 소재의 종류<br>"개체(individual)"는 플레이어가 선택한 아이템 세트를 소비합니다.<br>"수량(quantity)"은 설정으로 정해지는 아이템을 수량으로 소비합니다.individual: 개체 / quantity: 수량 /  |
| individualSetting | [UnleashIndividualMaterialSetting](#unleashindividualmaterialsetting) | {materialType} == "individual" | ✓※ |  |  | 개체 소재 설정<br>materialType이 "개체"일 때 사용합니다.<br>※ materialType이(가) "individual" 이면 필수 |
| quantitySetting | [UnleashQuantityMaterialSetting](#unleashquantitymaterialsetting) | {materialType} == "quantity" | ✓※ |  |  | 수량 소재 설정<br>materialType이 "수량"일 때 사용합니다.<br>※ materialType이(가) "quantity" 이면 필수 |

---

### UnleashIndividualMaterialSetting

개체 소재 설정<br>

장비의 복제처럼, 아이템 세트를 개체로서 소비하는 소재를 정의합니다.<br>
어떤 아이템 세트를 소비할지는 플레이어가 선택하며, 선택된 아이템 세트는 한계돌파 대상 아이템과 같은 인벤토리 모델에 속해 있어야 합니다.<br>
개체마다 GS2-Grade의 그레이드를 가질 수 있으므로, 소재의 그레이드를 조건으로 할 수도 있습니다.

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| matchType | 문자열 열거형<br>enum {<br>"sameItem",<br>"sameGroup"<br>}<br> |  | ✓ |  |  | 소재와 한계돌파 대상의 일치 조건<br>"같은 아이템(sameItem)"은 한계돌파 대상과 같은 아이템 모델의 아이템 세트만 받습니다.<br>"같은 그룹(sameGroup)"은 아이템 모델의 그룹 키가 한계돌파 대상의 아이템 모델과 같은 아이템 세트를 받습니다. 그룹 키는 한계돌파 레이트 모델의 groupKeyHierarchy를 사용하여 아이템 모델의 메타데이터에서 읽습니다.sameItem: 같은 아이템 / sameGroup: 같은 그룹 /  |
| gradeCondition | 문자열 열거형<br>enum {<br>"any",<br>"sameAsTarget",<br>"equal"<br>}<br> |  |  | "any" |  | 소재의 그레이드 조건<br>"상관없음(any)"은 소재의 그레이드를 확인하지 않습니다.<br>"한계돌파 대상과 같음(sameAsTarget)"은 소재의 그레이드가 한계돌파 대상의 현재 그레이드와 같을 것을 요구합니다.<br>"지정값과 일치(equal)"는 소재의 그레이드가 gradeValue로 지정한 값일 것을 요구합니다.<br>그레이드는 한계돌파 레이트 모델의 그레이드 모델을 사용하여, 트랜잭션 안에서 GS2-Grade에 의해 검증됩니다.any: 상관없음 / sameAsTarget: 한계돌파 대상과 같음 / equal: 지정값과 일치 /  |
| gradeValue | long | {gradeCondition} == "equal" | ✓※ |  | 0 ~ 1000 | 소재에 요구하는 그레이드<br>gradeCondition이 "지정값과 일치"일 때 사용합니다.<br>※ gradeCondition이(가) "equal" 이면 필수 |
| count | int |  | ✓ |  | 1 ~ 1000 | 소비할 아이템 세트의 수<br>이 소재로서 플레이어가 지정해야 하는 아이템 세트의 수입니다. 각 아이템 세트는 1개씩 소비됩니다. |

---

### UnleashQuantityMaterialSetting

수량 소재 설정<br>

범용 강화 소재처럼, 수량으로 소비하는 소재를 정의합니다.<br>
플레이어는 아이템을 선택하지 않으며, 소비할 아이템 모델은 이 설정으로 정해지고, 지정한 수량이 소비됩니다.<br>
GS2-Inventory의 일반 인벤토리와 심플 인벤토리 모두 사용할 수 있습니다.

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| matchType | 문자열 열거형<br>enum {<br>"sameGroup",<br>"specified"<br>}<br> |  | ✓ |  |  | 소비할 아이템 모델을 정하는 방법<br>"같은 그룹(sameGroup)"은 materialInventoryModelId의 인벤토리 안에서, 그룹 키가 한계돌파 대상의 아이템 모델과 같은 아이템 모델을 소비합니다. 해당하는 아이템 모델은 정확히 1개여야 합니다.<br>"지정(specified)"은 itemModelId로 지정한 아이템 모델을 소비합니다.sameGroup: 같은 그룹 / specified: 지정 /  |
| materialInventoryModelId | string | {matchType} == "sameGroup" | ✓※ |  |  ~ 1024자 | 소재를 찾을 GS2-Inventory 인벤토리 모델 GRN<br>matchType이 "같은 그룹"일 때 사용합니다. 심플 인벤토리 모델의 GRN도 지정할 수 있습니다.<br>※ matchType이(가) "sameGroup" 이면 필수 |
| itemModelId | string | {matchType} == "specified" | ✓※ |  |  ~ 1024자 | 소비할 GS2-Inventory 아이템 모델 GRN<br>matchType이 "지정"일 때 사용합니다. 심플 아이템 모델의 GRN도 지정할 수 있습니다.<br>※ matchType이(가) "specified" 이면 필수 |
| count | int |  | ✓ |  | 1 ~ 2147483645 | 소비할 수량 |

---



