GS2-Enchant Deploy/CDK リファレンス
エンティティ
Deploy処理で操作の対象となるリソース
Namespace
ネームスペース
ネームスペースは、一つのプロジェクト内で同じサービスを異なる用途で複数利用するためのエンティティです。
GS2 の各サービスはネームスペース単位で管理されます。ネームスペースが異なれば、同じサービスでも完全に独立したデータ空間として扱われます。
そのため、各サービスの利用を開始するにあたってネームスペースを作成する必要があります。
Request
リソースの生成・更新リクエスト
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| name | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| description | string | ~ 1024文字 | 説明文 | |||
| transactionSetting | TransactionSetting | ✓ | トランザクション設定 エンチャントパラメータ操作時のトランザクションの処理方法を制御する設定です。 | |||
| logSetting | LogSetting | ログの出力設定 エンチャント操作のログデータを GS2-Log に出力するための設定です。GS2-Log のネームスペースを指定することで、バランスパラメータおよびレアリティパラメータ操作の API リクエスト・レスポンスログを収集できます。 |
GetAttr
!GetAttrタグで取得可能なリソースの生成結果
| 型 | 説明 | |
|---|---|---|
| Item | Namespace | 作成したネームスペース |
実装例
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-0001import (
"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 Templateclass 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 Templateclass 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 Templatepublic 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 Templateimport 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 Templatefrom 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 TemplateTransactionSetting
トランザクション設定
トランザクション設定は、トランザクションの実行方法・整合性・非同期処理・競合回避の仕組みを制御する設定です。
自動実行(AutoRun)、アトミック実行(AtomicCommit)、GS2-Distributor を利用した非同期実行、スクリプト結果の一括適用、GS2-JobQueue による入手アクションの非同期化などを組み合わせ、ゲームロジックに応じた堅牢なトランザクション管理を可能にします。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| enableAutoRun | bool | false | 発行したトランザクションをサーバーサイドで自動的に実行するか | |||
| enableAtomicCommit | bool | {enableAutoRun} == true | false | トランザクションの実行をアトミックにコミットするか ※ enableAutoRun が true であれば 有効 | ||
| transactionUseDistributor | bool | {enableAtomicCommit} == true | false | トランザクションを非同期処理で実行する ※ enableAtomicCommit が true であれば 有効 | ||
| commitScriptResultInUseDistributor | bool | {transactionUseDistributor} == true | false | スクリプトの結果コミット処理を非同期処理で実行するか ※ transactionUseDistributor が true であれば 有効 | ||
| acquireActionUseJobQueue | bool | {enableAtomicCommit} == true | false | 入手アクションを実行する際に GS2-JobQueue を使用するか ※ enableAtomicCommit が true であれば 有効 | ||
| distributorNamespaceId | string | “grn:gs2:{region}:{ownerId}:distributor:default” | ~ 1024文字 | トランザクションの実行に使用する GS2-Distributor ネームスペース GRN | ||
| queueNamespaceId | string | “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 ではリアルタイムでログが提供され、システムの監視や分析、デバッグなどに利用できます。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| loggingNamespaceId | string | ✓ | ~ 1024文字 | ログを出力する GS2-Log のネームスペース
GRN 「grn:gs2:」ではじまる GRN 形式のIDで指定する必要があります。 |
CurrentParameterMaster
現在アクティブなパラメータモデルのマスターデータ
現在ネームスペース内で有効な、パラメータモデルの定義を記述したマスターデータです。
GS2ではマスターデータの管理にJSON形式のファイルを使用します。
ファイルをアップロードすることで、実際にサーバーに設定を反映することができます。
JSONファイルを作成する方法として、マネージメントコンソール内にマスターデータエディタを提供しています。
また、よりゲームの運営に相応しいツールを作成し、適切なフォーマットのJSONファイルを書き出すことでもサービスを利用可能です。
Note
JSONファイルの形式については GS2-Enchant マスターデータリファレンス をご参照ください。Request
リソースの生成・更新リクエスト
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||||||||
| mode | 文字列列挙型 enum { “direct”, “preUpload” } | “direct” | 更新モード
| |||||||||
| settings | string | {mode} == “direct” | ✓※ | ~ 5242880文字 | マスターデータ ※ mode が “direct” であれば必須 | |||||||
| uploadToken | string | {mode} == “preUpload” | ✓※ | ~ 1024文字 | 事前アップロードで取得したトークン アップロードしたマスターデータを適用するために使用されます。 ※ mode が “preUpload” であれば必須 |
GetAttr
!GetAttrタグで取得可能なリソースの生成結果
| 型 | 説明 | |
|---|---|---|
| Item | CurrentParameterMaster | 更新された現在アクティブなパラメータモデルのマスターデータ |
実装例
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: nullimport (
"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 Templateclass 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 Templateclass 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 Templatepublic 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 Templateimport 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 Templatefrom 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 TemplateBalanceParameterModel
バランスパラメータモデル
バランスパラメータの抽選条件を定義します。
バランスパラメータは固定の合計値を複数のパラメータスロットに分配します。例えば、合計パワーが100の武器に対して ATK=60、DEF=30、SPD=10 のように配分されます。初期値の設定方針により値の割り当て方法が決まります:average は均等に分配し、lottery は合計値をランダムに配分します。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| balanceParameterModelId | string | ※ | ~ 1024文字 | バランスパラメータモデル
GRN ※ サーバーが自動で設定 | ||||||||
| name | string | ✓ | ~ 128文字 | バランスパラメータモデル名 バランスパラメータモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||||||||
| metadata | string | ~ 2048文字 | メタデータ メタデータには任意の値を設定できます。 これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 | |||||||||
| totalValue | long | ✓ | 0 ~ 9223372036854775805 | 合計値 すべてのパラメータスロットに分配される固定の合計値です。パラメータが抽選される際、使用される配分方針に関わらず、個々の値の合計は常にこの合計値になります。 | ||||||||
| initialValueStrategy | 文字列列挙型 enum { “average”, “lottery” } | “average” | 初期値の設定方針 初回割り当て時に合計値をパラメータスロットにどのように分配するかを決定します。 average は合計値をすべてのパラメータに均等に分配し、lottery は合計値をランダムに分配してバラエティに富んだパラメータの組み合わせを作成します。
| |||||||||
| parameters | List<BalanceParameterValueModel> | ✓ | 1 ~ 10 items | バランスパラメータ値モデルのリスト このバランスパラメータで利用可能なパラメータスロットを定義します。各エントリは名前付きパラメータスロット(例: ATK、DEF、SPD)をオプションのメタデータとともに指定します。合計値はこれらのスロットに分配されます。 |
BalanceParameterValueModel
バランスパラメータ値モデル
バランスパラメータ内で利用可能な単一のパラメータスロットを定義します。各エントリは、抽選処理中に合計値の一部を受け取る名前付きスロット(例: ATK、DEF、SPD)を指定します。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| name | string | ✓ | ~ 64文字 | 名前 このパラメータスロットの識別子(例: ATK、DEF、SPD)です。バランスパラメータモデル内で一意である必要があります。抽選されたパラメータ値の保存・取得時にキーとして使用されます。 | ||
| metadata | string | ~ 512文字 | メタデータ メタデータには任意の値を設定できます。 これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 |
RarityParameterModel
レアリティパラメータモデル
レアリティパラメータの抽選条件を定義します。レアリティパラメータは重み付き抽選システムを使用して、付与されるパラメータの数と割り当てられる具体的な値の両方を決定します。まず、付与数モデルのリストから重み付き抽選により埋めるパラメータスロット数が決定されます。次に、各スロットの値がパラメータ値モデルのリストから重み付き抽選で選択され、制御された確率分布によるランダムな装備属性を提供します。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| rarityParameterModelId | string | ※ | ~ 1024文字 | レアリティパラメータモデル
GRN ※ サーバーが自動で設定 | ||
| name | string | ✓ | ~ 128文字 | レアリティパラメータモデル名 レアリティパラメータモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| metadata | string | ~ 2048文字 | メタデータ メタデータには任意の値を設定できます。 これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 | |||
| maximumParameterCount | int | ✓ | 1 ~ 10 | 付与するパラメータの最大数 リソースに付与できるパラメータスロット数の上限です。実際に付与される数は付与数モデルのリストからの重み付き抽選で決定されますが、この値を超えることはありません。 | ||
| parameterCounts | List<RarityParameterCountModel> | ✓ | 1 ~ 10 items | レアリティパラメータの付与数モデルのリスト 付与されるパラメータスロット数を決定するための重み付き抽選エントリを定義します。各エントリは付与数と排出重みを指定します。重みが大きいほど、その付与数が選択される確率が高くなります。 | ||
| parameters | List<RarityParameterValueModel> | ✓ | 1 ~ 1000 items | レアリティパラメータ値モデルのリスト 抽選可能なパラメータ値のプールを定義します。各エントリはパラメータ名、リソース詳細、排出重みを指定します。パラメータスロットを埋める際、このプールから重複なしの重み付き抽選で値が選択されます。 |
RarityParameterCountModel
レアリティパラメータの付与数モデル
リソースに付与されるパラメータスロット数を決定するための重み付き抽選の単一エントリを定義します。各エントリはパラメータ数と排出重みをペアにし、パラメータ数量の確率分布を細かく制御できます。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| count | int | ✓ | 0 ~ 10 | 付与数 このエントリが抽選された際に付与するパラメータスロット数です。例えば、付与数が 3 の場合、リソースは値モデルプールから選択された 3 つのパラメータ値を受け取ります。 | ||
| weight | int | ✓ | 1 ~ 2147483646 | 排出重み パラメータ付与数を決定する重み付き抽選で使用される相対的な重みです。値が大きいほど、この付与数が選択される確率が高くなります。実際の確率は、この重みを付与数モデルリスト内のすべての重みの合計で割った値になります。 |
RarityParameterValueModel
レアリティパラメータ値モデル
レアリティパラメータ値の重み付き抽選プール内の単一エントリを定義します。各エントリはパラメータ名、ゲーム定義のリソース詳細、およびプール内の他のエントリに対する選択確率を決定する排出重みを指定します。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| name | string | ✓ | ~ 64文字 | 名前 この抽選エントリの識別子です。レアリティパラメータモデルの値プール内で一意である必要があります。抽選された際、この名前が結果のレアリティパラメータ値に保存されます。 | ||
| metadata | string | ~ 512文字 | メタデータ メタデータには任意の値を設定できます。 これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 | |||
| resourceName | string | ✓ | ~ 64文字 | ゲーム内で使用するパラメータリソースの種類を表す名前(GS2の動作のためには使用しません) このパラメータ値に関連付けられたゲーム定義のリソース種別名(例: “fire_attack”、“ice_resist”)です。GS2 はこの値を自身の動作には使用せず、抽選結果にそのまま渡されゲームロジックで使用されます。 | ||
| resourceValue | long | ✓ | 0 ~ 9223372036854775805 | ゲーム内で使用するパラメータリソースの値(GS2の動作のためには使用しません) このパラメータのゲーム定義の数値(例: 攻撃力+50 の場合は 50)です。GS2 はこの値を自身の動作には使用せず、抽選結果にそのまま渡されゲームロジックで使用されます。 | ||
| weight | int | ✓ | 1 ~ 2147483646 | 排出重み パラメータ値を選択する重み付き抽選で使用される相対的な重みです。値が大きいほど、このエントリが選択される確率が高くなります。実際の確率は、この重みをプール内のすべての重みの合計で割った値になります。 |