イベント

Scheduler サービスと Unity Gaming Services ではイベントが生成されます。イベントは、Triggers サービスに送信されます。そこでイベントは設定と照合され、対応する Cloud Code スクリプトまたはモジュールが実行されます。

発行されるイベント

Scheduler サービスと Unity Gaming Services は、トリガーを関連付けるイベントを発行します。

発行元カスタマイズ可能イベントペイロード発行対象ユースケース
Unity Gaming Servicesいいえイベント固有のペイロードとバージョン管理で事前定義プレイヤーまたはゲーム状態の変更ゲーム内またはプレイヤーの状態変更に反応して、Cloud Code スクリプトまたはモジュールをトリガーする際に UGS によって発行されるイベントを使用します。
Scheduler サービスはいスケジュール設定でユーザーが作成ユーザー定義の設定時刻または反復的な瞬間Cloud Code スクリプトまたはモジュールがいつトリガーされるかを制御する場合に Scheduler サービスによって発行されるイベントを使用します。

配信セマンティクス

デフォルトでは、イベントは at-least-once 配信セマンティクスを持ちます。これは、すべてのイベントが 1 回処理されることが保証されるものの、ネットワークの問題発生時に複数回処理される可能性があることを意味します。これを回避するための推奨されるベストプラクティスは、冪等性のある Cloud Code スクリプトおよびモジュールを作成することです。

イベントの構造

すべてのイベントには、イベントタイプ、ペイロードバージョンが含まれ、ペイロードを搬送します。

フィールド説明
eventTypeイベントタイプは、発行サービス、イベント名、およびペイロードバージョンを含む文字列です。イベントタイプは、アソシエーションを作成するトリガー設定でも使用されます。com.unity.services.scheduler.example-event.v1
payloadVersionペイロードバージョンは、ペイロードのバージョンを示す整数です。1
payloadペイロードは、イベントデータを含む文字列です。Cloud Code にスクリプトまたはモジュールパラメーターとして渡されます。"{\"someBoolean\": true, \"someString\": \"something\"}"

イベントタイプは、Scheduler サービスと UGS のどちらによって発行されるかに応じて若干異なります。

イベントタイプ発行元ペイロードバージョンペイロード
com.unity.services.scheduler.example-event.v1Scheduler サービス1ユーザー定義
com.unity.services.player-auth.signed-up.v1認証サービス1事前定義
com.unity.services.player-auth.signed-in.v1認証サービス1事前定義
com.unity.services.cloud-save.key-saved.v1Cloud Save サービス1事前定義
com.unity.servics.leaderboards.reset.v1Leaderboards サービス1事前定義

Scheduler サービスによって発行されるイベントは、イベント名、ペイロードバージョン、およびペイロードをスケジュール設定で定義することでカスタマイズできます。UGS で発行されたイベントには、イベントタイプに応じて異なるペイロード構造があり、カスタマイズできません。

各イベントタイプが返す内容について詳しくは、サポートされる UGS イベント を参照してください。

ペイロードバージョン管理

ペイロードバージョン管理は、破壊的変更の回避に役立ちます。すべてのイベントに、イベントペイロードのペイロードバージョン管理が含まれます。

例えば、com.unity.services.player-auth.signed-up.v1 はペイロードバージョンが 1 の Authentication サービスによって発行されるイベントタイプです。これにより、同じイベントのさまざまなペイロードバージョンに対して異なるトリガーを設定できます。

ノート: ペイロードバージョン管理は、スケジュールされたイベントと UGS によって発行されたイベントの両方でサポートされます。ただし、スケジュールされたイベントのペイロードバージョンとコンテンツはカスタマイズできますが、UGS によって発行されたイベントはカスタマイズできません。

スケジュールされたイベントのペイロード

Scheduler サービスによって発行されたイベントには、カスタマイズ可能なペイロードがあります。ペイロードは、スケジュール設定で定義されます。

例えば、スケジュールされたイベントのペイロードに新しいフィールドを追加する場合は、ペイロードの新しいバージョンを作成し、ペイロードの新しいバージョンを使用するようにトリガーを作成できます。

スケジュール設定では以下のようになります。

{
"name" : "recurring-schedule",
"eventName": "example-event",
"type": "recurring",
"schedule": "0 0 * * *",
"payloadVersion": 1,
"payload": "{\"someBoolean\": true, \"someString\": \"something\"}"
}

上記のサンプルの結果は com.unity.services.scheduler.example-event.v1 のイベントタイプになります。

このイベントタイプのトリガーを設定できます。

{
"name" : "example-trigger",
"eventType" : "com.unity.services.scheduler.example-event.v1",
"actionUrn" : "urn:ugs:cloud-code:my-script",
"actionType" : "cloud-code"
}

イベントのペイロードに新しいフィールドを追加する場合は、ペイロードの新しいバージョンを作成し、ペイロードの新しいバージョンを使用するようにトリガーを作成できます。

{
"name" : "recurring-schedule",
"eventName": "example-event",
"type": "recurring",
"schedule": "0 0 * * *",
"payloadVersion": 2,
"payload": "{\"someBoolean\": true, \"someString\": \"something\", \"someNewField\": \"something else\"}"
}

この結果は com.unity.services.scheduler.example-event.v2 のイベントタイプになります。これにより、新しいトリガーを新しいイベントタイプに関連付けることができます。

スケジュールされたイベント

スケジュールされたイベントを発行するには、スケジュール設定を作成する必要があります。詳細については、イベントのスケジュール を参照してください。

スケジュール設定をデプロイすることにより、設定した時刻または反復的な瞬間に発行されるイベントを作成できます。

以下は、スケジュール設定のサンプルです。

{
"name" : "example-schedule",
"eventName": "example-event",
"type": "recurring",
"schedule": "0 0 * * *",
"payloadVersion": 1,
"payload": "{\"someBoolean\": true, \"someString\": \"something\"}"
}
  • name: スケジュールの名前。プロジェクトごとに一意である必要があります。
  • eventName: イベントのプロジェクトスコープ名。トリガーのイベントタイプを構成するために使用されます。
  • type: スケジュールのタイプ。one-time または recurring である必要があります。
  • schedule: イベントがいつ発生する必要があるかを指定します。type フィールドに応じて、タイムスタンプまたは cron 式である必要があります。
  • payloadVersion: ペイロードのバージョンを示す整数。トリガーのイベントタイプを構成するために使用されます。
  • payload: パラメーターを Cloud Code スクリプトまたはモジュールに転送するためにイベントペイロードとして使用される JSON オブジェクト。

ノート: 制限が適用されます。詳細については、制限 を参照してください。

1 回限りのスケジュール

1 回限りのスケジュールは、特定の時刻に実行される単一のイベントです。以下のようになります。

{
"name" : "one-time-schedule",
"eventName": "example-event",
"type": "one-time",
"schedule": "2020-01-01T00:00:00Z",
"payloadVersion": 1,
"payload": "{\"someBoolean\": true, \"someString\": \"something\"}"
}

schedule フィールドは、イベントがいつトリガーされるかを定義する RFC3339 タイムスタンプです。

ノート: 将来のタイムスタンプを宣言する必要があります。

反復的なスケジュール

反復的なスケジュールは、特定の時間間隔で実行される一連のイベントです。以下のようになります。

{
"name" : "recurring-schedule",
"eventName": "example-event",
"type": "recurring",
"schedule": "0 0 * * *",
"payloadVersion": 1,
"payload": "{\"someBoolean\": true, \"someString\": \"something\"}"
}

schedule フィールドは、イベントがいつトリガーされるかを定義する cron 式です。

Triggers とのオーバーラップ

イベントがトリガーとどのように関連付けられているかを確認するには、Triggers 構造 を参照してください。