GS2 Blog

Game Server Services(https://gs2.io/) の最新情報をお届けします

GS2-Inventory にシンプルインベントリ機能を追加しました

はじめに

GS2-Inventory はアイテムの所持数量を管理する機能を提供します。

機能追加の背景

GS2-Inventory は《インベントリの容量制限や拡張機能》《同一アイテムを複数スタックで管理》《アイテムの有効期限》といった、リッチな機能を提供しています。
一方で、アイテムの増減処理はアイテムの種類ごとに行う必要がありました。

これらの機能を実現するために《クエストクリア時に複数のアイテムを入手》といったケースでAPIの呼び出し回数がアイテムの種類回必要な仕様となっていました。
API呼び出し回数が増えるということは、GS2の利用料金が増えるとともに、通信回数が増えることでユーザー体験を損なう状況を生み出しかねませんでした。

追加された機能の詳細

シンプルインベントリは《アイテムごとの所持数量を管理する》以外の機能を全てカットし、その代わり複数のアイテムを同時に増減できるようにしました。

利用方法もシンプルで、クエストのクリア報酬にシンプルインベントリで管理するアイテムを複数セットしていた場合、報酬付与時に一括で処理可能な場合はGS2側で勝手にリクエストをまとめて処理します。

消費の際には指定された複数のアイテムのうち1つでも残量が足りない場合は、すべてのアイテムが消費されない状態でエラー応答がされます。

Unity からの使用例

アイテムの入手

アイテムの入手は GS2-Quest のクエスト報酬や、GS2-Showcase の商品販売などを通して行なってください。

アイテムの消費

    var result = await gs2.Inventory.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).SimpleInventory(
        inventoryName: "inventory-0001"
    ).Item(
        itemName: "item-0001"
    ).ConsumeAsync(
        consumeCount: 1L
    );

インベントリ内のアイテム一覧を取得

    var items = await gs2.Inventory.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).SimpleInventory(
        inventoryName: "item"
    ).ItemsAsync(
    ).ToListAsync();
(C) Game Server Services, Inc.