はじめに
GS2 はさまざまなマスターデータやユーザーデータを取り扱います。
イベントやサブスクリプションの特典として、各種パラメーターに補正値を適用したいことがあります。
例えば、イベント期間中は「スタミナ消費量半減」「クエスト報酬2倍」「スタミナ最大値2倍」というようなことです。
新サービス追加の背景
これまではこのような補正値を適用する手段がなく、マスターデータをイベント期間のみ差し替えるような対応が必要でした。
しかし、マスターデータの更新は予約することができないため、メンテナンス期間をとってメンテナンスとしてマスターデータの更新作業を行うようなオペレーションが必要でした。
新サービスの詳細
GS2のさまざまなパラメーターに対して補正値を適用できるようになり、なおかつ補正値は GS2-Schedule が管理するイベントの期間と連動させることができます。
これにより、メンテナンス期間をとったりマスターデータを更新するオペレーションをすることなく、値の補正を行えるようになりました。
バフエンティティ
各マイクロサービスに加える補正の単位です。 基礎値を 1.0 として、各パラメータに対してどの程度増減させるかを定義します。 補正値の定義方法は「Add」と「Mul」が用意されており、Add 1.5 とすると補正値は2.5倍に、Mul 1.5 とすると補正値は1.5倍になります。
適用優先度
補正値には適用優先度を設定できます。優先度に設定された値が小さい補正値から順番に補正値の計算が行われます。 たとえば、以下の補正値が定義されていたとします。
補正値の種類 | 補正値 | 適用優先度 |
---|---|---|
Add | 0.2 | 1 |
Mul | 1.5 | 2 |
Add | 0.2 | 3 |
この場合、以下の順番で補正値の計算が実行されます。
1.0 + 0.2 = 1.2
1.2 * 1.5 = 1.8
1.8 + 0.2 = 2.0
そして、最終的な補正値は 2.0倍 となります。
補正の適用範囲
バフの適用範囲は広範囲で、マスターデータの取得APIでもバフが適用されます。
バフの適用方法
gs2 = await gs2.Buff.Namespace( "buff" ).Me( GameSession ).Buff().ApplyBuffAsync(); // 新しい gs2 オブジェクトを通してアクセスするとバフがかかった値で処理される
詳細は以下のドキュメントを参考にしてください