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

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

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




## 마스터 데이터 포맷


**JSON**
```json
{
  "version": "2019-05-14",
  "groups": [
    {
      "name": "[string]퀘스트 그룹 모델 이름",
      "metadata": "[string?]메타데이터",
      "quests": [
        {
          "name": "[string]퀘스트 모델 이름",
          "metadata": "[string?]메타데이터",
          "contents": [
            {
              "metadata": "[string?]메타데이터",
              "completeAcquireActions": [
                {
                  "action": "[string]입수 액션에서 실행할 액션의 종류",
                  "request": "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
                }
              ],
              "weight": "[int]추첨 가중치"
            }
          ],
          "challengePeriodEventId": "[string?]도전 가능 기간 이벤트 GRN",
          "firstCompleteAcquireActions": [
            {
              "action": "[string]입수 액션에서 실행할 액션의 종류",
              "request": "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
            }
          ],
          "verifyActions": [
            {
              "action": "[string]검증 액션에서 실행할 액션의 종류",
              "request": "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
            }
          ],
          "consumeActions": [
            {
              "action": "[string]소비 액션에서 실행할 액션의 종류",
              "request": "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
            }
          ],
          "failedAcquireActions": [
            {
              "action": "[string]입수 액션에서 실행할 액션의 종류",
              "request": "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
            }
          ],
          "premiseQuestNames": [
            "[string]퀘스트 모델 이름"
          ]
        }
      ],
      "challengePeriodEventId": "[string?]도전 가능 기간 이벤트 GRN"
    }
  ]
}
```


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| version | string | | ✓ | 2019-05-14 | | 마스터 데이터 포맷 버전 |
| groups | [List&lt;QuestGroupModel&gt;](#questgroupmodel) |  |  |  |  ~ 10 items | 퀘스트 그룹 모델<br>퀘스트 그룹은 여러 퀘스트를 그룹화하기 위한 엔티티로, 퀘스트 진행은 그룹 내에서 동시에 하나만 실행할 수 있습니다.<br>즉, 퀘스트를 병렬로 진행할 수 있도록 하려면 그룹을 분리해야 합니다. |

## 모델

### QuestGroupModel

퀘스트 그룹 모델<br>

퀘스트 그룹은 여러 퀘스트를 그룹화하기 위한 엔티티로, 퀘스트 진행은 그룹 내에서 동시에 하나만 실행할 수 있습니다.<br>
즉, 퀘스트를 병렬로 진행할 수 있도록 하려면 그룹을 분리해야 합니다.

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| questGroupModelId | string |  | ※ |  |  ~ 1024자 | 퀘스트 그룹 모델 GRN<br>※ 서버가 자동으로 설정 |
| name | string |  | ✓ |  |  ~ 128자 | 퀘스트 그룹 모델 이름<br>퀘스트 그룹 모델 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| metadata | string |  |  |  |  ~ 1024자 | 메타데이터<br>메타데이터에는 임의의 값을 설정할 수 있습니다.<br>이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. |
| quests | [List&lt;QuestModel&gt;](#questmodel) |  |  | [] | 0 ~ 1000 items | 그룹에 속한 퀘스트<br>이 퀘스트 그룹에 속한 퀘스트 모델의 목록입니다. 그룹 내에서는 동시에 하나의 퀘스트만 진행할 수 있습니다. |
| challengePeriodEventId | string |  |  |  |  ~ 1024자 | 도전 가능 기간 이벤트 GRN<br>이 그룹 내 퀘스트에 도전할 수 있는 기간을 설정하는 GS2-Schedule의 이벤트 GRN입니다. 지정한 경우, 이벤트가 활성화된 기간 동안에만 퀘스트를 시작할 수 있습니다. |

---

### QuestModel

퀘스트 모델<br>

퀘스트 모델은 인게임 시작에 필요한 대가와 클리어했을 때 얻는 보상을 보유하는 엔티티입니다.<br>

클리어했을 때 얻는 보상은 여러 배리에이션을 준비할 수 있으며, 퀘스트 시작 시 추첨할 수 있습니다.<br>
예를 들어, 퀘스트 자체는 동일하더라도 레어 몬스터의 출현 여부에 따라 두 가지 콘텐츠 배리에이션을 만들 수 있습니다.

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| questModelId | string |  | ※ |  |  ~ 1024자 | 퀘스트 모델 GRN<br>※ 서버가 자동으로 설정 |
| name | string |  | ✓ |  |  ~ 128자 | 퀘스트 모델 이름<br>퀘스트 모델 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| metadata | string |  |  |  |  ~ 1024자 | 메타데이터<br>메타데이터에는 임의의 값을 설정할 수 있습니다.<br>이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. |
| contents | [List&lt;Contents&gt;](#contents) |  |  | [] | 1 ~ 10 items | 퀘스트 내용<br>이 퀘스트의 콘텐츠 배리에이션 목록입니다. 퀘스트 시작 시 가중치 추첨을 통해 하나의 배리에이션이 선택됩니다. 각 배리에이션마다 서로 다른 클리어 보상을 정의할 수 있어, 동일한 퀘스트라도 다른 결과(예: 레어 몬스터의 출현)를 구현할 수 있습니다. |
| challengePeriodEventId | string |  |  |  |  ~ 1024자 | 도전 가능 기간 이벤트 GRN<br>이 퀘스트에 도전할 수 있는 기간을 설정하는 GS2-Schedule 이벤트 GRN입니다. 지정한 경우, 이벤트가 활성화되어 있는 기간에만 퀘스트를 시작할 수 있습니다. 이 설정은 퀘스트 그룹의 도전 가능 기간보다 우선됩니다. |
| firstCompleteAcquireActions | [List&lt;AcquireAction&gt;](#acquireaction) |  |  | [] | 0 ~ 10 items | 최초 클리어 보상 입수 액션 리스트<br>이 퀘스트를 처음 클리어했을 때만 실행되는 입수 액션의 리스트입니다. 일반 클리어 보상에 더해 지급되는 보너스 보상으로, 최초 클리어 보너스를 구현하는 데 사용합니다. |
| verifyActions | [List&lt;VerifyAction&gt;](#verifyaction) |  |  | [] | 0 ~ 10 items | 검증 액션 리스트<br>이 퀘스트를 시작하기 위한 전제 조건이 되는 검증 액션의 리스트입니다. 모든 검증 액션이 성공해야만 퀘스트를 시작할 수 있습니다. 레벨 확인이나 아이템 소지 등의 요건을 강제하는 데 사용합니다. |
| consumeActions | [List&lt;ConsumeAction&gt;](#consumeaction) |  |  | [] | 0 ~ 10 items | 소비 액션 리스트<br>이 퀘스트의 시작 비용으로 실행되는 소비 액션입니다. 스태미나나 통화 등의 비용이 퀘스트 시작 시 소비됩니다. |
| failedAcquireActions | [List&lt;AcquireAction&gt;](#acquireaction) |  |  | [] | 0 ~ 100 items | 실패 시 입수 액션 리스트<br>퀘스트 실패 시 실행되는 입수 액션입니다. 실패 시 위로 보상이나 퀘스트 참가 비용의 일부 반환 등에 사용합니다. |
| premiseQuestNames | List&lt;string&gt; |  |  | [] | 0 ~ 10 items | 전제 퀘스트 이름 리스트<br>이 퀘스트에 도전하기 전에 클리어가 필요한 같은 그룹 내 퀘스트 이름의 리스트입니다. 연속되는 퀘스트 체인이나 분기되는 퀘스트 경로 작성에 사용합니다. |

---

### Contents

콘텐츠<br>

퀘스트 콘텐츠의 하나의 배리에이션을 나타냅니다. 각 퀘스트는 서로 다른 보상을 가진 여러 콘텐츠 배리에이션을 가질 수 있으며, 퀘스트 시작 시 가중치 추첨을 통해 하나가 선택됩니다. 메타데이터는 사용자 ID 및 컨피그 값을 이용한 템플릿 변수 치환을 지원합니다.

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| metadata | string |  |  |  |  ~ 256자 | 메타데이터<br>메타데이터에는 임의의 값을 설정할 수 있습니다.<br>이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. |
| completeAcquireActions | [List&lt;AcquireAction&gt;](#acquireaction) |  |  | [] | 0 ~ 10 items | 클리어 보상 획득 액션<br>이 콘텐츠 배리에이션으로 퀘스트를 클리어했을 때 실행되는 획득 액션입니다. 플레이어가 퀘스트 클리어 시 받게 되는 실제 보상을 정의합니다. |
| weight | int |  |  | 1 | 1 ~ 2147483646 | 추첨 가중치<br>퀘스트 시작 시 이 콘텐츠 배리에이션의 무작위 선택에 사용되는 상대적 가중치입니다. 값이 클수록 이 배리에이션이 선택될 확률이 높아집니다. 예를 들어 가중치가 9인 배리에이션은 가중치가 1인 배리에이션보다 9배 선택되기 쉽습니다. |

---

### AcquireAction

입수 액션

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| action | 문자열 열거형<br>enum {<br>}<br> |  | ✓ |  |  | 입수 액션에서 실행할 액션의 종류 |
| request | string |  | ✓ |  |  ~ 524288자 | 액션 실행 시 사용되는 요청의 JSON 문자열 |

---

### ConsumeAction

소비 액션

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| action | 문자열 열거형<br>enum {<br>}<br> |  | ✓ |  |  | 소비 액션에서 실행할 액션의 종류 |
| request | string |  | ✓ |  |  ~ 524288자 | 액션 실행 시 사용되는 요청의 JSON 문자열 |

---

### VerifyAction

검증 액션

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| action | 문자열 열거형<br>enum {<br>}<br> |  | ✓ |  |  | 검증 액션에서 실행할 액션의 종류 |
| request | string |  | ✓ |  |  ~ 524288자 | 액션 실행 시 사용되는 요청의 JSON 문자열 |

---



