Master Data Reference of GS2-Exchange

Reference of the format of master data and various models to be imported

Master Data Format

{
  "version": "2019-08-19",
  "rateModels": [
    {
      "name": "[string]Exchange Rate Model name",
      "metadata": "[string?]Metadata",
      "verifyActions": [
        {
          "action": "[string]Types of actions to be performed in the verify task",
          "request": "[string]JSON string of the request used when executing the action"
        }
      ],
      "consumeActions": [
        {
          "action": "[string]Types of actions to be performed in the consume action",
          "request": "[string]JSON string of the request used when executing the action"
        }
      ],
      "timingType": "[string enum]Type of exchange",
      "lockTime": "[int]Waiting time (minutes) from the execution of the exchange until the reward is actually received",
      "acquireActions": [
        {
          "action": "[string]Types of actions to be performed in the acquire action",
          "request": "[string]JSON string of the request used when executing the action"
        }
      ]
    }
  ],
  "incrementalRateModels": [
    {
      "name": "[string]Cost Increase Exchange Rate Model name",
      "metadata": "[string?]Metadata",
      "consumeAction": {
        "action": "[string]Types of actions to be performed in the consume action",
        "request": "[string]JSON string of the request used when executing the action"
      },
      "calculateType": "[string enum]Calculation method for cost increase amount",
      "baseValue": "[long]Base Value",
      "coefficientValue": "[long]Coefficient Value",
      "calculateScriptId": "[string]GRN of cost calculation script",
      "exchangeCountId": "[string]GRN of GS2-Limit model that manages the number of exchanges",
      "maximumExchangeCount": "[int]Maximum number of exchanges",
      "acquireActions": [
        {
          "action": "[string]Types of actions to be performed in the acquire action",
          "request": "[string]JSON string of the request used when executing the action"
        }
      ]
    }
  ]
}
TypeConditionRequiredDefaultValue LimitsDescription
versionstring
2019-08-19Format version of master data
rateModelsList<RateModel>~ 10000 itemsExchange Rate Model
The exchange rate is an entity that defines the rate used to exchange resources for resources.

In addition to the rate at which a resource can be exchanged immediately, a rate can also be set at which a resource can be exchanged after a certain amount of time in real time has elapsed.
Exchange rates that require an elapse of time in real time can further define the resources required to perform an immediate exchange.
incrementalRateModelsList<IncrementalRateModel>~ 10000 itemsCost Increase Exchange Rate Model
Normal exchange rates always provide exchanges at a constant rate.
With incremental exchange rates, you can define a rate that increases in cost as the number of exchanges increases.
For example, the first exchange can be exchanged at a rate of 1:1, but the second exchange can be exchanged at a rate of 2:1.
By defining such a rate, you can increase the value of the resources obtained by the player as the game progresses.

The number of exchanges can be reset by the passage of real time.
This is useful for resetting the number of exchanges on a daily or weekly basis.

Model

RateModel

Exchange Rate Model

The exchange rate is an entity that defines the rate used to exchange resources for resources.

In addition to the rate at which a resource can be exchanged immediately, a rate can also be set at which a resource can be exchanged after a certain amount of time in real time has elapsed. Exchange rates that require an elapse of time in real time can further define the resources required to perform an immediate exchange.

TypeConditionRequiredDefaultValue LimitsDescription
rateModelIdstring
✓*
~ 1024 charsExchange rate model GRN
* Automatically configured on the server
namestring
~ 128 charsExchange Rate Model name
Exchange rate model-specific name. Specified using alphanumeric characters, hyphens (-), underscores (_), and periods (.).
metadatastring~ 2048 charsMetadata
Arbitrary values can be set in the metadata.
Since they do not affect GS2’s behavior, they can be used to store information used in the game.
verifyActionsList<VerifyAction>[]0 ~ 10 itemsList of Verify Action
consumeActionsList<ConsumeAction>[]0 ~ 10 itemsList of Consume Action
timingTypeString Enum
enum {
  “immediate”,
  “await”
}
“immediate”Type of exchange
Enumerator String DefinitionDescription
“immediate”Immediate
“await”Waiting for real time to pass
lockTimeint{timingType} == “await”
✓*
0 ~ 538214400Waiting time (minutes) from the execution of the exchange until the reward is actually received
* Required if timingType is “await”
acquireActionsList<AcquireAction>[]0 ~ 100 itemsList of Acquire Action

AcquireAction

Acquire Action

TypeConditionRequiredDefaultValue LimitsDescription
actionString Enum
enum {
"Gs2AdReward:AcquirePointByUserId",
"Gs2Dictionary:AddEntriesByUserId",
"Gs2Enchant:ReDrawBalanceParameterStatusByUserId",
"Gs2Enchant:SetBalanceParameterStatusByUserId",
"Gs2Enchant:ReDrawRarityParameterStatusByUserId",
"Gs2Enchant:AddRarityParameterStatusByUserId",
"Gs2Enchant:SetRarityParameterStatusByUserId",
"Gs2Enhance:DirectEnhanceByUserId",
"Gs2Enhance:UnleashByUserId",
"Gs2Enhance:CreateProgressByUserId",
"Gs2Exchange:ExchangeByUserId",
"Gs2Exchange:IncrementalExchangeByUserId",
"Gs2Exchange:CreateAwaitByUserId",
"Gs2Exchange:AcquireForceByUserId",
"Gs2Exchange:SkipByUserId",
"Gs2Experience:AddExperienceByUserId",
"Gs2Experience:SetExperienceByUserId",
"Gs2Experience:AddRankCapByUserId",
"Gs2Experience:SetRankCapByUserId",
"Gs2Experience:MultiplyAcquireActionsByUserId",
"Gs2Formation:AddMoldCapacityByUserId",
"Gs2Formation:SetMoldCapacityByUserId",
"Gs2Formation:AcquireActionsToFormProperties",
"Gs2Formation:SetFormByUserId",
"Gs2Formation:AcquireActionsToPropertyFormProperties",
"Gs2Friend:UpdateProfileByUserId",
"Gs2Grade:AddGradeByUserId",
"Gs2Grade:ApplyRankCapByUserId",
"Gs2Grade:MultiplyAcquireActionsByUserId",
"Gs2Guild:IncreaseMaximumCurrentMaximumMemberCountByGuildName",
"Gs2Guild:SetMaximumCurrentMaximumMemberCountByGuildName",
"Gs2Idle:IncreaseMaximumIdleMinutesByUserId",
"Gs2Idle:SetMaximumIdleMinutesByUserId",
"Gs2Idle:ReceiveByUserId",
"Gs2Inbox:SendMessageByUserId",
"Gs2Inventory:AddCapacityByUserId",
"Gs2Inventory:SetCapacityByUserId",
"Gs2Inventory:AcquireItemSetByUserId",
"Gs2Inventory:AcquireItemSetWithGradeByUserId",
"Gs2Inventory:AddReferenceOfByUserId",
"Gs2Inventory:DeleteReferenceOfByUserId",
"Gs2Inventory:AcquireSimpleItemsByUserId",
"Gs2Inventory:SetSimpleItemsByUserId",
"Gs2Inventory:AcquireBigItemByUserId",
"Gs2Inventory:SetBigItemByUserId",
"Gs2JobQueue:PushByUserId",
"Gs2Limit:CountDownByUserId",
"Gs2Limit:DeleteCounterByUserId",
"Gs2LoginReward:DeleteReceiveStatusByUserId",
"Gs2LoginReward:UnmarkReceivedByUserId",
"Gs2Lottery:DrawByUserId",
"Gs2Lottery:ResetBoxByUserId",
"Gs2Mission:RevertReceiveByUserId",
"Gs2Mission:IncreaseCounterByUserId",
"Gs2Mission:SetCounterByUserId",
"Gs2Money:DepositByUserId",
"Gs2Money:RevertRecordReceipt",
"Gs2Money2:DepositByUserId",
"Gs2Quest:CreateProgressByUserId",
"Gs2Schedule:TriggerByUserId",
"Gs2Schedule:ExtendTriggerByUserId",
"Gs2Script:InvokeScript",
"Gs2SerialKey:RevertUseByUserId",
"Gs2SerialKey:IssueOnce",
"Gs2Showcase:DecrementPurchaseCountByUserId",
"Gs2Showcase:ForceReDrawByUserId",
"Gs2SkillTree:MarkReleaseByUserId",
"Gs2Stamina:RecoverStaminaByUserId",
"Gs2Stamina:RaiseMaxValueByUserId",
"Gs2Stamina:SetMaxValueByUserId",
"Gs2Stamina:SetRecoverIntervalByUserId",
"Gs2Stamina:SetRecoverValueByUserId",
"Gs2StateMachine:StartStateMachineByUserId",
}
Types of actions to be performed in the acquire action
requeststring
~ 524288 charsJSON string of the request used when executing the action

ConsumeAction

Consume Action

TypeConditionRequiredDefaultValue LimitsDescription
actionString Enum
enum {
"Gs2AdReward:ConsumePointByUserId",
"Gs2Dictionary:DeleteEntriesByUserId",
"Gs2Enhance:DeleteProgressByUserId",
"Gs2Exchange:DeleteAwaitByUserId",
"Gs2Experience:SubExperienceByUserId",
"Gs2Experience:SubRankCapByUserId",
"Gs2Formation:SubMoldCapacityByUserId",
"Gs2Grade:SubGradeByUserId",
"Gs2Guild:DecreaseMaximumCurrentMaximumMemberCountByGuildName",
"Gs2Idle:DecreaseMaximumIdleMinutesByUserId",
"Gs2Inbox:OpenMessageByUserId",
"Gs2Inbox:DeleteMessageByUserId",
"Gs2Inventory:ConsumeItemSetByUserId",
"Gs2Inventory:ConsumeSimpleItemsByUserId",
"Gs2Inventory:ConsumeBigItemByUserId",
"Gs2JobQueue:DeleteJobByUserId",
"Gs2Limit:CountUpByUserId",
"Gs2LoginReward:MarkReceivedByUserId",
"Gs2Mission:ReceiveByUserId",
"Gs2Mission:BatchReceiveByUserId",
"Gs2Mission:DecreaseCounterByUserId",
"Gs2Mission:ResetCounterByUserId",
"Gs2Money:WithdrawByUserId",
"Gs2Money:RecordReceipt",
"Gs2Money2:WithdrawByUserId",
"Gs2Money2:VerifyReceiptByUserId",
"Gs2Quest:DeleteProgressByUserId",
"Gs2Ranking2:CreateGlobalRankingReceivedRewardByUserId",
"Gs2Ranking2:CreateClusterRankingReceivedRewardByUserId",
"Gs2Schedule:DeleteTriggerByUserId",
"Gs2SerialKey:UseByUserId",
"Gs2Showcase:IncrementPurchaseCountByUserId",
"Gs2SkillTree:MarkRestrainByUserId",
"Gs2Stamina:DecreaseMaxValueByUserId",
"Gs2Stamina:ConsumeStaminaByUserId",
}
Types of actions to be performed in the consume action
requeststring
~ 524288 charsJSON string of the request used when executing the action

VerifyAction

Verify Action

TypeConditionRequiredDefaultValue LimitsDescription
actionString Enum
enum {
"Gs2Dictionary:VerifyEntryByUserId",
"Gs2Distributor:IfExpressionByUserId",
"Gs2Distributor:AndExpressionByUserId",
"Gs2Distributor:OrExpressionByUserId",
"Gs2Enchant:VerifyRarityParameterStatusByUserId",
"Gs2Experience:VerifyRankByUserId",
"Gs2Experience:VerifyRankCapByUserId",
"Gs2Grade:VerifyGradeByUserId",
"Gs2Grade:VerifyGradeUpMaterialByUserId",
"Gs2Guild:VerifyCurrentMaximumMemberCountByGuildName",
"Gs2Guild:VerifyIncludeMemberByUserId",
"Gs2Inventory:VerifyInventoryCurrentMaxCapacityByUserId",
"Gs2Inventory:VerifyItemSetByUserId",
"Gs2Inventory:VerifyReferenceOfByUserId",
"Gs2Inventory:VerifySimpleItemByUserId",
"Gs2Inventory:VerifyBigItemByUserId",
"Gs2Limit:VerifyCounterByUserId",
"Gs2Matchmaking:VerifyIncludeParticipantByUserId",
"Gs2Mission:VerifyCompleteByUserId",
"Gs2Mission:VerifyCounterValueByUserId",
"Gs2Ranking2:VerifyGlobalRankingScoreByUserId",
"Gs2Ranking2:VerifyClusterRankingScoreByUserId",
"Gs2Ranking2:VerifySubscribeRankingScoreByUserId",
"Gs2Schedule:VerifyTriggerByUserId",
"Gs2Schedule:VerifyEventByUserId",
"Gs2SerialKey:VerifyCodeByUserId",
"Gs2Stamina:VerifyStaminaValueByUserId",
"Gs2Stamina:VerifyStaminaMaxValueByUserId",
"Gs2Stamina:VerifyStaminaRecoverIntervalMinutesByUserId",
"Gs2Stamina:VerifyStaminaRecoverValueByUserId",
"Gs2Stamina:VerifyStaminaOverflowValueByUserId",
}
Types of actions to be performed in the verify task
requeststring
~ 524288 charsJSON string of the request used when executing the action

IncrementalRateModel

Cost Increase Exchange Rate Model

Normal exchange rates always provide exchanges at a constant rate. With incremental exchange rates, you can define a rate that increases in cost as the number of exchanges increases. For example, the first exchange can be exchanged at a rate of 1:1, but the second exchange can be exchanged at a rate of 2:1. By defining such a rate, you can increase the value of the resources obtained by the player as the game progresses.

The number of exchanges can be reset by the passage of real time. This is useful for resetting the number of exchanges on a daily or weekly basis.

TypeConditionRequiredDefaultValue LimitsDescription
incrementalRateModelIdstring
✓*
~ 1024 charsCost increase exchange rate model GRN
* Automatically configured on the server
namestring
~ 128 charsCost Increase Exchange Rate Model name
Cost Increase Exchange Rate Model-specific names. Specified using alphanumeric characters, hyphen (-), underscore (_), and period (.).
metadatastring~ 2048 charsMetadata
Arbitrary values can be set in the metadata.
Since they do not affect GS2’s behavior, they can be used to store information used in the game.
consumeActionConsumeAction
Consumption Action (Quantity/Value is overwritten so no setting is required)
calculateTypeString Enum
enum {
  “linear”,
  “power”,
  “gs2_script”
}
Calculation method for cost increase amount
Enumerator String DefinitionDescription
“linear”Base Value + (Coefficient * Number of Exchanges)
“power”Coefficient * (Number of Exchanges + 1) ^ 2
“gs2_script”Any logic with GS2-Script
baseValuelong{calculateType} == “linear”
✓*
0 ~ 9223372036854775805Base Value
* Required if calculateType is “linear”
coefficientValuelong{calculateType} in [“linear”, “power”]
✓*
0 ~ 9223372036854775805Coefficient Value
* Required if calculateType is “linear”,“power”
calculateScriptIdstring{calculateType} == “gs2_script”
✓*
~ 1024 charsGRN of cost calculation script
Script Trigger Reference - calculateCost
* Required if calculateType is “gs2_script”
exchangeCountIdstring
~ 1024 charsGRN of GS2-Limit model that manages the number of exchanges
maximumExchangeCountint
21474836460 ~ 2147483646Maximum number of exchanges
acquireActionsList<AcquireAction>[]0 ~ 100 itemsList of Acquire Action