GS2-Lottery 마스터 데이터 레퍼런스
마스터 데이터 포맷과 임포트할 각종 모델의 레퍼런스
마스터 데이터 포맷
{
"version": "2019-02-21",
"lotteryModels": [
{
"name": "[string]추첨 모델 이름",
"metadata": "[string?]메타데이터",
"mode": "[문자열 열거형]추첨 모드",
"method": "[문자열 열거형]추첨 방법",
"prizeTableName": "[string]배출 확률 테이블 이름",
"choicePrizeTableScriptId": "[string]배출 확률 테이블을 결정하는 GS2-Script의 스크립트 GRN"
}
],
"prizeTables": [
{
"name": "[string]배출 확률 테이블 이름",
"metadata": "[string?]메타데이터",
"prizes": [
{
"prizeId": "[string]경품 ID",
"type": "[string]경품 종류",
"acquireActions": [
{
"action": "[string]입수 액션에서 실행할 액션의 종류",
"request": "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
}
],
"drawnLimit": "[int?]최대 배출 수",
"limitFailOverPrizeId": "[string]제한 시 페일오버 경품 ID",
"prizeTableName": "[string]배출 확률 테이블의 이름",
"weight": "[int]배출 가중치"
}
]
}
]
}| 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 | |
|---|---|---|---|---|---|---|
| version | string | ✓ | 2019-02-21 | 마스터 데이터 포맷 버전 | ||
| lotteryModels | List<LotteryModel> | ~ 100 items | 추첨 모델 추첨 모델은 배출 방식과 배출 테이블의 참조 방법을 정의하는 엔티티입니다. 배출 방식은 2종류가 마련되어 있으며, 일반 추첨은 매번 일정한 확률로 추첨하는 방식이고, 박스 추첨은 상자 안에 미리 정해진 수량의 경품이 들어 있어 추첨할 때마다 상자에서 경품을 꺼내는 추첨 방식입니다. 추첨 처리를 수행할 때 배출 확률 테이블을 사용하는데, GS2-Script를 사용하면 여러 번 추첨을 실행할 때 배출 확률 테이블 일부만 다른 테이블로 교체할 수 있습니다. 이 구조를 이용하면 10연 가챠에서 1회만 다른 추첨 확률 테이블을 적용하는 것이 가능해집니다. | |||
| prizeTables | List<PrizeTable> | ~ 100 items | 배출 확률 테이블 경품에는 입수 액션을 직접 지정하거나, 다른 배출 확률 테이블을 참조하도록 설정할 수도 있습니다. 배출 확률 테이블을 중첩시키면, 예를 들어 1단계에서 SSR / SR / R 등의 레어도를 추첨하고, 2단계에서 해당 레어도에 대응하는 구체적인 콘텐츠를 추첨하는 등의 설정이 가능합니다. 이 구조를 통해 게임 전체의 레어도별 배출 확률을 관리하고 조정하기가 더 쉬워집니다. |
모델
PrizeTable
배출 확률 테이블
경품에는 입수 액션을 직접 지정하거나, 다른 배출 확률 테이블을 참조하도록 설정할 수도 있습니다.
배출 확률 테이블을 중첩시키면, 예를 들어 1단계에서 SSR / SR / R 등의 레어도를 추첨하고, 2단계에서 해당 레어도에 대응하는 구체적인 콘텐츠를 추첨하는 등의 설정이 가능합니다.
이 구조를 통해 게임 전체의 레어도별 배출 확률을 관리하고 조정하기가 더 쉬워집니다.
| 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 | |
|---|---|---|---|---|---|---|
| prizeTableId | string | ※ | ~ 1024자 | 배출 확률 테이블 GRN
※ 서버가 자동으로 설정 | ||
| name | string | ✓ | ~ 128자 | 배출 확률 테이블 이름 배출 확률 테이블 고유의 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. | ||
| metadata | string | ~ 128자 | 메타데이터 메타데이터에는 임의의 값을 설정할 수 있습니다. 이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. | |||
| prizes | List<Prize> | ✓ | 1 ~ 100 items | 경품 리스트 이 배출 확률 테이블 내의 경품 리스트입니다. 각 경품은 배출 가중치(확률), 배출 시 실행할 액션, 그리고 선택적으로 배출 횟수 제한을 정의합니다. 각 경품의 실제 배출 확률은 해당 가중치를 테이블 내 전체 경품 가중치의 합으로 나누어 산출됩니다. |
Prize
경품
배출 확률 테이블 내 단일 경품 엔트리입니다.
경품은 입수 액션(아이템이나 통화의 부여 등)을 직접 지정하거나, 다른 배출 확률 테이블을 참조하여 중첩된 추첨을 수행할 수 있습니다.
각 경품에는 배출 가중치가 있으며, 배출되는 상대적 확률을 결정합니다.
| 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| prizeId | string | ✓ | UUID | ~ 36자 | 경품 ID 배출 확률 테이블 내에서 이 경품을 고유하게 식별하는 ID입니다. 배출 횟수 제한 추적 및 페일오버 경품 지정 시 참조에 사용됩니다. | |||||||
| type | 문자열 열거형 enum { “action”, “prize_table” } | ✓ | 경품 종류 이 경품이 직접 보상을 부여하는지, 다른 배출 확률 테이블에 위임하는지를 결정합니다. “action"은 배출 시 실행할 입수 액션을 지정합니다. “prize_table"은 다른 배출 확률 테이블을 참조하여 중첩된 추첨을 수행합니다(예: 1단계에서 희귀도를 결정하고, 2단계에서 구체적인 아이템을 결정).
| |||||||||
| acquireActions | List<AcquireAction> | {type} == “action” | [] | 1 ~ 100 items | 입수 액션 리스트 이 경품이 배출될 때 실행할 입수 액션의 리스트입니다. 여러 액션을 지정하여 한 번에 여러 보상을 부여할 수 있습니다(예: 아이템과 통화를 동시에 부여). ※ type이(가) “action” 이면 활성화 | |||||||
| drawnLimit | int | {type} == “action” | 1 ~ 1000000 | 최대 배출 수 이 경품이 전체 사용자를 통틀어 배출될 수 있는 최대 횟수입니다. 제한에 도달하면 대신 페일오버 경품(limitFailOverPrizeId)이 배출됩니다. 잭팟 아이템 등 수량 한정 경품 구현에 사용됩니다. ※ type이(가) “action” 이면 활성화 | ||||||||
| limitFailOverPrizeId | string | {type} == “action” and {drawnLimit} > 0 | ✓※ | ~ 32자 | 제한 시 페일오버 경품 ID 이 경품의 배출 횟수 제한(drawnLimit)에 도달했을 때 대신 배출할 경품의 ID입니다. 동일한 배출 확률 테이블 내의 다른 경품을 참조해야 합니다. ※ type이(가) “action"이고 drawnLimit이(가) 0 보다 크면 필수 | |||||||
| prizeTableName | string | {type} == “prize_table” | ✓※ | ~ 128자 | 배출 확률 테이블의 이름 추첨을 위임할 배출 확률 테이블의 이름입니다. 경품 타입이 “prize_table"인 경우 중첩된 추첨에 사용됩니다. ※ type이(가) “prize_table” 이면 필수 | |||||||
| weight | int | ✓ | 1 ~ 2147483646 | 배출 가중치 배출 확률 테이블 내에서 이 경품의 상대적 가중치입니다. 실제 배출 확률은 이 경품의 가중치를 테이블 내 모든 경품의 가중치 합계로 나누어 산출됩니다. 예를 들어 3개의 경품의 가중치가 각각 70, 20, 10이라면 각각의 배출 확률은 70%, 20%, 10%가 됩니다. |
AcquireAction
입수 액션
LotteryModel
추첨 모델
추첨 모델은 배출 방식과 배출 테이블의 참조 방법을 정의하는 엔티티입니다.
배출 방식은 2종류가 마련되어 있으며, 일반 추첨은 매번 일정한 확률로 추첨하는 방식이고, 박스 추첨은 상자 안에 미리 정해진 수량의 경품이 들어 있어 추첨할 때마다 상자에서 경품을 꺼내는 추첨 방식입니다.
추첨 처리를 수행할 때 배출 확률 테이블을 사용하는데,
GS2-Script를 사용하면 여러 번 추첨을 실행할 때 배출 확률 테이블 일부만 다른 테이블로 교체할 수 있습니다.
이 구조를 이용하면 10연 가챠에서 1회만 다른 추첨 확률 테이블을 적용하는 것이 가능해집니다.
| 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| lotteryModelId | string | ※ | ~ 1024자 | 추첨 모델 GRN
※ 서버가 자동으로 설정 | ||||||||
| name | string | ✓ | ~ 128자 | 추첨 모델 이름 추첨 모델 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. | ||||||||
| metadata | string | ~ 2048자 | 메타데이터 메타데이터에는 임의의 값을 설정할 수 있습니다. 이 값들은 GS2의 동작에 영향을 미치지 않으므로, 게임 내에서 사용할 정보를 저장하는 용도로 사용할 수 있습니다. | |||||||||
| mode | 문자열 열거형 enum { “normal”, “box” } | ✓ | 추첨 모드 경품의 추첨 방식을 선택합니다. “normal"은 매번 일정한 확률로 추첨을 진행합니다(경품은 반복해서 배출됩니다). “box"는 가상의 상자에 미리 정해진 수량의 경품을 넣어두고, 추첨할 때마다 상자에서 경품을 꺼냅니다(모든 경품이 최종적으로 배출되는 것이 보장됩니다).
| |||||||||
| method | 문자열 열거형 enum { “prize_table”, “script” } | ✓ | 추첨 방법 배출 확률 테이블의 참조 방법을 결정합니다. “prize_table"은 정적으로 지정된 배출 확률 테이블을 사용합니다. “script"는 GS2-Script를 사용하여 추첨 시점에 배출 확률 테이블을 동적으로 선택하며, 10연 가챠에서 1회만 다른 배출 확률 테이블을 적용하는 등의 시나리오를 실현할 수 있습니다.
| |||||||||
| prizeTableName | string | {method} == “prize_table” | ✓※ | ~ 128자 | 배출 확률 테이블 이름 이 추첨 모델에서 사용할 배출 확률 테이블의 이름입니다. 추첨 방법이 “prize_table"인 경우 필수입니다. ※ method이(가) “prize_table” 이면 필수 | |||||||
| choicePrizeTableScriptId | string | {method} == “script” | ✓※ | ~ 1024자 | 배출 확률 테이블을 결정하는 GS2-Script의 스크립트 GRN
Script 트리거 레퍼런스 - choicePrizeTable※ method이(가) “script” 이면 필수 |