GS2-Schedule
イベントスケジュール機能
ゲーム内のイベントなどのスケジュールを管理する機能を提供します。
このマイクロサービスだけでは機能しないため、他のマイクロサービスと連携して使用することが前提となります。
イベントの開催期間には2種類あります。 1つ目は、全てのプレイヤーが同じ期間を共有する「絶対期間」、2つ目は、プレイヤーごとに期間が異なる「相対期間」となります。
絶対期間
「1月1日〜1月3日でニューイヤーイベントを開催する」といったケースで使用する期間タイプです。
相対期間
「ゲーム開始から1週間」や「初めてボスを倒してから24時間」のように、プレイヤーによってイベントの期間が異なるケースで使用する期間タイプです。
相対期間を実現するための「トリガー」という仕組みがあります。 トリガーを実行したあと、指定された期間(ttl)がイベントの開催期間として扱われます。
トリガーの引き方の種類
トリガーを引く時に、すでにトリガーが引かれている場合のイベント期間の指定方法には2種類あります。
- トリガーを再起動する(renew)
- トリガーを延長する(extend)
- 何もしない(drop)
2020年1月1日 00:00にトリガーを引き、7日間の相対期間イベントが開始された場合、2020年1月3日 00:00にトリガーを再度引いたときの各動作は以下のようになります。
方式 | イベント終了日時 | |
---|---|---|
renew | 2020年1月10日 00:00 | トリガーの起動時点 2020年1月3日 00:00に7日間を追加 |
extend | 2020年01月14日 00:00 | すでに存在するトリガーの有効期限 2020年1月7日 00:00に7日間を追加 |
drop | 2020年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());
}