GS2-Schedule

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

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

このマイクロサービスだけでは機能しないため、他のマイクロサービスと連携して使用することが前提となります。

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

絶対期間

「1月1日〜1月3日でニューイヤーイベントを開催する」といったケースで使用する期間タイプです。

相対期間

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

相対期間を実現するための「トリガー」という仕組みがあります。 トリガーを実行したあと、指定された期間(ttl)がイベントの開催期間として扱われます。

Gs2Schedule:TriggerByUserIdアクション

トリガーの引き方の種類

トリガーを引く時に、すでにトリガーが引かれている場合のイベント期間の指定方法には2種類あります。

  • トリガーを再起動する(renew)
  • トリガーを延長する(extend)
  • 何もしない(drop)

2020年1月1日 00:00にトリガーを引き、7日間の相対期間イベントが開始された場合、2020年1月3日 00:00にトリガーを再度引いたときの各動作は以下のようになります。

方式イベント終了日時
renew2020年1月10日 00:00トリガーの起動時点 2020年1月3日 00:00に7日間を追加
extend2020年01月14日 00:00すでに存在するトリガーの有効期限 2020年1月7日 00:00に7日間を追加
drop2020年01月7日 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(
    );
    TArray<Gs2::UE5::Schedule::Model::FEzEventPtr> Result;
    for (auto Item : *It)
    {
        if (Item.IsError())
        {
            return false;
        }
        Result.Add(Item.Current());
    }

詳細なリファレンス