Documentation index for AI agents

GS2-Enchant Deploy/CDK 레퍼런스

GS2-Deploy의 스택을 생성할 때 사용하는 템플릿 포맷과, CDK를 이용한 각종 언어의 템플릿 출력 구현 예제

엔티티

Deploy 처리에서 조작 대상이 되는 리소스

Namespace

네임스페이스

네임스페이스는 하나의 프로젝트 내에서 동일한 서비스를 서로 다른 용도로 여러 개 이용하기 위한 엔티티입니다.
GS2의 각 서비스는 네임스페이스 단위로 관리됩니다. 네임스페이스가 다르면 동일한 서비스라도 완전히 독립된 데이터 공간으로 취급됩니다.

따라서 각 서비스의 이용을 시작하려면 먼저 네임스페이스를 생성해야 합니다.

Request

리소스 생성·갱신 요청

타입활성화 조건필수기본값값 제한설명
namestring
~ 128자네임스페이스 이름
네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다.
descriptionstring~ 1024자설명문
transactionSettingTransactionSetting
트랜잭션 설정
인챈트 파라미터 조작 시 트랜잭션 처리 방법을 제어하는 설정입니다.
logSettingLogSetting로그 출력 설정
인챈트 조작의 로그 데이터를 GS2-Log에 출력하기 위한 설정입니다. GS2-Log의 네임스페이스를 지정하면 밸런스 파라미터 및 레어리티 파라미터 조작의 API 요청·응답 로그를 수집할 수 있습니다.

GetAttr

!GetAttr 태그로 취득 가능한 리소스 생성 결과

타입설명
ItemNamespace생성한 네임스페이스

구현 예제

Type: GS2::Enchant::Namespace
Properties:
  Name: namespace-0001
  Description: null
  TransactionSetting:
    EnableAutoRun: true
    QueueNamespaceId: grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001
  LogSetting:
    LoggingNamespaceId: grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001
import (
    "github.com/gs2io/gs2-golang-cdk/core"
    "github.com/gs2io/gs2-golang-cdk/enchant"
    "github.com/openlyinc/pointy"
)


SampleStack := core.NewStack()
enchant.NewNamespace(
    &SampleStack,
    "namespace-0001",
    enchant.NamespaceOptions{
        TransactionSetting: core.NewTransactionSetting(
            core.TransactionSettingOptions{
                QueueNamespaceId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001"),
            },
        ),
        LogSetting: &core.LogSetting{
            LoggingNamespaceId: "grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001",
        },
    },
)

println(SampleStack.Yaml())  // Generate Template
class SampleStack extends \Gs2Cdk\Core\Model\Stack
{
    function __construct() {
        parent::__construct();
        new \Gs2Cdk\Enchant\Model\Namespace_(
            stack: $this,
            name: "namespace-0001",
            options: new \Gs2Cdk\Enchant\Model\Options\NamespaceOptions(
                transactionSetting: new \Gs2Cdk\Core\Model\TransactionSetting(
                    new \Gs2Cdk\Core\Model\TransactionSettingOptions(
                        queueNamespaceId: "grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001"
                    )
                ),
                logSetting: new \Gs2Cdk\Core\Model\LogSetting(
                    loggingNamespaceId: "grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"
                )
            )
        );
    }
}

print((new SampleStack())->yaml());  // Generate Template
class SampleStack extends io.gs2.cdk.core.model.Stack
{
    public SampleStack() {
        super();
        new io.gs2.cdk.enchant.model.Namespace(
                this,
                "namespace-0001",
                new io.gs2.cdk.enchant.model.options.NamespaceOptions()
                        .withTransactionSetting(new io.gs2.cdk.core.model.TransactionSetting(
                            new io.gs2.cdk.core.model.options.TransactionSettingOptions()
                                .withQueueNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001")
                        ))
                        .withLogSetting(new io.gs2.cdk.core.model.LogSetting(
                            "grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"
                        ))
        );
    }
}

System.out.println(new SampleStack().yaml());  // Generate Template
public class SampleStack : Gs2Cdk.Core.Model.Stack
{
    public SampleStack() {
        new Gs2Cdk.Gs2Enchant.Model.Namespace(
            stack: this,
            name: "namespace-0001",
            options: new Gs2Cdk.Gs2Enchant.Model.Options.NamespaceOptions
            {
                transactionSetting = new Gs2Cdk.Core.Model.TransactionSetting(
                    options: new Gs2Cdk.Core.Model.TransactionSettingOptions
                    {
                        queueNamespaceId = "grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001"
                    }
                ),
                logSetting = new Gs2Cdk.Core.Model.LogSetting(
                    loggingNamespaceId: "grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"
                )
            }
        );
    }
}

Debug.Log(new SampleStack().Yaml());  // Generate Template
import core from "@/gs2cdk/core";
import enchant from "@/gs2cdk/enchant";

class SampleStack extends core.Stack
{
    public constructor() {
        super();
        new enchant.model.Namespace(
            this,
            "namespace-0001",
            {
                transactionSetting: new core.TransactionSetting(
                    {
                        queueNamespaceId: "grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001"
                    }
                ),
                logSetting: new core.LogSetting(
                    "grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"
                )
            }
        );
    }
}

console.log(new SampleStack().yaml());  // Generate Template
from gs2_cdk import Stack, core, enchant

class SampleStack(Stack):

    def __init__(self):
        super().__init__()
        enchant.Namespace(
            stack=self,
            name='namespace-0001',
            options=enchant.NamespaceOptions(
                transaction_setting=core.TransactionSetting(
                    options=core.TransactionSettingOptions(
                        queue_namespace_id='grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001',
                    )
                ),
                log_setting=core.LogSetting(
                    logging_namespace_id='grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001',
                ),
            ),
        )

print(SampleStack().yaml())  # Generate Template

TransactionSetting

트랜잭션 설정

트랜잭션 설정은 트랜잭션의 실행 방법·정합성·비동기 처리·충돌 회피 메커니즘을 제어하는 설정입니다.
자동 실행(AutoRun), 원자적 실행(AtomicCommit), GS2-Distributor를 이용한 비동기 실행, 스크립트 결과의 일괄 적용, GS2-JobQueue를 통한 입수 액션의 비동기화 등을 조합하여 게임 로직에 맞는 견고한 트랜잭션 관리를 가능하게 합니다.

타입활성화 조건필수기본값값 제한설명
enableAutoRunboolfalse발행한 트랜잭션을 서버 사이드에서 자동으로 실행할지 여부
enableAtomicCommitbool{enableAutoRun} == truefalse트랜잭션의 실행을 원자적으로 커밋할지 여부
※ enableAutoRun이(가) true 이면 활성화
transactionUseDistributorbool{enableAtomicCommit} == truefalse트랜잭션을 비동기 처리로 실행할지 여부
※ enableAtomicCommit이(가) true 이면 활성화
commitScriptResultInUseDistributorbool{transactionUseDistributor} == truefalse스크립트의 결과 커밋 처리를 비동기 처리로 실행할지 여부
※ transactionUseDistributor이(가) true 이면 활성화
acquireActionUseJobQueuebool{enableAtomicCommit} == truefalse입수 액션을 실행할 때 GS2-JobQueue를 사용할지 여부
※ enableAtomicCommit이(가) true 이면 활성화
distributorNamespaceIdstring“grn:gs2:{region}:{ownerId}:distributor:default”~ 1024자트랜잭션 실행에 사용하는 GS2-Distributor 네임스페이스 GRN
queueNamespaceIdstring“grn:gs2:{region}:{ownerId}:queue:default”~ 1024자트랜잭션 실행에 사용하는 GS2-JobQueue의 네임스페이스 GRN

LogSetting

로그 출력 설정

로그 데이터의 출력 설정을 관리합니다. 이 타입은 로그 데이터를 기록하는 데 사용되는 GS2-Log 네임스페이스의 식별자(Namespace ID)를 보유합니다.
로그 네임스페이스ID(loggingNamespaceId)에는 로그 데이터를 수집하여 저장하는 GS2-Log의 네임스페이스를 GRN 형식으로 지정합니다.
이 설정을 하면 설정된 네임스페이스 내에서 발생한 API 요청·응답의 로그 데이터가 대상 GS2-Log 네임스페이스 쪽으로 출력됩니다.
GS2-Log에서는 실시간으로 로그가 제공되어 시스템 모니터링, 분석, 디버깅 등에 이용할 수 있습니다.

타입활성화 조건필수기본값값 제한설명
loggingNamespaceIdstring
~ 1024자로그를 출력할 GS2-Log의 네임스페이스 GRN
“grn:gs2:“로 시작하는 GRN 형식의 ID로 지정해야 합니다.

CurrentParameterMaster

현재 활성화된 파라미터 모델의 마스터 데이터

현재 네임스페이스 내에서 유효한 파라미터 모델의 정의를 기술한 마스터 데이터입니다.
GS2에서는 마스터 데이터 관리에 JSON 형식의 파일을 사용합니다.
파일을 업로드함으로써 실제로 서버에 설정을 반영할 수 있습니다.

JSON 파일을 작성하는 방법으로, 매니지먼트 콘솔 내에 마스터 데이터 에디터를 제공하고 있습니다.
또한, 게임 운영에 더 적합한 도구를 만들어 적절한 형식의 JSON 파일을 출력하는 방식으로도 서비스를 이용할 수 있습니다.

Request

리소스 생성·갱신 요청

타입활성화 조건필수기본값값 제한설명
namespaceNamestring
~ 128자네임스페이스 이름
네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다.
mode문자열 열거형
enum {
  “direct”,
  “preUpload”
}
“direct”업데이트 모드
정의설명
direct마스터 데이터를 직접 업데이트
preUpload마스터 데이터를 업로드한 후 업데이트
settingsstring{mode} == “direct”
✓※
~ 5242880 바이트 (5MB)마스터 데이터
※ mode이(가) “direct” 이면 필수
uploadTokenstring{mode} == “preUpload”
✓※
~ 1024자사전 업로드로 획득한 토큰
업로드한 마스터 데이터를 적용하기 위해 사용됩니다.
※ mode이(가) “preUpload” 이면 필수

GetAttr

!GetAttr 태그로 취득 가능한 리소스 생성 결과

타입설명
ItemCurrentParameterMaster업데이트된 현재 유효한 파라미터 모델의 마스터 데이터

구현 예제

Type: GS2::Enchant::CurrentParameterMaster
Properties:
  NamespaceName: namespace-0001
  Mode: direct
  Settings: {
    "version": "2023-07-18",
    "balanceParameterModels": [
      {
        "name": "balance-0001",
        "totalValue": 100,
        "initialValueStrategy": "average",
        "parameters": [
          {
            "name": "parameter-0001",
            "metadata": "PARAMETER_0001"
          },
          {
            "name": "parameter-0002",
            "metadata": "PARAMETER_0002"
          },
          {
            "name": "parameter-0003",
            "metadata": "PARAMETER_0003"
          }
        ],
        "metadata": "BALANCE_0001"
      },
      {
        "name": "balance-0002",
        "totalValue": 200,
        "initialValueStrategy": "lottery",
        "parameters": [
          {
            "name": "parameter-0001",
            "metadata": "PARAMETER_0001"
          },
          {
            "name": "parameter-0002",
            "metadata": "PARAMETER_0002"
          },
          {
            "name": "parameter-0003",
            "metadata": "PARAMETER_0003"
          },
          {
            "name": "parameter-0004",
            "metadata": "PARAMETER_0004"
          }
        ],
        "metadata": "BALANCE_0002"
      },
      {
        "name": "balance-0003",
        "totalValue": 500,
        "initialValueStrategy": "average",
        "parameters": [
          {
            "name": "parameter-0001",
            "metadata": "PARAMETER_0001"
          },
          {
            "name": "parameter-0002",
            "metadata": "PARAMETER_0002"
          }
        ],
        "metadata": "BALANCE_0003"
      }
    ],
    "rarityParameterModels": [
      {
        "name": "rarity-0001",
        "maximumParameterCount": 5,
        "parameterCounts": [
          {
            "count": 0,
            "weight": 1
          },
          {
            "count": 1,
            "weight": 2
          },
          {
            "count": 2,
            "weight": 3
          }
        ],
        "parameters": [
          {
            "name": "parameter-0001",
            "metadata": "PARAMETER_0001",
            "resourceName": "resource-0001",
            "resourceValue": 10,
            "weight": 1
          },
          {
            "name": "parameter-0002",
            "metadata": "PARAMETER_0002",
            "resourceName": "resource-0002",
            "resourceValue": 20,
            "weight": 2
          },
          {
            "name": "parameter-0003",
            "metadata": "PARAMETER_0003",
            "resourceName": "resource-0003",
            "resourceValue": 30,
            "weight": 3
          }
        ],
        "metadata": "RARITY_0001"
      },
      {
        "name": "rarity-0002",
        "maximumParameterCount": 10,
        "parameterCounts": [
          {
            "count": 1,
            "weight": 10
          },
          {
            "count": 2,
            "weight": 20
          },
          {
            "count": 3,
            "weight": 30
          }
        ],
        "parameters": [
          {
            "name": "parameter-1001",
            "metadata": "PARAMETER_1001",
            "resourceName": "resource-1001",
            "resourceValue": 100,
            "weight": 10
          },
          {
            "name": "parameter-1002",
            "metadata": "PARAMETER_1002",
            "resourceName": "resource-1002",
            "resourceValue": 200,
            "weight": 20
          },
          {
            "name": "parameter-1003",
            "metadata": "PARAMETER_1003",
            "resourceName": "resource-1003",
            "resourceValue": 300,
            "weight": 30
          }
        ],
        "metadata": "RARITY_0002"
      },
      {
        "name": "rarity-0003",
        "maximumParameterCount": 3,
        "parameterCounts": [
          {
            "count": 2,
            "weight": 5
          },
          {
            "count": 3,
            "weight": 10
          },
          {
            "count": 4,
            "weight": 15
          }
        ],
        "parameters": [
          {
            "name": "parameter-2001",
            "metadata": "PARAMETER_2001",
            "resourceName": "resource-2001",
            "resourceValue": 1000,
            "weight": 2
          },
          {
            "name": "parameter-2002",
            "metadata": "PARAMETER_2002",
            "resourceName": "resource-2002",
            "resourceValue": 2000,
            "weight": 4
          },
          {
            "name": "parameter-2003",
            "metadata": "PARAMETER_2003",
            "resourceName": "resource-2003",
            "resourceValue": 3000,
            "weight": 6
          },
          {
            "name": "parameter-0004",
            "metadata": "PARAMETER_0004",
            "resourceName": "resource-2004",
            "resourceValue": 4000,
            "weight": 8
          }
        ],
        "metadata": "RARITY_0003"
      }
    ]
  }
  UploadToken: null
import (
    "github.com/gs2io/gs2-golang-cdk/core"
    "github.com/gs2io/gs2-golang-cdk/enchant"
    "github.com/openlyinc/pointy"
)


SampleStack := core.NewStack()
enchant.NewNamespace(
    &SampleStack,
    "namespace-0001",
    enchant.NamespaceOptions{},
).MasterData(
    []enchant.BalanceParameterModel{
        enchant.NewBalanceParameterModel(
            "balance-0001",
            100,
            enchant.BalanceParameterModelInitialValueStrategyAverage,
            []enchant.BalanceParameterValueModel{
                enchant.NewBalanceParameterValueModel(
                    "parameter-0001",
                    enchant.BalanceParameterValueModelOptions{
                        Metadata: pointy.String("PARAMETER_0001"),
                    },
                ),
                enchant.NewBalanceParameterValueModel(
                    "parameter-0002",
                    enchant.BalanceParameterValueModelOptions{
                        Metadata: pointy.String("PARAMETER_0002"),
                    },
                ),
                enchant.NewBalanceParameterValueModel(
                    "parameter-0003",
                    enchant.BalanceParameterValueModelOptions{
                        Metadata: pointy.String("PARAMETER_0003"),
                    },
                ),
            },
            enchant.BalanceParameterModelOptions{
                Metadata: pointy.String("BALANCE_0001"),
            },
        ),
        enchant.NewBalanceParameterModel(
            "balance-0002",
            200,
            enchant.BalanceParameterModelInitialValueStrategyLottery,
            []enchant.BalanceParameterValueModel{
                enchant.NewBalanceParameterValueModel(
                    "parameter-0001",
                    enchant.BalanceParameterValueModelOptions{
                        Metadata: pointy.String("PARAMETER_0001"),
                    },
                ),
                enchant.NewBalanceParameterValueModel(
                    "parameter-0002",
                    enchant.BalanceParameterValueModelOptions{
                        Metadata: pointy.String("PARAMETER_0002"),
                    },
                ),
                enchant.NewBalanceParameterValueModel(
                    "parameter-0003",
                    enchant.BalanceParameterValueModelOptions{
                        Metadata: pointy.String("PARAMETER_0003"),
                    },
                ),
                enchant.NewBalanceParameterValueModel(
                    "parameter-0004",
                    enchant.BalanceParameterValueModelOptions{
                        Metadata: pointy.String("PARAMETER_0004"),
                    },
                ),
            },
            enchant.BalanceParameterModelOptions{
                Metadata: pointy.String("BALANCE_0002"),
            },
        ),
        enchant.NewBalanceParameterModel(
            "balance-0003",
            500,
            enchant.BalanceParameterModelInitialValueStrategyAverage,
            []enchant.BalanceParameterValueModel{
                enchant.NewBalanceParameterValueModel(
                    "parameter-0001",
                    enchant.BalanceParameterValueModelOptions{
                        Metadata: pointy.String("PARAMETER_0001"),
                    },
                ),
                enchant.NewBalanceParameterValueModel(
                    "parameter-0002",
                    enchant.BalanceParameterValueModelOptions{
                        Metadata: pointy.String("PARAMETER_0002"),
                    },
                ),
            },
            enchant.BalanceParameterModelOptions{
                Metadata: pointy.String("BALANCE_0003"),
            },
        ),
    },
    []enchant.RarityParameterModel{
        enchant.NewRarityParameterModel(
            "rarity-0001",
            5,
            []enchant.RarityParameterCountModel{
                enchant.NewRarityParameterCountModel(
                    0,
                    1,
                    enchant.RarityParameterCountModelOptions{},
                ),
                enchant.NewRarityParameterCountModel(
                    1,
                    2,
                    enchant.RarityParameterCountModelOptions{},
                ),
                enchant.NewRarityParameterCountModel(
                    2,
                    3,
                    enchant.RarityParameterCountModelOptions{},
                ),
            },
            []enchant.RarityParameterValueModel{
                enchant.NewRarityParameterValueModel(
                    "parameter-0001",
                    "resource-0001",
                    10,
                    1,
                    enchant.RarityParameterValueModelOptions{
                        Metadata: pointy.String("PARAMETER_0001"),
                    },
                ),
                enchant.NewRarityParameterValueModel(
                    "parameter-0002",
                    "resource-0002",
                    20,
                    2,
                    enchant.RarityParameterValueModelOptions{
                        Metadata: pointy.String("PARAMETER_0002"),
                    },
                ),
                enchant.NewRarityParameterValueModel(
                    "parameter-0003",
                    "resource-0003",
                    30,
                    3,
                    enchant.RarityParameterValueModelOptions{
                        Metadata: pointy.String("PARAMETER_0003"),
                    },
                ),
            },
            enchant.RarityParameterModelOptions{
                Metadata: pointy.String("RARITY_0001"),
            },
        ),
        enchant.NewRarityParameterModel(
            "rarity-0002",
            10,
            []enchant.RarityParameterCountModel{
                enchant.NewRarityParameterCountModel(
                    1,
                    10,
                    enchant.RarityParameterCountModelOptions{},
                ),
                enchant.NewRarityParameterCountModel(
                    2,
                    20,
                    enchant.RarityParameterCountModelOptions{},
                ),
                enchant.NewRarityParameterCountModel(
                    3,
                    30,
                    enchant.RarityParameterCountModelOptions{},
                ),
            },
            []enchant.RarityParameterValueModel{
                enchant.NewRarityParameterValueModel(
                    "parameter-1001",
                    "resource-1001",
                    100,
                    10,
                    enchant.RarityParameterValueModelOptions{
                        Metadata: pointy.String("PARAMETER_1001"),
                    },
                ),
                enchant.NewRarityParameterValueModel(
                    "parameter-1002",
                    "resource-1002",
                    200,
                    20,
                    enchant.RarityParameterValueModelOptions{
                        Metadata: pointy.String("PARAMETER_1002"),
                    },
                ),
                enchant.NewRarityParameterValueModel(
                    "parameter-1003",
                    "resource-1003",
                    300,
                    30,
                    enchant.RarityParameterValueModelOptions{
                        Metadata: pointy.String("PARAMETER_1003"),
                    },
                ),
            },
            enchant.RarityParameterModelOptions{
                Metadata: pointy.String("RARITY_0002"),
            },
        ),
        enchant.NewRarityParameterModel(
            "rarity-0003",
            3,
            []enchant.RarityParameterCountModel{
                enchant.NewRarityParameterCountModel(
                    2,
                    5,
                    enchant.RarityParameterCountModelOptions{},
                ),
                enchant.NewRarityParameterCountModel(
                    3,
                    10,
                    enchant.RarityParameterCountModelOptions{},
                ),
                enchant.NewRarityParameterCountModel(
                    4,
                    15,
                    enchant.RarityParameterCountModelOptions{},
                ),
            },
            []enchant.RarityParameterValueModel{
                enchant.NewRarityParameterValueModel(
                    "parameter-2001",
                    "resource-2001",
                    1000,
                    2,
                    enchant.RarityParameterValueModelOptions{
                        Metadata: pointy.String("PARAMETER_2001"),
                    },
                ),
                enchant.NewRarityParameterValueModel(
                    "parameter-2002",
                    "resource-2002",
                    2000,
                    4,
                    enchant.RarityParameterValueModelOptions{
                        Metadata: pointy.String("PARAMETER_2002"),
                    },
                ),
                enchant.NewRarityParameterValueModel(
                    "parameter-2003",
                    "resource-2003",
                    3000,
                    6,
                    enchant.RarityParameterValueModelOptions{
                        Metadata: pointy.String("PARAMETER_2003"),
                    },
                ),
                enchant.NewRarityParameterValueModel(
                    "parameter-0004",
                    "resource-2004",
                    4000,
                    8,
                    enchant.RarityParameterValueModelOptions{
                        Metadata: pointy.String("PARAMETER_0004"),
                    },
                ),
            },
            enchant.RarityParameterModelOptions{
                Metadata: pointy.String("RARITY_0003"),
            },
        ),
    },
)

println(SampleStack.Yaml())  // Generate Template
class SampleStack extends \Gs2Cdk\Core\Model\Stack
{
    function __construct() {
        parent::__construct();
        (new \Gs2Cdk\Enchant\Model\Namespace_(
            stack: $this,
            name: "namespace-0001"
        ))->masterData(
            [
                new \Gs2Cdk\Enchant\Model\BalanceParameterModel(
                    name:"balance-0001",
                    totalValue:100,
                    initialValueStrategy: \Gs2Cdk\Enchant\Model\Enums\BalanceParameterModelInitialValueStrategy::AVERAGE,
                    parameters:[
                        new \Gs2Cdk\Enchant\Model\BalanceParameterValueModel(
                            name: "parameter-0001",
                            options: new \Gs2Cdk\Enchant\Model\Options\BalanceParameterValueModelOptions(
                                metadata: "PARAMETER_0001",
                            ),
                        ),
                        new \Gs2Cdk\Enchant\Model\BalanceParameterValueModel(
                            name: "parameter-0002",
                            options: new \Gs2Cdk\Enchant\Model\Options\BalanceParameterValueModelOptions(
                                metadata: "PARAMETER_0002",
                            ),
                        ),
                        new \Gs2Cdk\Enchant\Model\BalanceParameterValueModel(
                            name: "parameter-0003",
                            options: new \Gs2Cdk\Enchant\Model\Options\BalanceParameterValueModelOptions(
                                metadata: "PARAMETER_0003",
                            ),
                        ),
                    ],
                    options: new \Gs2Cdk\Enchant\Model\Options\BalanceParameterModelOptions(
                        metadata:"BALANCE_0001"
                    )
                ),
                new \Gs2Cdk\Enchant\Model\BalanceParameterModel(
                    name:"balance-0002",
                    totalValue:200,
                    initialValueStrategy: \Gs2Cdk\Enchant\Model\Enums\BalanceParameterModelInitialValueStrategy::LOTTERY,
                    parameters:[
                        new \Gs2Cdk\Enchant\Model\BalanceParameterValueModel(
                            name: "parameter-0001",
                            options: new \Gs2Cdk\Enchant\Model\Options\BalanceParameterValueModelOptions(
                                metadata: "PARAMETER_0001",
                            ),
                        ),
                        new \Gs2Cdk\Enchant\Model\BalanceParameterValueModel(
                            name: "parameter-0002",
                            options: new \Gs2Cdk\Enchant\Model\Options\BalanceParameterValueModelOptions(
                                metadata: "PARAMETER_0002",
                            ),
                        ),
                        new \Gs2Cdk\Enchant\Model\BalanceParameterValueModel(
                            name: "parameter-0003",
                            options: new \Gs2Cdk\Enchant\Model\Options\BalanceParameterValueModelOptions(
                                metadata: "PARAMETER_0003",
                            ),
                        ),
                        new \Gs2Cdk\Enchant\Model\BalanceParameterValueModel(
                            name: "parameter-0004",
                            options: new \Gs2Cdk\Enchant\Model\Options\BalanceParameterValueModelOptions(
                                metadata: "PARAMETER_0004",
                            ),
                        ),
                    ],
                    options: new \Gs2Cdk\Enchant\Model\Options\BalanceParameterModelOptions(
                        metadata:"BALANCE_0002"
                    )
                ),
                new \Gs2Cdk\Enchant\Model\BalanceParameterModel(
                    name:"balance-0003",
                    totalValue:500,
                    initialValueStrategy: \Gs2Cdk\Enchant\Model\Enums\BalanceParameterModelInitialValueStrategy::AVERAGE,
                    parameters:[
                        new \Gs2Cdk\Enchant\Model\BalanceParameterValueModel(
                            name: "parameter-0001",
                            options: new \Gs2Cdk\Enchant\Model\Options\BalanceParameterValueModelOptions(
                                metadata: "PARAMETER_0001",
                            ),
                        ),
                        new \Gs2Cdk\Enchant\Model\BalanceParameterValueModel(
                            name: "parameter-0002",
                            options: new \Gs2Cdk\Enchant\Model\Options\BalanceParameterValueModelOptions(
                                metadata: "PARAMETER_0002",
                            ),
                        ),
                    ],
                    options: new \Gs2Cdk\Enchant\Model\Options\BalanceParameterModelOptions(
                        metadata:"BALANCE_0003"
                    )
                )
            ],
            [
                new \Gs2Cdk\Enchant\Model\RarityParameterModel(
                    name:"rarity-0001",
                    maximumParameterCount:5,
                    parameterCounts:[
                        new \Gs2Cdk\Enchant\Model\RarityParameterCountModel(
                            count: 0,
                            weight: 1,
                        ),
                        new \Gs2Cdk\Enchant\Model\RarityParameterCountModel(
                            count: 1,
                            weight: 2,
                        ),
                        new \Gs2Cdk\Enchant\Model\RarityParameterCountModel(
                            count: 2,
                            weight: 3,
                        ),
                    ],
                    parameters:[
                        new \Gs2Cdk\Enchant\Model\RarityParameterValueModel(
                            name: "parameter-0001",
                            resourceName: "resource-0001",
                            resourceValue: 10,
                            weight: 1,
                            options: new \Gs2Cdk\Enchant\Model\Options\RarityParameterValueModelOptions(
                                metadata: "PARAMETER_0001",
                            ),
                        ),
                        new \Gs2Cdk\Enchant\Model\RarityParameterValueModel(
                            name: "parameter-0002",
                            resourceName: "resource-0002",
                            resourceValue: 20,
                            weight: 2,
                            options: new \Gs2Cdk\Enchant\Model\Options\RarityParameterValueModelOptions(
                                metadata: "PARAMETER_0002",
                            ),
                        ),
                        new \Gs2Cdk\Enchant\Model\RarityParameterValueModel(
                            name: "parameter-0003",
                            resourceName: "resource-0003",
                            resourceValue: 30,
                            weight: 3,
                            options: new \Gs2Cdk\Enchant\Model\Options\RarityParameterValueModelOptions(
                                metadata: "PARAMETER_0003",
                            ),
                        ),
                    ],
                    options: new \Gs2Cdk\Enchant\Model\Options\RarityParameterModelOptions(
                        metadata:"RARITY_0001"
                    )
                ),
                new \Gs2Cdk\Enchant\Model\RarityParameterModel(
                    name:"rarity-0002",
                    maximumParameterCount:10,
                    parameterCounts:[
                        new \Gs2Cdk\Enchant\Model\RarityParameterCountModel(
                            count: 1,
                            weight: 10,
                        ),
                        new \Gs2Cdk\Enchant\Model\RarityParameterCountModel(
                            count: 2,
                            weight: 20,
                        ),
                        new \Gs2Cdk\Enchant\Model\RarityParameterCountModel(
                            count: 3,
                            weight: 30,
                        ),
                    ],
                    parameters:[
                        new \Gs2Cdk\Enchant\Model\RarityParameterValueModel(
                            name: "parameter-1001",
                            resourceName: "resource-1001",
                            resourceValue: 100,
                            weight: 10,
                            options: new \Gs2Cdk\Enchant\Model\Options\RarityParameterValueModelOptions(
                                metadata: "PARAMETER_1001",
                            ),
                        ),
                        new \Gs2Cdk\Enchant\Model\RarityParameterValueModel(
                            name: "parameter-1002",
                            resourceName: "resource-1002",
                            resourceValue: 200,
                            weight: 20,
                            options: new \Gs2Cdk\Enchant\Model\Options\RarityParameterValueModelOptions(
                                metadata: "PARAMETER_1002",
                            ),
                        ),
                        new \Gs2Cdk\Enchant\Model\RarityParameterValueModel(
                            name: "parameter-1003",
                            resourceName: "resource-1003",
                            resourceValue: 300,
                            weight: 30,
                            options: new \Gs2Cdk\Enchant\Model\Options\RarityParameterValueModelOptions(
                                metadata: "PARAMETER_1003",
                            ),
                        ),
                    ],
                    options: new \Gs2Cdk\Enchant\Model\Options\RarityParameterModelOptions(
                        metadata:"RARITY_0002"
                    )
                ),
                new \Gs2Cdk\Enchant\Model\RarityParameterModel(
                    name:"rarity-0003",
                    maximumParameterCount:3,
                    parameterCounts:[
                        new \Gs2Cdk\Enchant\Model\RarityParameterCountModel(
                            count: 2,
                            weight: 5,
                        ),
                        new \Gs2Cdk\Enchant\Model\RarityParameterCountModel(
                            count: 3,
                            weight: 10,
                        ),
                        new \Gs2Cdk\Enchant\Model\RarityParameterCountModel(
                            count: 4,
                            weight: 15,
                        ),
                    ],
                    parameters:[
                        new \Gs2Cdk\Enchant\Model\RarityParameterValueModel(
                            name: "parameter-2001",
                            resourceName: "resource-2001",
                            resourceValue: 1000,
                            weight: 2,
                            options: new \Gs2Cdk\Enchant\Model\Options\RarityParameterValueModelOptions(
                                metadata: "PARAMETER_2001",
                            ),
                        ),
                        new \Gs2Cdk\Enchant\Model\RarityParameterValueModel(
                            name: "parameter-2002",
                            resourceName: "resource-2002",
                            resourceValue: 2000,
                            weight: 4,
                            options: new \Gs2Cdk\Enchant\Model\Options\RarityParameterValueModelOptions(
                                metadata: "PARAMETER_2002",
                            ),
                        ),
                        new \Gs2Cdk\Enchant\Model\RarityParameterValueModel(
                            name: "parameter-2003",
                            resourceName: "resource-2003",
                            resourceValue: 3000,
                            weight: 6,
                            options: new \Gs2Cdk\Enchant\Model\Options\RarityParameterValueModelOptions(
                                metadata: "PARAMETER_2003",
                            ),
                        ),
                        new \Gs2Cdk\Enchant\Model\RarityParameterValueModel(
                            name: "parameter-0004",
                            resourceName: "resource-2004",
                            resourceValue: 4000,
                            weight: 8,
                            options: new \Gs2Cdk\Enchant\Model\Options\RarityParameterValueModelOptions(
                                metadata: "PARAMETER_0004",
                            ),
                        ),
                    ],
                    options: new \Gs2Cdk\Enchant\Model\Options\RarityParameterModelOptions(
                        metadata:"RARITY_0003"
                    )
                )
            ]
        );
    }
}

print((new SampleStack())->yaml());  // Generate Template
class SampleStack extends io.gs2.cdk.core.model.Stack
{
    public SampleStack() {
        super();
        new io.gs2.cdk.enchant.model.Namespace(
            this,
            "namespace-0001"
        ).masterData(
            Arrays.asList(
                new io.gs2.cdk.enchant.model.BalanceParameterModel(
                    "balance-0001",
                    100L,
                    io.gs2.cdk.enchant.model.enums.BalanceParameterModelInitialValueStrategy.AVERAGE,
                    Arrays.asList(
                        new io.gs2.cdk.enchant.model.BalanceParameterValueModel(
                            "parameter-0001",
                            new io.gs2.cdk.enchant.model.options.BalanceParameterValueModelOptions()
                                .withMetadata("PARAMETER_0001")
                        ),
                        new io.gs2.cdk.enchant.model.BalanceParameterValueModel(
                            "parameter-0002",
                            new io.gs2.cdk.enchant.model.options.BalanceParameterValueModelOptions()
                                .withMetadata("PARAMETER_0002")
                        ),
                        new io.gs2.cdk.enchant.model.BalanceParameterValueModel(
                            "parameter-0003",
                            new io.gs2.cdk.enchant.model.options.BalanceParameterValueModelOptions()
                                .withMetadata("PARAMETER_0003")
                        )
                    ),
                    new io.gs2.cdk.enchant.model.options.BalanceParameterModelOptions()
                        .withMetadata("BALANCE_0001")
                ),
                new io.gs2.cdk.enchant.model.BalanceParameterModel(
                    "balance-0002",
                    200L,
                    io.gs2.cdk.enchant.model.enums.BalanceParameterModelInitialValueStrategy.LOTTERY,
                    Arrays.asList(
                        new io.gs2.cdk.enchant.model.BalanceParameterValueModel(
                            "parameter-0001",
                            new io.gs2.cdk.enchant.model.options.BalanceParameterValueModelOptions()
                                .withMetadata("PARAMETER_0001")
                        ),
                        new io.gs2.cdk.enchant.model.BalanceParameterValueModel(
                            "parameter-0002",
                            new io.gs2.cdk.enchant.model.options.BalanceParameterValueModelOptions()
                                .withMetadata("PARAMETER_0002")
                        ),
                        new io.gs2.cdk.enchant.model.BalanceParameterValueModel(
                            "parameter-0003",
                            new io.gs2.cdk.enchant.model.options.BalanceParameterValueModelOptions()
                                .withMetadata("PARAMETER_0003")
                        ),
                        new io.gs2.cdk.enchant.model.BalanceParameterValueModel(
                            "parameter-0004",
                            new io.gs2.cdk.enchant.model.options.BalanceParameterValueModelOptions()
                                .withMetadata("PARAMETER_0004")
                        )
                    ),
                    new io.gs2.cdk.enchant.model.options.BalanceParameterModelOptions()
                        .withMetadata("BALANCE_0002")
                ),
                new io.gs2.cdk.enchant.model.BalanceParameterModel(
                    "balance-0003",
                    500L,
                    io.gs2.cdk.enchant.model.enums.BalanceParameterModelInitialValueStrategy.AVERAGE,
                    Arrays.asList(
                        new io.gs2.cdk.enchant.model.BalanceParameterValueModel(
                            "parameter-0001",
                            new io.gs2.cdk.enchant.model.options.BalanceParameterValueModelOptions()
                                .withMetadata("PARAMETER_0001")
                        ),
                        new io.gs2.cdk.enchant.model.BalanceParameterValueModel(
                            "parameter-0002",
                            new io.gs2.cdk.enchant.model.options.BalanceParameterValueModelOptions()
                                .withMetadata("PARAMETER_0002")
                        )
                    ),
                    new io.gs2.cdk.enchant.model.options.BalanceParameterModelOptions()
                        .withMetadata("BALANCE_0003")
                )
            ),
            Arrays.asList(
                new io.gs2.cdk.enchant.model.RarityParameterModel(
                    "rarity-0001",
                    5,
                    Arrays.asList(
                        new io.gs2.cdk.enchant.model.RarityParameterCountModel(
                            0,
                            1
                        ),
                        new io.gs2.cdk.enchant.model.RarityParameterCountModel(
                            1,
                            2
                        ),
                        new io.gs2.cdk.enchant.model.RarityParameterCountModel(
                            2,
                            3
                        )
                    ),
                    Arrays.asList(
                        new io.gs2.cdk.enchant.model.RarityParameterValueModel(
                            "parameter-0001",
                            "resource-0001",
                            10L,
                            1,
                            new io.gs2.cdk.enchant.model.options.RarityParameterValueModelOptions()
                                .withMetadata("PARAMETER_0001")
                        ),
                        new io.gs2.cdk.enchant.model.RarityParameterValueModel(
                            "parameter-0002",
                            "resource-0002",
                            20L,
                            2,
                            new io.gs2.cdk.enchant.model.options.RarityParameterValueModelOptions()
                                .withMetadata("PARAMETER_0002")
                        ),
                        new io.gs2.cdk.enchant.model.RarityParameterValueModel(
                            "parameter-0003",
                            "resource-0003",
                            30L,
                            3,
                            new io.gs2.cdk.enchant.model.options.RarityParameterValueModelOptions()
                                .withMetadata("PARAMETER_0003")
                        )
                    ),
                    new io.gs2.cdk.enchant.model.options.RarityParameterModelOptions()
                        .withMetadata("RARITY_0001")
                ),
                new io.gs2.cdk.enchant.model.RarityParameterModel(
                    "rarity-0002",
                    10,
                    Arrays.asList(
                        new io.gs2.cdk.enchant.model.RarityParameterCountModel(
                            1,
                            10
                        ),
                        new io.gs2.cdk.enchant.model.RarityParameterCountModel(
                            2,
                            20
                        ),
                        new io.gs2.cdk.enchant.model.RarityParameterCountModel(
                            3,
                            30
                        )
                    ),
                    Arrays.asList(
                        new io.gs2.cdk.enchant.model.RarityParameterValueModel(
                            "parameter-1001",
                            "resource-1001",
                            100L,
                            10,
                            new io.gs2.cdk.enchant.model.options.RarityParameterValueModelOptions()
                                .withMetadata("PARAMETER_1001")
                        ),
                        new io.gs2.cdk.enchant.model.RarityParameterValueModel(
                            "parameter-1002",
                            "resource-1002",
                            200L,
                            20,
                            new io.gs2.cdk.enchant.model.options.RarityParameterValueModelOptions()
                                .withMetadata("PARAMETER_1002")
                        ),
                        new io.gs2.cdk.enchant.model.RarityParameterValueModel(
                            "parameter-1003",
                            "resource-1003",
                            300L,
                            30,
                            new io.gs2.cdk.enchant.model.options.RarityParameterValueModelOptions()
                                .withMetadata("PARAMETER_1003")
                        )
                    ),
                    new io.gs2.cdk.enchant.model.options.RarityParameterModelOptions()
                        .withMetadata("RARITY_0002")
                ),
                new io.gs2.cdk.enchant.model.RarityParameterModel(
                    "rarity-0003",
                    3,
                    Arrays.asList(
                        new io.gs2.cdk.enchant.model.RarityParameterCountModel(
                            2,
                            5
                        ),
                        new io.gs2.cdk.enchant.model.RarityParameterCountModel(
                            3,
                            10
                        ),
                        new io.gs2.cdk.enchant.model.RarityParameterCountModel(
                            4,
                            15
                        )
                    ),
                    Arrays.asList(
                        new io.gs2.cdk.enchant.model.RarityParameterValueModel(
                            "parameter-2001",
                            "resource-2001",
                            1000L,
                            2,
                            new io.gs2.cdk.enchant.model.options.RarityParameterValueModelOptions()
                                .withMetadata("PARAMETER_2001")
                        ),
                        new io.gs2.cdk.enchant.model.RarityParameterValueModel(
                            "parameter-2002",
                            "resource-2002",
                            2000L,
                            4,
                            new io.gs2.cdk.enchant.model.options.RarityParameterValueModelOptions()
                                .withMetadata("PARAMETER_2002")
                        ),
                        new io.gs2.cdk.enchant.model.RarityParameterValueModel(
                            "parameter-2003",
                            "resource-2003",
                            3000L,
                            6,
                            new io.gs2.cdk.enchant.model.options.RarityParameterValueModelOptions()
                                .withMetadata("PARAMETER_2003")
                        ),
                        new io.gs2.cdk.enchant.model.RarityParameterValueModel(
                            "parameter-0004",
                            "resource-2004",
                            4000L,
                            8,
                            new io.gs2.cdk.enchant.model.options.RarityParameterValueModelOptions()
                                .withMetadata("PARAMETER_0004")
                        )
                    ),
                    new io.gs2.cdk.enchant.model.options.RarityParameterModelOptions()
                        .withMetadata("RARITY_0003")
                )
            )
        );
    }
}

System.out.println(new SampleStack().yaml());  // Generate Template
public class SampleStack : Gs2Cdk.Core.Model.Stack
{
    public SampleStack() {
        new Gs2Cdk.Gs2Enchant.Model.Namespace(
            stack: this,
            name: "namespace-0001"
        ).MasterData(
            new Gs2Cdk.Gs2Enchant.Model.BalanceParameterModel[] {
                new Gs2Cdk.Gs2Enchant.Model.BalanceParameterModel(
                    name: "balance-0001",
                    totalValue: 100L,
                    initialValueStrategy: Gs2Cdk.Gs2Enchant.Model.Enums.BalanceParameterModelInitialValueStrategy.Average,
                    parameters: new Gs2Cdk.Gs2Enchant.Model.BalanceParameterValueModel[]
                    {
                        new Gs2Cdk.Gs2Enchant.Model.BalanceParameterValueModel(
                            name: "parameter-0001",
                            options: new Gs2Cdk.Gs2Enchant.Model.Options.BalanceParameterValueModelOptions
                            {
                                metadata = "PARAMETER_0001"
                            }
                        ),
                        new Gs2Cdk.Gs2Enchant.Model.BalanceParameterValueModel(
                            name: "parameter-0002",
                            options: new Gs2Cdk.Gs2Enchant.Model.Options.BalanceParameterValueModelOptions
                            {
                                metadata = "PARAMETER_0002"
                            }
                        ),
                        new Gs2Cdk.Gs2Enchant.Model.BalanceParameterValueModel(
                            name: "parameter-0003",
                            options: new Gs2Cdk.Gs2Enchant.Model.Options.BalanceParameterValueModelOptions
                            {
                                metadata = "PARAMETER_0003"
                            }
                        )
                    },
                    options: new Gs2Cdk.Gs2Enchant.Model.Options.BalanceParameterModelOptions
                    {
                        metadata = "BALANCE_0001"
                    }
                ),
                new Gs2Cdk.Gs2Enchant.Model.BalanceParameterModel(
                    name: "balance-0002",
                    totalValue: 200L,
                    initialValueStrategy: Gs2Cdk.Gs2Enchant.Model.Enums.BalanceParameterModelInitialValueStrategy.Lottery,
                    parameters: new Gs2Cdk.Gs2Enchant.Model.BalanceParameterValueModel[]
                    {
                        new Gs2Cdk.Gs2Enchant.Model.BalanceParameterValueModel(
                            name: "parameter-0001",
                            options: new Gs2Cdk.Gs2Enchant.Model.Options.BalanceParameterValueModelOptions
                            {
                                metadata = "PARAMETER_0001"
                            }
                        ),
                        new Gs2Cdk.Gs2Enchant.Model.BalanceParameterValueModel(
                            name: "parameter-0002",
                            options: new Gs2Cdk.Gs2Enchant.Model.Options.BalanceParameterValueModelOptions
                            {
                                metadata = "PARAMETER_0002"
                            }
                        ),
                        new Gs2Cdk.Gs2Enchant.Model.BalanceParameterValueModel(
                            name: "parameter-0003",
                            options: new Gs2Cdk.Gs2Enchant.Model.Options.BalanceParameterValueModelOptions
                            {
                                metadata = "PARAMETER_0003"
                            }
                        ),
                        new Gs2Cdk.Gs2Enchant.Model.BalanceParameterValueModel(
                            name: "parameter-0004",
                            options: new Gs2Cdk.Gs2Enchant.Model.Options.BalanceParameterValueModelOptions
                            {
                                metadata = "PARAMETER_0004"
                            }
                        )
                    },
                    options: new Gs2Cdk.Gs2Enchant.Model.Options.BalanceParameterModelOptions
                    {
                        metadata = "BALANCE_0002"
                    }
                ),
                new Gs2Cdk.Gs2Enchant.Model.BalanceParameterModel(
                    name: "balance-0003",
                    totalValue: 500L,
                    initialValueStrategy: Gs2Cdk.Gs2Enchant.Model.Enums.BalanceParameterModelInitialValueStrategy.Average,
                    parameters: new Gs2Cdk.Gs2Enchant.Model.BalanceParameterValueModel[]
                    {
                        new Gs2Cdk.Gs2Enchant.Model.BalanceParameterValueModel(
                            name: "parameter-0001",
                            options: new Gs2Cdk.Gs2Enchant.Model.Options.BalanceParameterValueModelOptions
                            {
                                metadata = "PARAMETER_0001"
                            }
                        ),
                        new Gs2Cdk.Gs2Enchant.Model.BalanceParameterValueModel(
                            name: "parameter-0002",
                            options: new Gs2Cdk.Gs2Enchant.Model.Options.BalanceParameterValueModelOptions
                            {
                                metadata = "PARAMETER_0002"
                            }
                        )
                    },
                    options: new Gs2Cdk.Gs2Enchant.Model.Options.BalanceParameterModelOptions
                    {
                        metadata = "BALANCE_0003"
                    }
                )
            },
            new Gs2Cdk.Gs2Enchant.Model.RarityParameterModel[] {
                new Gs2Cdk.Gs2Enchant.Model.RarityParameterModel(
                    name: "rarity-0001",
                    maximumParameterCount: 5,
                    parameterCounts: new Gs2Cdk.Gs2Enchant.Model.RarityParameterCountModel[]
                    {
                        new Gs2Cdk.Gs2Enchant.Model.RarityParameterCountModel(
                            count: 0,
                            weight: 1
                        ),
                        new Gs2Cdk.Gs2Enchant.Model.RarityParameterCountModel(
                            count: 1,
                            weight: 2
                        ),
                        new Gs2Cdk.Gs2Enchant.Model.RarityParameterCountModel(
                            count: 2,
                            weight: 3
                        )
                    },
                    parameters: new Gs2Cdk.Gs2Enchant.Model.RarityParameterValueModel[]
                    {
                        new Gs2Cdk.Gs2Enchant.Model.RarityParameterValueModel(
                            name: "parameter-0001",
                            resourceName: "resource-0001",
                            resourceValue: 10L,
                            weight: 1,
                            options: new Gs2Cdk.Gs2Enchant.Model.Options.RarityParameterValueModelOptions
                            {
                                metadata = "PARAMETER_0001"
                            }
                        ),
                        new Gs2Cdk.Gs2Enchant.Model.RarityParameterValueModel(
                            name: "parameter-0002",
                            resourceName: "resource-0002",
                            resourceValue: 20L,
                            weight: 2,
                            options: new Gs2Cdk.Gs2Enchant.Model.Options.RarityParameterValueModelOptions
                            {
                                metadata = "PARAMETER_0002"
                            }
                        ),
                        new Gs2Cdk.Gs2Enchant.Model.RarityParameterValueModel(
                            name: "parameter-0003",
                            resourceName: "resource-0003",
                            resourceValue: 30L,
                            weight: 3,
                            options: new Gs2Cdk.Gs2Enchant.Model.Options.RarityParameterValueModelOptions
                            {
                                metadata = "PARAMETER_0003"
                            }
                        )
                    },
                    options: new Gs2Cdk.Gs2Enchant.Model.Options.RarityParameterModelOptions
                    {
                        metadata = "RARITY_0001"
                    }
                ),
                new Gs2Cdk.Gs2Enchant.Model.RarityParameterModel(
                    name: "rarity-0002",
                    maximumParameterCount: 10,
                    parameterCounts: new Gs2Cdk.Gs2Enchant.Model.RarityParameterCountModel[]
                    {
                        new Gs2Cdk.Gs2Enchant.Model.RarityParameterCountModel(
                            count: 1,
                            weight: 10
                        ),
                        new Gs2Cdk.Gs2Enchant.Model.RarityParameterCountModel(
                            count: 2,
                            weight: 20
                        ),
                        new Gs2Cdk.Gs2Enchant.Model.RarityParameterCountModel(
                            count: 3,
                            weight: 30
                        )
                    },
                    parameters: new Gs2Cdk.Gs2Enchant.Model.RarityParameterValueModel[]
                    {
                        new Gs2Cdk.Gs2Enchant.Model.RarityParameterValueModel(
                            name: "parameter-1001",
                            resourceName: "resource-1001",
                            resourceValue: 100L,
                            weight: 10,
                            options: new Gs2Cdk.Gs2Enchant.Model.Options.RarityParameterValueModelOptions
                            {
                                metadata = "PARAMETER_1001"
                            }
                        ),
                        new Gs2Cdk.Gs2Enchant.Model.RarityParameterValueModel(
                            name: "parameter-1002",
                            resourceName: "resource-1002",
                            resourceValue: 200L,
                            weight: 20,
                            options: new Gs2Cdk.Gs2Enchant.Model.Options.RarityParameterValueModelOptions
                            {
                                metadata = "PARAMETER_1002"
                            }
                        ),
                        new Gs2Cdk.Gs2Enchant.Model.RarityParameterValueModel(
                            name: "parameter-1003",
                            resourceName: "resource-1003",
                            resourceValue: 300L,
                            weight: 30,
                            options: new Gs2Cdk.Gs2Enchant.Model.Options.RarityParameterValueModelOptions
                            {
                                metadata = "PARAMETER_1003"
                            }
                        )
                    },
                    options: new Gs2Cdk.Gs2Enchant.Model.Options.RarityParameterModelOptions
                    {
                        metadata = "RARITY_0002"
                    }
                ),
                new Gs2Cdk.Gs2Enchant.Model.RarityParameterModel(
                    name: "rarity-0003",
                    maximumParameterCount: 3,
                    parameterCounts: new Gs2Cdk.Gs2Enchant.Model.RarityParameterCountModel[]
                    {
                        new Gs2Cdk.Gs2Enchant.Model.RarityParameterCountModel(
                            count: 2,
                            weight: 5
                        ),
                        new Gs2Cdk.Gs2Enchant.Model.RarityParameterCountModel(
                            count: 3,
                            weight: 10
                        ),
                        new Gs2Cdk.Gs2Enchant.Model.RarityParameterCountModel(
                            count: 4,
                            weight: 15
                        )
                    },
                    parameters: new Gs2Cdk.Gs2Enchant.Model.RarityParameterValueModel[]
                    {
                        new Gs2Cdk.Gs2Enchant.Model.RarityParameterValueModel(
                            name: "parameter-2001",
                            resourceName: "resource-2001",
                            resourceValue: 1000L,
                            weight: 2,
                            options: new Gs2Cdk.Gs2Enchant.Model.Options.RarityParameterValueModelOptions
                            {
                                metadata = "PARAMETER_2001"
                            }
                        ),
                        new Gs2Cdk.Gs2Enchant.Model.RarityParameterValueModel(
                            name: "parameter-2002",
                            resourceName: "resource-2002",
                            resourceValue: 2000L,
                            weight: 4,
                            options: new Gs2Cdk.Gs2Enchant.Model.Options.RarityParameterValueModelOptions
                            {
                                metadata = "PARAMETER_2002"
                            }
                        ),
                        new Gs2Cdk.Gs2Enchant.Model.RarityParameterValueModel(
                            name: "parameter-2003",
                            resourceName: "resource-2003",
                            resourceValue: 3000L,
                            weight: 6,
                            options: new Gs2Cdk.Gs2Enchant.Model.Options.RarityParameterValueModelOptions
                            {
                                metadata = "PARAMETER_2003"
                            }
                        ),
                        new Gs2Cdk.Gs2Enchant.Model.RarityParameterValueModel(
                            name: "parameter-0004",
                            resourceName: "resource-2004",
                            resourceValue: 4000L,
                            weight: 8,
                            options: new Gs2Cdk.Gs2Enchant.Model.Options.RarityParameterValueModelOptions
                            {
                                metadata = "PARAMETER_0004"
                            }
                        )
                    },
                    options: new Gs2Cdk.Gs2Enchant.Model.Options.RarityParameterModelOptions
                    {
                        metadata = "RARITY_0003"
                    }
                )
            }
        );
    }
}

Debug.Log(new SampleStack().Yaml());  // Generate Template
import core from "@/gs2cdk/core";
import enchant from "@/gs2cdk/enchant";

class SampleStack extends core.Stack
{
    public constructor() {
        super();
        new enchant.model.Namespace(
            this,
            "namespace-0001",
        ).masterData(
            [
                new enchant.model.BalanceParameterModel(
                    "balance-0001",
                    100,
                    enchant.model.BalanceParameterModelInitialValueStrategy.AVERAGE,
                    [
                        new enchant.model.BalanceParameterValueModel(
                            "parameter-0001",
                            {
                                metadata: "PARAMETER_0001"
                            }
                        ),
                        new enchant.model.BalanceParameterValueModel(
                            "parameter-0002",
                            {
                                metadata: "PARAMETER_0002"
                            }
                        ),
                        new enchant.model.BalanceParameterValueModel(
                            "parameter-0003",
                            {
                                metadata: "PARAMETER_0003"
                            }
                        ),
                    ],
                    {
                        metadata: "BALANCE_0001"
                    }
                ),
                new enchant.model.BalanceParameterModel(
                    "balance-0002",
                    200,
                    enchant.model.BalanceParameterModelInitialValueStrategy.LOTTERY,
                    [
                        new enchant.model.BalanceParameterValueModel(
                            "parameter-0001",
                            {
                                metadata: "PARAMETER_0001"
                            }
                        ),
                        new enchant.model.BalanceParameterValueModel(
                            "parameter-0002",
                            {
                                metadata: "PARAMETER_0002"
                            }
                        ),
                        new enchant.model.BalanceParameterValueModel(
                            "parameter-0003",
                            {
                                metadata: "PARAMETER_0003"
                            }
                        ),
                        new enchant.model.BalanceParameterValueModel(
                            "parameter-0004",
                            {
                                metadata: "PARAMETER_0004"
                            }
                        ),
                    ],
                    {
                        metadata: "BALANCE_0002"
                    }
                ),
                new enchant.model.BalanceParameterModel(
                    "balance-0003",
                    500,
                    enchant.model.BalanceParameterModelInitialValueStrategy.AVERAGE,
                    [
                        new enchant.model.BalanceParameterValueModel(
                            "parameter-0001",
                            {
                                metadata: "PARAMETER_0001"
                            }
                        ),
                        new enchant.model.BalanceParameterValueModel(
                            "parameter-0002",
                            {
                                metadata: "PARAMETER_0002"
                            }
                        ),
                    ],
                    {
                        metadata: "BALANCE_0003"
                    }
                )
            ],
            [
                new enchant.model.RarityParameterModel(
                    "rarity-0001",
                    5,
                    [
                        new enchant.model.RarityParameterCountModel(
                            0,
                            1
                        ),
                        new enchant.model.RarityParameterCountModel(
                            1,
                            2
                        ),
                        new enchant.model.RarityParameterCountModel(
                            2,
                            3
                        ),
                    ],
                    [
                        new enchant.model.RarityParameterValueModel(
                            "parameter-0001",
                            "resource-0001",
                            10,
                            1,
                            {
                                metadata: "PARAMETER_0001"
                            }
                        ),
                        new enchant.model.RarityParameterValueModel(
                            "parameter-0002",
                            "resource-0002",
                            20,
                            2,
                            {
                                metadata: "PARAMETER_0002"
                            }
                        ),
                        new enchant.model.RarityParameterValueModel(
                            "parameter-0003",
                            "resource-0003",
                            30,
                            3,
                            {
                                metadata: "PARAMETER_0003"
                            }
                        ),
                    ],
                    {
                        metadata: "RARITY_0001"
                    }
                ),
                new enchant.model.RarityParameterModel(
                    "rarity-0002",
                    10,
                    [
                        new enchant.model.RarityParameterCountModel(
                            1,
                            10
                        ),
                        new enchant.model.RarityParameterCountModel(
                            2,
                            20
                        ),
                        new enchant.model.RarityParameterCountModel(
                            3,
                            30
                        ),
                    ],
                    [
                        new enchant.model.RarityParameterValueModel(
                            "parameter-1001",
                            "resource-1001",
                            100,
                            10,
                            {
                                metadata: "PARAMETER_1001"
                            }
                        ),
                        new enchant.model.RarityParameterValueModel(
                            "parameter-1002",
                            "resource-1002",
                            200,
                            20,
                            {
                                metadata: "PARAMETER_1002"
                            }
                        ),
                        new enchant.model.RarityParameterValueModel(
                            "parameter-1003",
                            "resource-1003",
                            300,
                            30,
                            {
                                metadata: "PARAMETER_1003"
                            }
                        ),
                    ],
                    {
                        metadata: "RARITY_0002"
                    }
                ),
                new enchant.model.RarityParameterModel(
                    "rarity-0003",
                    3,
                    [
                        new enchant.model.RarityParameterCountModel(
                            2,
                            5
                        ),
                        new enchant.model.RarityParameterCountModel(
                            3,
                            10
                        ),
                        new enchant.model.RarityParameterCountModel(
                            4,
                            15
                        ),
                    ],
                    [
                        new enchant.model.RarityParameterValueModel(
                            "parameter-2001",
                            "resource-2001",
                            1000,
                            2,
                            {
                                metadata: "PARAMETER_2001"
                            }
                        ),
                        new enchant.model.RarityParameterValueModel(
                            "parameter-2002",
                            "resource-2002",
                            2000,
                            4,
                            {
                                metadata: "PARAMETER_2002"
                            }
                        ),
                        new enchant.model.RarityParameterValueModel(
                            "parameter-2003",
                            "resource-2003",
                            3000,
                            6,
                            {
                                metadata: "PARAMETER_2003"
                            }
                        ),
                        new enchant.model.RarityParameterValueModel(
                            "parameter-0004",
                            "resource-2004",
                            4000,
                            8,
                            {
                                metadata: "PARAMETER_0004"
                            }
                        ),
                    ],
                    {
                        metadata: "RARITY_0003"
                    }
                )
            ]
        );
    }
}

console.log(new SampleStack().yaml());  // Generate Template
from gs2_cdk import Stack, core, enchant

class SampleStack(Stack):

    def __init__(self):
        super().__init__()
        enchant.Namespace(
            stack=self,
            name="namespace-0001",
        ).master_data(
            balance_parameter_models=[
                enchant.BalanceParameterModel(
                    name='balance-0001',
                    total_value=100,
                    initial_value_strategy=enchant.BalanceParameterModelInitialValueStrategy.AVERAGE,
                    parameters=[
                        enchant.BalanceParameterValueModel(
                            name='parameter-0001',
                            options=enchant.BalanceParameterValueModelOptions(
                                metadata='PARAMETER_0001',
                            ),
                        ),
                        enchant.BalanceParameterValueModel(
                            name='parameter-0002',
                            options=enchant.BalanceParameterValueModelOptions(
                                metadata='PARAMETER_0002',
                            ),
                        ),
                        enchant.BalanceParameterValueModel(
                            name='parameter-0003',
                            options=enchant.BalanceParameterValueModelOptions(
                                metadata='PARAMETER_0003',
                            ),
                        ),
                    ],
                    options=enchant.BalanceParameterModelOptions(
                        metadata = 'BALANCE_0001'
                    ),
                ),
                enchant.BalanceParameterModel(
                    name='balance-0002',
                    total_value=200,
                    initial_value_strategy=enchant.BalanceParameterModelInitialValueStrategy.LOTTERY,
                    parameters=[
                        enchant.BalanceParameterValueModel(
                            name='parameter-0001',
                            options=enchant.BalanceParameterValueModelOptions(
                                metadata='PARAMETER_0001',
                            ),
                        ),
                        enchant.BalanceParameterValueModel(
                            name='parameter-0002',
                            options=enchant.BalanceParameterValueModelOptions(
                                metadata='PARAMETER_0002',
                            ),
                        ),
                        enchant.BalanceParameterValueModel(
                            name='parameter-0003',
                            options=enchant.BalanceParameterValueModelOptions(
                                metadata='PARAMETER_0003',
                            ),
                        ),
                        enchant.BalanceParameterValueModel(
                            name='parameter-0004',
                            options=enchant.BalanceParameterValueModelOptions(
                                metadata='PARAMETER_0004',
                            ),
                        ),
                    ],
                    options=enchant.BalanceParameterModelOptions(
                        metadata = 'BALANCE_0002'
                    ),
                ),
                enchant.BalanceParameterModel(
                    name='balance-0003',
                    total_value=500,
                    initial_value_strategy=enchant.BalanceParameterModelInitialValueStrategy.AVERAGE,
                    parameters=[
                        enchant.BalanceParameterValueModel(
                            name='parameter-0001',
                            options=enchant.BalanceParameterValueModelOptions(
                                metadata='PARAMETER_0001',
                            ),
                        ),
                        enchant.BalanceParameterValueModel(
                            name='parameter-0002',
                            options=enchant.BalanceParameterValueModelOptions(
                                metadata='PARAMETER_0002',
                            ),
                        ),
                    ],
                    options=enchant.BalanceParameterModelOptions(
                        metadata = 'BALANCE_0003'
                    ),
                ),
            ],
            rarity_parameter_models=[
                enchant.RarityParameterModel(
                    name='rarity-0001',
                    maximum_parameter_count=5,
                    parameter_counts=[
                        enchant.RarityParameterCountModel(
                            count=0,
                            weight=1,
                        ),
                        enchant.RarityParameterCountModel(
                            count=1,
                            weight=2,
                        ),
                        enchant.RarityParameterCountModel(
                            count=2,
                            weight=3,
                        ),
                    ],
                    parameters=[
                        enchant.RarityParameterValueModel(
                            name='parameter-0001',
                            resource_name='resource-0001',
                            resource_value=10,
                            weight=1,
                            options=enchant.RarityParameterValueModelOptions(
                                metadata='PARAMETER_0001',
                            ),
                        ),
                        enchant.RarityParameterValueModel(
                            name='parameter-0002',
                            resource_name='resource-0002',
                            resource_value=20,
                            weight=2,
                            options=enchant.RarityParameterValueModelOptions(
                                metadata='PARAMETER_0002',
                            ),
                        ),
                        enchant.RarityParameterValueModel(
                            name='parameter-0003',
                            resource_name='resource-0003',
                            resource_value=30,
                            weight=3,
                            options=enchant.RarityParameterValueModelOptions(
                                metadata='PARAMETER_0003',
                            ),
                        ),
                    ],
                    options=enchant.RarityParameterModelOptions(
                        metadata = 'RARITY_0001'
                    ),
                ),
                enchant.RarityParameterModel(
                    name='rarity-0002',
                    maximum_parameter_count=10,
                    parameter_counts=[
                        enchant.RarityParameterCountModel(
                            count=1,
                            weight=10,
                        ),
                        enchant.RarityParameterCountModel(
                            count=2,
                            weight=20,
                        ),
                        enchant.RarityParameterCountModel(
                            count=3,
                            weight=30,
                        ),
                    ],
                    parameters=[
                        enchant.RarityParameterValueModel(
                            name='parameter-1001',
                            resource_name='resource-1001',
                            resource_value=100,
                            weight=10,
                            options=enchant.RarityParameterValueModelOptions(
                                metadata='PARAMETER_1001',
                            ),
                        ),
                        enchant.RarityParameterValueModel(
                            name='parameter-1002',
                            resource_name='resource-1002',
                            resource_value=200,
                            weight=20,
                            options=enchant.RarityParameterValueModelOptions(
                                metadata='PARAMETER_1002',
                            ),
                        ),
                        enchant.RarityParameterValueModel(
                            name='parameter-1003',
                            resource_name='resource-1003',
                            resource_value=300,
                            weight=30,
                            options=enchant.RarityParameterValueModelOptions(
                                metadata='PARAMETER_1003',
                            ),
                        ),
                    ],
                    options=enchant.RarityParameterModelOptions(
                        metadata = 'RARITY_0002'
                    ),
                ),
                enchant.RarityParameterModel(
                    name='rarity-0003',
                    maximum_parameter_count=3,
                    parameter_counts=[
                        enchant.RarityParameterCountModel(
                            count=2,
                            weight=5,
                        ),
                        enchant.RarityParameterCountModel(
                            count=3,
                            weight=10,
                        ),
                        enchant.RarityParameterCountModel(
                            count=4,
                            weight=15,
                        ),
                    ],
                    parameters=[
                        enchant.RarityParameterValueModel(
                            name='parameter-2001',
                            resource_name='resource-2001',
                            resource_value=1000,
                            weight=2,
                            options=enchant.RarityParameterValueModelOptions(
                                metadata='PARAMETER_2001',
                            ),
                        ),
                        enchant.RarityParameterValueModel(
                            name='parameter-2002',
                            resource_name='resource-2002',
                            resource_value=2000,
                            weight=4,
                            options=enchant.RarityParameterValueModelOptions(
                                metadata='PARAMETER_2002',
                            ),
                        ),
                        enchant.RarityParameterValueModel(
                            name='parameter-2003',
                            resource_name='resource-2003',
                            resource_value=3000,
                            weight=6,
                            options=enchant.RarityParameterValueModelOptions(
                                metadata='PARAMETER_2003',
                            ),
                        ),
                        enchant.RarityParameterValueModel(
                            name='parameter-0004',
                            resource_name='resource-2004',
                            resource_value=4000,
                            weight=8,
                            options=enchant.RarityParameterValueModelOptions(
                                metadata='PARAMETER_0004',
                            ),
                        ),
                    ],
                    options=enchant.RarityParameterModelOptions(
                        metadata = 'RARITY_0003'
                    ),
                ),
            ],
        )

print(SampleStack().yaml())  # Generate Template

BalanceParameterModel

밸런스 파라미터 모델

밸런스 파라미터의 추첨 조건을 정의합니다.
밸런스 파라미터는 고정된 합계 값을 여러 파라미터 슬롯에 분배합니다. 예를 들어 합계 파워가 100인 무기에 대해 ATK=60, DEF=30, SPD=10과 같이 배분됩니다. 초기값 설정 방침에 따라 값의 할당 방법이 결정됩니다: average는 균등하게 분배하고, lottery는 합계 값을 무작위로 배분합니다.

타입활성화 조건필수기본값값 제한설명
balanceParameterModelIdstring
~ 1024자밸런스 파라미터 모델 GRN
※ 서버가 자동으로 설정
namestring
~ 128자밸런스 파라미터 모델 이름
밸런스 파라미터 모델 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다.
metadatastring~ 2048자메타데이터
메타데이터에는 임의의 값을 설정할 수 있습니다.
이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다.
totalValuelong
0 ~ 9223372036854775805합계값
모든 파라미터 슬롯에 분배되는 고정된 합계값입니다. 파라미터가 추첨될 때, 사용되는 배분 방식과 관계없이 개별 값의 합계는 항상 이 합계값이 됩니다.
initialValueStrategy문자열 열거형
enum {
  “average”,
  “lottery”
}
“average”초기값 설정 방침
최초 할당 시 합계값을 파라미터 슬롯에 어떻게 분배할지를 결정합니다. average는 합계값을 모든 파라미터에 균등하게 분배하고, lottery는 합계값을 무작위로 분배하여 다양한 파라미터 조합을 만듭니다.
정의설명
average평균값
lottery추첨
parametersList<BalanceParameterValueModel>
1 ~ 10 items밸런스 파라미터 값 모델 목록
이 밸런스 파라미터에서 사용 가능한 파라미터 슬롯을 정의합니다. 각 엔트리는 이름이 지정된 파라미터 슬롯(예: ATK, DEF, SPD)을 선택적 메타데이터와 함께 지정합니다. 합계값은 이 슬롯들에 분배됩니다.

BalanceParameterValueModel

밸런스 파라미터 값 모델

밸런스 파라미터 내에서 사용 가능한 단일 파라미터 슬롯을 정의합니다. 각 엔트리는 추첨 처리 중 합계값의 일부를 받는 이름이 지정된 슬롯(예: ATK, DEF, SPD)을 지정합니다.

타입활성화 조건필수기본값값 제한설명
namestring
~ 64자이름
이 파라미터 슬롯의 식별자(예: ATK, DEF, SPD)입니다. 밸런스 파라미터 모델 내에서 고유해야 합니다. 추첨된 파라미터 값을 저장·취득할 때 키로 사용됩니다.
metadatastring~ 512자메타데이터
메타데이터에는 임의의 값을 설정할 수 있습니다.
이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다.

RarityParameterModel

레어리티 파라미터 모델

레어리티 파라미터의 추첨 조건을 정의합니다. 레어리티 파라미터는 가중 추첨 시스템을 사용하여 부여되는 파라미터의 수와 할당되는 구체적인 값을 모두 결정합니다. 먼저, 부여 수 모델 목록에서 가중 추첨을 통해 채울 파라미터 슬롯 수가 결정됩니다. 그런 다음, 각 슬롯의 값이 파라미터 값 모델 목록에서 가중 추첨으로 선택되어, 제어된 확률 분포에 따른 무작위 장비 속성을 제공합니다.

타입활성화 조건필수기본값값 제한설명
rarityParameterModelIdstring
~ 1024자레어리티 파라미터 모델 GRN
※ 서버가 자동으로 설정
namestring
~ 128자레어리티 파라미터 모델명
레어리티 파라미터 모델 고유의 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다.
metadatastring~ 2048자메타데이터
메타데이터에는 임의의 값을 설정할 수 있습니다.
이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다.
maximumParameterCountint
1 ~ 10부여할 파라미터의 최대 수
리소스에 부여할 수 있는 파라미터 슬롯 수의 상한입니다. 실제로 부여되는 수는 부여 수 모델 목록에서의 가중 추첨으로 결정되지만, 이 값을 초과하지 않습니다.
parameterCountsList<RarityParameterCountModel>
1 ~ 10 items레어리티 파라미터의 부여 수 모델 목록
부여되는 파라미터 슬롯 수를 결정하기 위한 가중 추첨 엔트리를 정의합니다. 각 엔트리는 부여 수와 추첨 가중치를 지정합니다. 가중치가 클수록 해당 부여 수가 선택될 확률이 높아집니다.
parametersList<RarityParameterValueModel>
1 ~ 1000 items레어리티 파라미터 값 모델 목록
추첨 가능한 파라미터 값의 풀을 정의합니다. 각 엔트리는 파라미터 이름, 리소스 상세 정보, 추첨 가중치를 지정합니다. 파라미터 슬롯을 채울 때, 이 풀에서 중복 없이 가중 추첨으로 값이 선택됩니다.

RarityParameterCountModel

레어리티 파라미터의 부여 수 모델

리소스에 부여되는 파라미터 슬롯 수를 결정하기 위한 가중 추첨의 단일 엔트리를 정의합니다. 각 엔트리는 파라미터 수와 추첨 가중치를 짝지어, 파라미터 수량의 확률 분포를 세밀하게 제어할 수 있습니다.

타입활성화 조건필수기본값값 제한설명
countint
0 ~ 10부여 수
이 엔트리가 추첨되었을 때 부여되는 파라미터 슬롯 수입니다. 예를 들어 부여 수가 3인 경우, 리소스는 값 모델 풀에서 선택된 3개의 파라미터 값을 받게 됩니다.
weightint
1 ~ 2147483646추첨 가중치
파라미터 부여 수를 결정하는 가중치 추첨에서 사용되는 상대적인 가중치입니다. 값이 클수록 이 부여 수가 선택될 확률이 높아집니다. 실제 확률은 이 가중치를 부여 수 모델 리스트 내 모든 가중치의 합으로 나눈 값입니다.

RarityParameterValueModel

레어리티 파라미터 값 모델

레어리티 파라미터 값의 가중 추첨 풀 내 단일 엔트리를 정의합니다. 각 엔트리는 파라미터 이름, 게임에서 정의한 리소스 상세 정보, 그리고 풀 내 다른 엔트리에 대한 선택 확률을 결정하는 추첨 가중치를 지정합니다.

타입활성화 조건필수기본값값 제한설명
namestring
~ 64자이름
이 추첨 엔트리의 식별자입니다. 레어리티 파라미터 모델의 값 풀 내에서 고유해야 합니다. 추첨되었을 때, 이 이름이 결과 레어리티 파라미터 값에 저장됩니다.
metadatastring~ 512자메타데이터
메타데이터에는 임의의 값을 설정할 수 있습니다.
이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다.
resourceNamestring
~ 64자게임에서 사용하는 파라미터 리소스 종류를 나타내는 이름(GS2의 동작에는 사용되지 않음)
이 파라미터 값에 연결된 게임에서 정의한 리소스 종류 이름(예: “fire_attack”, “ice_resist”)입니다. GS2는 자체 동작에 이 값을 사용하지 않으며, 추첨 결과에 그대로 전달되어 게임 로직에서 사용됩니다.
resourceValuelong
0 ~ 9223372036854775805게임에서 사용하는 파라미터 리소스 값(GS2의 동작에는 사용되지 않음)
이 파라미터의 게임에서 정의한 수치(예: 공격력+50인 경우 50)입니다. GS2는 자체 동작에 이 값을 사용하지 않으며, 추첨 결과에 그대로 전달되어 게임 로직에서 사용됩니다.
weightint
1 ~ 2147483646추첨 가중치
파라미터 값을 선택하는 가중 추첨에서 사용되는 상대적 가중치입니다. 값이 클수록 이 엔트리가 선택될 확률이 높아집니다. 실제 확률은 이 가중치를 풀 내 모든 가중치의 합으로 나눈 값이 됩니다.