GS2 Blog

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

GS2-Script でトランザクションを発行できるようになりました

はじめに

GS2-Script は GS2 の機能を拡張するもので、任意のタイミングでクライアントから呼び出せるようなものではなく
レベルアップした時や、アカウント引き継ぎを登録したときなどあらかじめ用意されたトリガーと関連づけることで、イベント駆動で実行できるスクリプトです。

トランザクションとは、GS2内のリソースを増減する処理を指します。

機能追加された背景

GS2-Script からは GS2-SDK を利用できるため、もともとアイテムの増減といった処理は実装可能でした。
しかし、スクリプトの実行内容はクライアントから把握できないため、キャッシュへの値反映を行いたければ
GS2-Exchange で交換レートを用意して、交換処理を実行することで、交換処理の完了通知などを持ってクライアントに結果を反映する必要がありました。

機能追加された内容の詳細

GS2-Script のネームスペースにトランザクション設定が追加されました。
さらに、GS2-Script にトランザクション実行関連の記法が追加されました。

transaction.execute({
  consumeActions={},
  acquireActions={
    transaction.service("inventory").acquire.acquire_simple_items_by_user_id({
      namespaceName="namespace",
      inventoryName="inventory",
      acquireCounts={
        {
          itemName="item",
          count=1,
        },
      },
    })
  }
})

acquireActions や consumeActions には各マイクロサービスのトランザクションアクションを設定可能で
ドキュメントにも GS2-Script での記述方法のサンプルが追加されています。

docs.gs2.io

これによって、GS2-Exchange などに交換レートを用意しなくてもスクリプトからトランザクションを発行できるようになります。

(C) Game Server Services, Inc.