GS2-Stamina GS2-Deploy/CDK リファレンス
エンティティ
Namespace
ネームスペース
ネームスペースは一つのプロジェクトで同じサービスを異なる用途で複数利用できるようにするための仕組みです。
GS2 のサービスは基本的にネームスペースというレイヤーがあり、ネームスペースが異なれば同じサービスでもまったく別のデータ空間として取り扱われます。
そのため、各サービスの利用を開始するにあたってネームスペースを作成する必要があります。
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
name | string | ✓ | ~ 128文字 | ネームスペース名 | |
description | string | ~ 1024文字 | 説明文 | ||
overflowTriggerScript | string | ~ 1024文字 | 回復処理時にあふれたスタミナに対して処理をする GS2-Script | ||
logSetting | LogSetting | ログの出力設定 |
GetAttr
型 | 説明 | |
---|---|---|
Item | Namespace | 作成したネームスペース |
実装例
Type: GS2::Stamina::Namespace
Properties:
Name: namespace1
Description: null
OverflowTriggerScript: grn:gs2:ap-northeast-1:YourOwnerId:script:namespace1:script:script
LogSetting:
LoggingNamespaceId: grn:gs2:ap-northeast-1:YourOwnerId:log:namespace1
from gs2_cdk import Stack, core, stamina
class SampleStack(Stack):
def __init__(self):
super().__init__()
stamina.Namespace(
stack=self,
name="namespace-0001",
options=stamina.NamespaceOptions(
overflow_trigger_script='grn:gs2:ap-northeast-1:YourOwnerId:script:namespace-0001:script:script',
log_setting=core.LogSetting(
logging_namespace_id='grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001',
),
),
)
print(SampleStack().yaml()) # Generate Template
class SampleStack extends \Gs2Cdk\Core\Model\Stack
{
function __construct() {
parent::__construct();
new \Gs2Cdk\Stamina\Model\Namespace_(
stack: $this,
name: "namespace-0001",
options: new \Gs2Cdk\Stamina\Model\Options\NamespaceOptions(
overflowTriggerScript: "grn:gs2:ap-northeast-1:YourOwnerId:script:namespace-0001:script:script",
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.stamina.model.Namespace(
this,
"namespace-0001",
new io.gs2.cdk.stamina.model.options.NamespaceOptions() {
{
overflowTriggerScript = "grn:gs2:ap-northeast-1:YourOwnerId:script:namespace-0001:script:script";
logSetting = new io.gs2.cdk.core.model.LogSetting(
loggingNamespaceId = "grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"
);
}
}
);
}
}
System.out.println(new SampleStack().yaml()); // Generate Template
import core from "@/gs2cdk/core";
import stamina from "@/gs2cdk/stamina";
class SampleStack extends core.Stack
{
public constructor() {
super();
new stamina.model.Namespace(
this,
"namespace-0001",
{
overflowTriggerScript: "grn:gs2:ap-northeast-1:YourOwnerId:script:namespace-0001:script:script",
logSetting: new core.LogSetting(
"grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"
)
}
);
}
}
console.log(new SampleStack().yaml()); // Generate Template
public class SampleStack : Gs2Cdk.Core.Model.Stack
{
public SampleStack() {
new Gs2Cdk.Gs2Stamina.Model.Namespace(
this,
"namespace-0001",
new Gs2Cdk.Gs2Stamina.Model.Options.NamespaceOptions {
overflowTriggerScript = "grn:gs2:ap-northeast-1:YourOwnerId:script:namespace-0001:script:script",
logSetting = new Gs2Cdk.Core.Model.LogSetting(
LoggingNamespaceId = "grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"
)
}
);
}
}
Debug.Log(new SampleStack().Yaml()); // Generate Template
CurrentStaminaMaster
現在有効なマスターデータ
GS2ではマスターデータの管理にJSON形式のファイルを使用します。
ファイルをアップロードすることで、実際にサーバーに設定を反映することができます。
JSONファイルを作成する方法として、マネージメントコンソール上でのマスターデータエディタを提供していますが
よりゲームの運営に相応しいツールを作成し、適切なフォーマットのJSONファイルを書き出すことでもサービスを利用可能です。
Note
JSONファイルの形式については GS2-Stamina マスターデータリファレンス をご参照ください。型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
settings | string | ✓ | ~ 5242880文字 | マスターデータ |
GetAttr
型 | 説明 | |
---|---|---|
Item | CurrentStaminaMaster | 更新した現在有効なスタミナマスター |
実装例
Type: GS2::Stamina::CurrentStaminaMaster
Properties:
NamespaceName: namespace1
Settings: {
"version": "2019-02-14",
"staminaModels": [
{
"name": "quest",
"recoverIntervalMinutes": 15,
"recoverValue": 1,
"initialCapacity": 50,
"isOverflow": true,
"metadata": "QUEST",
"maxCapacity": 999,
"maxStaminaTable":
{
"name": "playerLevel",
"metadata": "PLAYER_LEVEL",
"experienceModelId": "playerLevel",
"values": [
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129
]
},
"recoverIntervalTable":
{
"name": "staminaRecoverInterval",
"metadata": "STAMINA_RECOVER_INTERVAL",
"experienceModelId": "playerLevel",
"values": [
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119
]
},
"recoverValueTable":
{
"name": "staminaRecoverValue",
"metadata": "STAMINA_RECOVER_VALUE",
"experienceModelId": "playerLevel",
"values": [
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109
]
}
},
{
"name": "raidBattle",
"recoverIntervalMinutes": 60,
"recoverValue": 1,
"initialCapacity": 10,
"metadata": "RAID_BATTLE"
},
{
"name": "special",
"recoverIntervalMinutes": 30,
"recoverValue": 3,
"initialCapacity": 100,
"isOverflow": true,
"metadata": "SPECIAL",
"maxCapacity": 999,
"maxStaminaTable":
{
"name": "special",
"metadata": "SPECIAL",
"experienceModelId": "special",
"values": [
102,
104,
106,
108,
110,
112,
114,
116,
118,
120,
122,
124,
126,
128,
130,
132,
134,
136,
138,
140,
142,
144,
146,
148,
150,
152,
154,
156,
158,
160,
162,
164,
166,
168,
170,
172,
174,
176,
178,
180,
182,
184,
186,
188,
190,
192,
194,
196,
198,
200,
202,
204,
206,
208,
210,
212,
214,
216,
218,
220,
222,
224,
226,
228,
230,
232,
234,
236,
238,
240,
242,
244,
246,
248,
250,
252,
254,
256,
258
]
}
}
]
}
from gs2_cdk import Stack, core, stamina
class SampleStack(Stack):
def __init__(self):
super().__init__()
stamina.Namespace(
stack=self,
# 省略
).master_data(
stamina_models=[
stamina.StaminaModel(
name='quest',
recover_interval_minutes=15,
recover_value=1,
initial_capacity=50,
is_overflow=True,
options=stamina.StaminaModelOptions(
metadata='QUEST',
max_capacity=999,
max_stamina_table=stamina.MaxStaminaTable(
name='playerLevel',
metadata='PLAYER_LEVEL',
experience_model_id='playerLevel',
values=[
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129
]
),
recover_interval_table=stamina.RecoverIntervalTable(
name='staminaRecoverInterval',
metadata='STAMINA_RECOVER_INTERVAL',
experience_model_id='playerLevel',
values=[
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119
]
),
recover_value_table=stamina.RecoverValueTable(
name='staminaRecoverValue',
metadata='STAMINA_RECOVER_VALUE',
experience_model_id='playerLevel',
values=[
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109
]
),
),
),
stamina.StaminaModel(
name='raidBattle',
recover_interval_minutes=60,
recover_value=1,
initial_capacity=10,
options=stamina.StaminaModelOptions(
metadata='RAID_BATTLE',
),
),
stamina.StaminaModel(
name='special',
recover_interval_minutes=30,
recover_value=3,
initial_capacity=100,
is_overflow=True,
options=stamina.StaminaModelOptions(
metadata='SPECIAL',
max_capacity=999,
max_stamina_table=stamina.MaxStaminaTable(
name='special',
metadata='SPECIAL',
experience_model_id='special',
values=[
102,
104,
106,
108,
110,
112,
114,
116,
118,
120,
122,
124,
126,
128,
130,
132,
134,
136,
138,
140,
142,
144,
146,
148,
150,
152,
154,
156,
158,
160,
162,
164,
166,
168,
170,
172,
174,
176,
178,
180,
182,
184,
186,
188,
190,
192,
194,
196,
198,
200,
202,
204,
206,
208,
210,
212,
214,
216,
218,
220,
222,
224,
226,
228,
230,
232,
234,
236,
238,
240,
242,
244,
246,
248,
250,
252,
254,
256,
258
]
),
),
),
],
)
print(SampleStack().yaml()) # Generate Template
class SampleStack extends \Gs2Cdk\Core\Model\Stack
{
function __construct() {
parent::__construct();
(new \Gs2Cdk\Stamina\Model\Namespace_(
stack: $this,
// 省略
))->masterData(
[
new \Gs2Cdk\Stamina\Model\StaminaModel(
name:"quest",
recoverIntervalMinutes:15,
recoverValue:1,
initialCapacity:50,
isOverflow:True,
options: new \Gs2Cdk\Stamina\Model\Options\StaminaModelOptions(
metadata:"QUEST",
maxCapacity:999,
maxStaminaTable:new \Gs2Cdk\Stamina\Model\MaxStaminaTable(
name: "playerLevel",
metadata: "PLAYER_LEVEL",
experienceModelId: "playerLevel",
values: [
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129
]
),
recoverIntervalTable:new \Gs2Cdk\Stamina\Model\RecoverIntervalTable(
name: "staminaRecoverInterval",
metadata: "STAMINA_RECOVER_INTERVAL",
experienceModelId: "playerLevel",
values: [
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119
]
),
recoverValueTable:new \Gs2Cdk\Stamina\Model\RecoverValueTable(
name: "staminaRecoverValue",
metadata: "STAMINA_RECOVER_VALUE",
experienceModelId: "playerLevel",
values: [
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109
]
)
)
),
new \Gs2Cdk\Stamina\Model\StaminaModel(
name:"raidBattle",
recoverIntervalMinutes:60,
recoverValue:1,
initialCapacity:10,
options: new \Gs2Cdk\Stamina\Model\Options\StaminaModelOptions(
metadata:"RAID_BATTLE"
)
),
new \Gs2Cdk\Stamina\Model\StaminaModel(
name:"special",
recoverIntervalMinutes:30,
recoverValue:3,
initialCapacity:100,
isOverflow:True,
options: new \Gs2Cdk\Stamina\Model\Options\StaminaModelOptions(
metadata:"SPECIAL",
maxCapacity:999,
maxStaminaTable:new \Gs2Cdk\Stamina\Model\MaxStaminaTable(
name: "special",
metadata: "SPECIAL",
experienceModelId: "special",
values: [
102,
104,
106,
108,
110,
112,
114,
116,
118,
120,
122,
124,
126,
128,
130,
132,
134,
136,
138,
140,
142,
144,
146,
148,
150,
152,
154,
156,
158,
160,
162,
164,
166,
168,
170,
172,
174,
176,
178,
180,
182,
184,
186,
188,
190,
192,
194,
196,
198,
200,
202,
204,
206,
208,
210,
212,
214,
216,
218,
220,
222,
224,
226,
228,
230,
232,
234,
236,
238,
240,
242,
244,
246,
248,
250,
252,
254,
256,
258
]
)
)
)
]
);
}
}
print((new SampleStack())->yaml()); // Generate Template
class SampleStack extends io.gs2.cdk.core.model.Stack
{
public SampleStack() {
super();
new io.gs2.cdk.stamina.model.Namespace(
this,
// 省略
).masterData(
Arrays.asList(
new io.gs2.cdk.stamina.model.StaminaModel(
"quest",
15,
1,
50,
true,
new io.gs2.cdk.stamina.model.options.StaminaModelOptions() {
{
metadata: "QUEST";
maxCapacity: 999;
maxStaminaTable: new io.gs2.cdk.stamina.model.MaxStaminaTable(
"playerLevel",
"PLAYER_LEVEL",
"playerLevel",
Arrays.asList(
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129
)
);
recoverIntervalTable: new io.gs2.cdk.stamina.model.RecoverIntervalTable(
"staminaRecoverInterval",
"STAMINA_RECOVER_INTERVAL",
"playerLevel",
Arrays.asList(
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119
)
);
recoverValueTable: new io.gs2.cdk.stamina.model.RecoverValueTable(
"staminaRecoverValue",
"STAMINA_RECOVER_VALUE",
"playerLevel",
Arrays.asList(
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109
)
);
}
}
),
new io.gs2.cdk.stamina.model.StaminaModel(
"raidBattle",
60,
1,
10,
new io.gs2.cdk.stamina.model.options.StaminaModelOptions() {
{
metadata: "RAID_BATTLE";
}
}
),
new io.gs2.cdk.stamina.model.StaminaModel(
"special",
30,
3,
100,
true,
new io.gs2.cdk.stamina.model.options.StaminaModelOptions() {
{
metadata: "SPECIAL";
maxCapacity: 999;
maxStaminaTable: new io.gs2.cdk.stamina.model.MaxStaminaTable(
"special",
"SPECIAL",
"special",
Arrays.asList(
102,
104,
106,
108,
110,
112,
114,
116,
118,
120,
122,
124,
126,
128,
130,
132,
134,
136,
138,
140,
142,
144,
146,
148,
150,
152,
154,
156,
158,
160,
162,
164,
166,
168,
170,
172,
174,
176,
178,
180,
182,
184,
186,
188,
190,
192,
194,
196,
198,
200,
202,
204,
206,
208,
210,
212,
214,
216,
218,
220,
222,
224,
226,
228,
230,
232,
234,
236,
238,
240,
242,
244,
246,
248,
250,
252,
254,
256,
258
)
);
}
}
)
)
);
}
}
System.out.println(new SampleStack().yaml()); // Generate Template
import core from "@/gs2cdk/core";
import stamina from "@/gs2cdk/stamina";
class SampleStack extends core.Stack
{
public constructor() {
super();
new stamina.model.Namespace(
this,
// 省略
).masterData(
[
new stamina.model.StaminaModel(
"quest",
15,
1,
50,
true,
{
metadata: "QUEST",
maxCapacity: 999,
maxStaminaTable: new stamina.model.MaxStaminaTable(
"playerLevel",
"PLAYER_LEVEL",
"playerLevel",
new number[
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129
]
),
recoverIntervalTable: new stamina.model.RecoverIntervalTable(
"staminaRecoverInterval",
"STAMINA_RECOVER_INTERVAL",
"playerLevel",
new number[
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119
]
),
recoverValueTable: new stamina.model.RecoverValueTable(
"staminaRecoverValue",
"STAMINA_RECOVER_VALUE",
"playerLevel",
new number[
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109
]
)
}
),
new stamina.model.StaminaModel(
"raidBattle",
60,
1,
10,
{
metadata: "RAID_BATTLE"
}
),
new stamina.model.StaminaModel(
"special",
30,
3,
100,
true,
{
metadata: "SPECIAL",
maxCapacity: 999,
maxStaminaTable: new stamina.model.MaxStaminaTable(
"special",
"SPECIAL",
"special",
new number[
102,
104,
106,
108,
110,
112,
114,
116,
118,
120,
122,
124,
126,
128,
130,
132,
134,
136,
138,
140,
142,
144,
146,
148,
150,
152,
154,
156,
158,
160,
162,
164,
166,
168,
170,
172,
174,
176,
178,
180,
182,
184,
186,
188,
190,
192,
194,
196,
198,
200,
202,
204,
206,
208,
210,
212,
214,
216,
218,
220,
222,
224,
226,
228,
230,
232,
234,
236,
238,
240,
242,
244,
246,
248,
250,
252,
254,
256,
258
]
)
}
)
]
);
}
}
console.log(new SampleStack().yaml()); // Generate Template
public class SampleStack : Gs2Cdk.Core.Model.Stack
{
public SampleStack() {
new Gs2Cdk.Gs2Stamina.Model.Namespace(
this,
// 省略
).MasterData(
new [] {
new Gs2Cdk.Gs2Stamina.Model.StaminaModel(
"quest",
15,
1,
50,
true,
new Gs2Cdk.Gs2Stamina.Model.Options.StaminaModelOptions {
metadata = "QUEST",
maxCapacity = 999,
maxStaminaTable = new Gs2Cdk.Gs2Stamina.Model.MaxStaminaTable(
name: "playerLevel",
metadata: "PLAYER_LEVEL",
experienceModelId: "playerLevel",
values: new int[] {
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129
}
),
recoverIntervalTable = new Gs2Cdk.Gs2Stamina.Model.RecoverIntervalTable(
name: "staminaRecoverInterval",
metadata: "STAMINA_RECOVER_INTERVAL",
experienceModelId: "playerLevel",
values: new int[] {
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119
}
),
recoverValueTable = new Gs2Cdk.Gs2Stamina.Model.RecoverValueTable(
name: "staminaRecoverValue",
metadata: "STAMINA_RECOVER_VALUE",
experienceModelId: "playerLevel",
values: new int[] {
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109
}
)
}
),
new Gs2Cdk.Gs2Stamina.Model.StaminaModel(
"raidBattle",
60,
1,
10,
new Gs2Cdk.Gs2Stamina.Model.Options.StaminaModelOptions {
metadata = "RAID_BATTLE"
}
),
new Gs2Cdk.Gs2Stamina.Model.StaminaModel(
"special",
30,
3,
100,
true,
new Gs2Cdk.Gs2Stamina.Model.Options.StaminaModelOptions {
metadata = "SPECIAL",
maxCapacity = 999,
maxStaminaTable = new Gs2Cdk.Gs2Stamina.Model.MaxStaminaTable(
name: "special",
metadata: "SPECIAL",
experienceModelId: "special",
values: new int[] {
102,
104,
106,
108,
110,
112,
114,
116,
118,
120,
122,
124,
126,
128,
130,
132,
134,
136,
138,
140,
142,
144,
146,
148,
150,
152,
154,
156,
158,
160,
162,
164,
166,
168,
170,
172,
174,
176,
178,
180,
182,
184,
186,
188,
190,
192,
194,
196,
198,
200,
202,
204,
206,
208,
210,
212,
214,
216,
218,
220,
222,
224,
226,
228,
230,
232,
234,
236,
238,
240,
242,
244,
246,
248,
250,
252,
254,
256,
258
}
)
}
)
}
);
}
}
Debug.Log(new SampleStack().Yaml()); // Generate Template
GitHubCheckoutSetting
GitHubからマスターデータをチェックアウトする設定
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
apiKeyId | string | ✓ | ~ 1024文字 | GitHub のAPIキーGRN | |
repositoryName | string | ✓ | ~ 1024文字 | リポジトリ名 | |
sourcePath | string | ✓ | ~ 1024文字 | ソースコードのファイルパス | |
referenceType | enum { “commit_hash”, “branch”, “tag” } | ✓ | ~ 128文字 | コードの取得元 | |
commitHash | string | {referenceType} == “commit_hash” | ~ 1024文字 | コミットハッシュ | |
branchName | string | {referenceType} == “branch” | ~ 1024文字 | ブランチ名 | |
tagName | string | {referenceType} == “tag” | ~ 1024文字 | タグ名 |
referenceType に指定する列挙型の定義
定義 | 説明 |
---|---|
commit_hash | コミットハッシュ |
branch | ブランチ |
tag | タグ |
LogSetting
ログの書き出し設定
ログデータの書き出し設定を管理します。この型は、ログデータを書き出すために使用されるログ名前空間の識別子(Namespace ID)を保持します。
ログ名前空間IDは、ログデータを集約し、保存する対象の GS2-Log の名前空間を指定します。
この設定を通じて、この名前空間以下のAPIリクエスト・レスポンスログデータが対象の GS2-Log へ出力されるようになります。
GS2-Log にはリアルタイムでログが提供され、システムの監視や分析、デバッグなどに利用できます。
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
loggingNamespaceId | string | ✓ | ~ 1024文字 | ネームスペースGRN |
ScriptSetting
スクリプト設定
GS2 ではマイクロサービスのイベントに関連づけて、カスタムスクリプトを実行することができます。
このモデルは、スクリプトの実行をトリガーするための設定を保持します。
スクリプトの実行方式は大きく2種類あり、それは「同期実行」と「非同期実行」です。
同期実行は、スクリプトの実行が完了するまで処理がブロックされます。
かわりに、スクリプトの実行結果を使ってAPIの実行を止めたり、APIの結果を改ざんすることができます。
一方、非同期実行は、スクリプトの実行が完了するまで処理がブロックされません。
かわりに、スクリプトの実行結果を使ってAPIの実行を止めたり、APIの結果を改ざんすることはできません。
しかし、非同期実行は、スクリプトの実行が完了するまで処理がブロックされないため、APIの応答に影響を与えないため、原則非同期実行を使用することをおすすめします。
非同期実行には実行方式が2種類あり、GS2-Script と Amazon EventBridge があります。
Amazon EventBridge を使用することで、Lua 以外の言語で処理を記述することができます。
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
triggerScriptId | string | ~ 1024文字 | スクリプトGRN | ||
doneTriggerTargetType | enum { “none”, “gs2_script”, “aws” } | ✓ | “none” | ~ 128文字 | 完了通知の通知先 |
doneTriggerScriptId | string | {doneTriggerTargetType} == “gs2_script” | ~ 1024文字 | スクリプトGRN | |
doneTriggerQueueNamespaceId | string | {doneTriggerTargetType} == “gs2_script” | ~ 1024文字 | ネームスペースGRN |
doneTriggerTargetType に指定する列挙型の定義
定義 | 説明 |
---|---|
none | なし |
gs2_script | GS2-Script |
aws | Amazon EventBridge |