GS2-Schedule

イベントスケジュール機能

ゲーム内のイベントなどのスケジュールを管理する機能を提供します。

このマイクロサービス単体でできることはほぼなく、他のマイクロサービスと連携して使用することが前提となります。

イベントの開催期間には大きく2種類が存在します。 1つ目は全てのプレイヤーが期間を共有する「絶対期間」2つ目はプレイヤーごとに期間が異なる「相対期間」があります。

絶対期間

「1月1日〜1月3日 にニューイヤーイベントを開催する」というようなケースで利用できる期間タイプです。

相対期間

「ゲーム開始から1週間」「初めてボスを倒してから24時間」のようにプレイヤーによってイベントの期間が異なるケースで利用できる期間タイプです。

相対期間を実現するために「トリガー」という仕組みがあります。 トリガーを引いてから指定期間がイベント開催期間として処理されます。

トリガーの引き方の種類

トリガーを引く時に、すでにトリガーが引かれている場合の振る舞いとして3種類の引き方が存在します。

  • 期間を追加する(add)
  • 再度トリガーを引き直す(renew)
  • 何もしない(drop)

2020-01-01 00:00 にトリガーを引き、7日間の相対イベントが開始された状況において、 2020-01-03 00:00 に再度トリガーを引いた時のそれぞれの挙動を解説します。

方式イベント終了日時
add2020-01-14 00:00
renew2020-01-10 00:00
drop2020-01-07 00:00

実装例

トリガーを引く

トリガーを引く処理はゲームエンジン用の SDK では処理できません。

GS2-Account のアカウント作成時のスクリプト内や、GS2-Quest のクリア報酬としてトリガーを引くといった方法で実装してください。

開催中のイベント一覧を取得

    var items = await gs2.Schedule.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).EventsAsync(
    ).ToListAsync();
    const auto Domain = Gs2->Schedule->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    );
    const auto It = Domain->Events(
    );
    for (auto Item : *It)
    {

    }

詳細なリファレンス