GS2-Matchmaking 트랜잭션 액션
액션의 조합과 동시 실행
모든 서비스에 공통되는 전제는 트랜잭션 액션의 조합에 정리되어 있습니다. 먼저 그쪽을 읽어 주십시오. 이 절의 나머지는 GS2-Matchmaking 고유의 내용입니다.
GS2-Matchmaking이 트랜잭션에 지정할 수 있는 액션은 1가지이며, 읽기만 수행합니다.
| 조작 | 같은 행을 겹쳤을 때 | 중첩 너머 | 다른 대상이 되는 경계 |
|---|---|---|---|
참가하고 있음의 검증VerifyIncludeParticipantByUserId | 먼저 지정한 쪽이 남음 | 읽기만 하므로 충돌하지 않는다 | 시즌 개더링·검증 타입·대상 사용자 |
다른 검증 액션과 마찬가지로, 이 액션도 트랜잭션 시작 시점의 시즌 개더링을 봅니다. 같은 트랜잭션 안에서 개더링에 참가한 사용자는 이 판정에서는 아직 참가자가 아닙니다. 그 때문에 참가시킨 뒤 그 참가를 검증하는 흐름을 하나의 트랜잭션으로 수행할 수는 없습니다.
참가가 안쪽 트랜잭션, 예를 들어 추첨의 경품이나 교환의 결과로 이루어지는 경우도 같습니다. 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]타임 오프셋 토큰",
})