GS2-Matchmaking トランザクションアクション
アクションの組み合わせと同時実行
すべてのサービスに共通する前提は トランザクションアクションの組み合わせ にまとめています。先にそちらを読んでください。この節の残りは GS2-Matchmaking 固有の内容です。
GS2-Matchmaking がトランザクションに指定できるアクションは 1 つで、読み取りしか行いません。
| 操作 | 同じ行を重ねたとき | 入れ子越し | 別の対象になる境界 |
|---|---|---|---|
参加していることの検証VerifyIncludeParticipantByUserId | 先勝ち | 読み取りだけなので衝突しない | シーズンギャザリング・検証タイプ・対象ユーザー |
他の検証アクションと同じく、このアクションもトランザクション開始時点のシーズンギャザリングを見ます。同じトランザクションの中でギャザリングに参加したユーザーは、この判定においてはまだ参加者ではありません。そのため、参加させてからその参加を検証する、という流れを 1 つのトランザクションで行うことはできません。
参加が内側のトランザクション、たとえば抽選の景品や交換の結果として行われる場合も同じです。GS2-Matchmaking 自身には参加を行うトランザクションアクションがないため、参加は必ず API か、他サービスのアクションが呼び出す処理として起こります。そのトランザクションが成立させたものを検証したい場合は、トランザクションを分けてください。
違うユーザーを検証する場合は別の対象なので、どちらも判定されます。
入れ子になったトランザクションに注意
このアクションは何も書き込まないので、内側のトランザクションから届く更新と衝突することはありません。できないのは、経路にかかわらず、同じトランザクションが行った変更を見ることです。
同時実行とリトライ
このアクションがコンフリクトを返すことはありません。失敗するのは検証そのものが成立しなかった場合だけで、これは結果であってリトライすべきエラーではありません。
Verify Action
検証アクション
Gs2Matchmaking:VerifyIncludeParticipantByUserId
ユーザーIDを指定して永続ギャザリングにユーザーIDが含まれているかを検証
指定されたユーザーがシーズンギャザリングに参加しているかどうかを検証します。
数量指定可能なアクション:いいえ
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||||||||
| seasonName | string | ✓ | ~ 128文字 | シーズンモデル名 シーズンモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||||||||
| season | long | ✓ | 0 ~ 9223372036854775805 | シーズン | ||||||||
| tier | long | ✓ | 0 ~ 9223372036854775805 | ティアー 同程度のランクのプレイヤーをグルーピングするためのティアーレベル。 SeasonModel で指定された GS2-Experience モデルにおけるプレイヤーのランクによって決定されます。 プレイヤーは同じティアーのプレイヤーとのみマッチングされ、公平な対戦が保証されます。 | ||||||||
| seasonGatheringName | string | ✓ | UUID | ~ 128文字 | シーズンギャザリング名 シーズンギャザリング固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | |||||||
| userId | string | ✓ | ~ 128文字 | ユーザーID#{userId} と設定することでログイン中のユーザーIDに置換されます。 | ||||||||
| verifyType | 文字列列挙型 enum { “include”, “notInclude” } | ✓ | 検証の種類
| |||||||||
| timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
{
"action": "Gs2Matchmaking:VerifyIncludeParticipantByUserId",
"request": {
"namespaceName": "[string]ネームスペース名",
"seasonName": "[string]シーズンモデル名",
"season": "[long]シーズン",
"tier": "[long]ティアー",
"seasonGatheringName": "[string]シーズンギャザリング名",
"userId": "[string]ユーザーID",
"verifyType": "[string]検証の種類",
"timeOffsetToken": "[string]タイムオフセットトークン"
}
}action: Gs2Matchmaking:VerifyIncludeParticipantByUserId
request:
namespaceName: "[string]ネームスペース名"
seasonName: "[string]シーズンモデル名"
season: "[long]シーズン"
tier: "[long]ティアー"
seasonGatheringName: "[string]シーズンギャザリング名"
userId: "[string]ユーザーID"
verifyType: "[string]検証の種類"
timeOffsetToken: "[string]タイムオフセットトークン"transaction.service("matchmaking").verify.verify_include_participant_by_user_id({
namespaceName="[string]ネームスペース名",
seasonName="[string]シーズンモデル名",
season="[long]シーズン",
tier="[long]ティアー",
seasonGatheringName="[string]シーズンギャザリング名",
userId="[string]ユーザーID",
verifyType="[string]検証の種類",
timeOffsetToken="[string]タイムオフセットトークン",
})