みなさん、こんにちは。GS2の丹羽です。
今日は GS2-ConsumableItem についてお知らせします。
マスターデータ管理がJSONに対応
GS2-ConsumableItem はリリースから1年以上が経過しており、
最近では基本的な設計として利用しているJSONによるマスターデータ管理に対応していませんでした。
本日 GS2-ConsumableItem はJSONによるマスターデータ管理に対応し、
開発環境と製品環境でマスターデータをやりとりする手間が少なくなりました。
現在 GS2-ConsumableItem を利用されている皆様のデータは自動的にJSON形式でのマスターデータ管理にマイグレーションされています。
有効期限付の消費型アイテムに対応
これまで GS2-ConsumableItem の消費型アイテムは有効期限を設定出来ませんでした。
今回のアップデートで消費型アイテムに有効期限が設定出来るようになり、今日限定スタミナ回復アイテム や 今月限定ガチャチケット のようなアイテムを用意出来るようになりました。
ご利用中の消費型アイテムに関しては、有効期限無しの状態で設定し反映しています。
また、この変更に伴っていくつかクォーターの消費量に関して注意事項があります。
DescribeInventory で取得する際に同一アイテムが複数返る可能性があるように
1つのアイテムでも有効期限が異なるアイテムを持てるようになります。
その結果、DescribeInventory で取得する際に同一アイテムが複数返ることがあり得るようになります。
GetInventory でインベントリを取得する際に expireAtの指定が必要に
クォーターの消費量がわかりにくくなるため、おすすめはしませんが expireAt 自体は必須ではありません。
指定しない場合全ての有効期限のアイテムがマージされた数量が応答されるようになります。なお、その際マージ前のインベントリの数分クォーターを消費します。
ConsumeItem で消費するアイテムの種類だけでなく、どの expireAt のインベントリから消費するかを指定できるように
こちらも指定は必須ではありませんが、指定することで特定の有効期限のアイテムを消費出来ます。
ユーザに明示的に有効期限が異なる同一アイテムを並べて、ユーザの意思で消費するアイテムを選択して貰うUIを提供する場合は指定して使うことになります。
逆に、指定しない場合はどうなるか。というと、有効期限に近いアイテムから消費数量を満たせるだけ複数のインベントリからアイテムを消費します。
その際消費したインベントリの数分クォーターを消費します。
所持数量の上限は有効期限毎に効果を発揮する
わかりにくくて申し訳ありませんが、スケーラビリティ確保のために仕方が無かったとご理解いただきたいのですが
GS2-ConsumableItem はアイテム毎に所持数量の上限を設定出来ます。
しかし、有効期限毎にアイテムを別に管理する仕組みにした関係で、このアイテムの所持数量制限は有効期限が異なれば別の所持数量としてカウントされます。
今後もGS2は既存サービスも含めて機能拡張を続けて参ります。
それでは、また。