はじめに
GS2-Experience は経験値と経験値に基づくランクを管理する機能を提供します。
機能追加の背景
近年、ランクに応じて放置報酬が増えるような仕様が増えています。
というのも、放置ゲームはインフレしていくのがゲーム仕様の性であるため、報酬が一定だとキャラクターを成長させる資源に魅力を感じられなくなってしまうため
ゲームの進捗にあわせて、報酬もインフレさせていく必要があるためです。
追加された機能の詳細
GS2-Experience の経験値モデルに AcquireActionRate というフィールドが追加されました。
ここではランクアップ閾値のように、各ランクごとの報酬の補正値を指定できます。
例えば、以下のような値を指定します。
ランク | 補正値 |
1 | 1.0 |
2 | 1.2 |
3 | 1.5 |
4 | 2.0 |
5 | 2.8 |
経験値モデルは複数の補正値テーブルを持つことができます。
同じランクを使って、複数パターンの補正値テーブルを使い分けできるようにするためです。
報酬に先程定義した係数を適用するためのトランザクションアクションが追加されています。
Gs2Experience:MultiplyAcquireActionsByUserId
型 | 説明 | |
namespaceName | string | ネームスペース名 |
userId | string | #{userId} と設定することでログイン中のユーザーIDに置換されます |
experienceName | string | 経験値モデルの名前 |
propertyId | string | プロパティID |
rateName | string | 報酬加算テーブル名 |
acquireActions | AcquireAction[] | 入手アクションリスト |
こちらの acquireActions に指定した報酬が experienceName で指定した経験値モデルの rateName で指定した補正値テーブルを使用して数量が補正されます。
Unity からの使用例
補正処理の実行
補正処理はトランザクションアクションを通じて実行します
補正値テーブルの取得
var domain = gs2.Experience.Namespace( namespaceName: "namespace-0001" ).ExperienceModel( experienceName: "experience-0001" ); var item = await domain.ModelAsync();