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 に再度トリガーを引いた時のそれぞれの挙動を解説します。
方式 | イベント終了日時 |
---|---|
add | 2020-01-14 00:00 |
renew | 2020-01-10 00:00 |
drop | 2020-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)
{
}