토너먼트

토너먼트는 짧은 기간 동안 서로 상을 받기 위해 경쟁하는 대회입니다.

이 문서에서는 Nakama 서버용 토너먼트 디자인에 대해 간단하게 설명합니다. 플레이어가 토너먼트, 참가할 수 있는 토너먼트, 점수 제출 시기를 찾는 방법 및 토너먼트 종료 시 보상이 분배되는 방법에 대한 규칙을 다룹니다.

규칙 #

선택 사항인 재설정 일정과 기간이 있는 토너먼트가 생성됩니다. 이 값을 사용하면 토너먼트가 다음 기간을 위해 재설정되기 전까지 토너먼트를 재생할 수 있는 시간을 편리하게 제어할 수 있습니다. 예를 들어 매일 정오에 시작하여 한 시간 동안만 진행되는 토너먼트를 만들 수 있습니다. 이 규칙은 CRON 표현식(“0 12 * * *")과 3600초의 기간으로 표현됩니다.

토너먼트에는 허용되는 상대방 수를 제한하고 (즉, 선착순) 선택적인 참가 요구 사항을 적용할 수 있습니다. 예를 들어 최초 10,000명의 상대방만 가입이 허용되는 경우 모든 상대방은 가입해야 점수를 제출할 수 있습니다.

토너먼트는 프로그래밍 방식으로 생성되어 나중에 시작하거나 생성 직후에 시작되며 모두 특별한 구성의 순위표로 표현됩니다.

토너먼트는 사용자가 아닌 상대도 플레이할 수 있습니다. 예를 들어 길드 ID로 점수를 제출하는 길드 토너먼트를 구현할 수 있습니다.

토너먼트 나열 #

서버에서 생성된 토너먼트를 찾습니다. 토너먼트는 카테고리와 시작 및 종료 시간을 통해 필터링할 수 있습니다.

시작 및 종료 시간 매개변수를 생략하면 진행 중인 토너먼트와 미래 토너먼트가 반환됩니다.

종료 시간 매개변수를 0(으)로 설정하면 결과에 종료 시간이 설정되지 않은 토너먼트만 포함됩니다.

종료 시간을 > 0 Unix 타임스탬프로 설정하면 상한선 역할을 하며 그 이전에 종료되는 토너먼트만 반환합니다(종료 시간이 없는 토너먼트 제외).

시작 시간을> 0 Unix 타임스탬프로 설정하면 이보다 늦은 시간에 시작하는 토너먼트가 반환됩니다.

토너먼트 가입 #

소유자가 점수를 제출하려면 토너먼트 가입이 필요할 수 있습니다. 이 작업은 멱등성이고 소유자가 이미 토너먼트에 가입한 경우에도 항상 성공합니다.

토너먼트 기록 나열 #

토너먼트 기록의 혼합 목록과 특정 소유자에게 속한 기록 배치를 가져옵니다. 이를 통해 상위 100명의 플레이어와 현재 사용자와 친구 사이의 점수를 보여주는 순위표 보기를 만들 수 있습니다.

소유자 중심의 토너먼트 기록 나열 #

소유자 중심의 토너먼트 기록 목록을 가져옵니다.

토너먼트 기록 쓰기 #

토너먼트 순위표에 점수 및 선택적 하위 점수를 제출합니다. 토너먼트가 가입 필요로 구성된 경우 소유자가 이미 토너먼트에 가입되어 있지 않으면 실패합니다.

권한 부여 기능 #

런타임 기능은 서버 프레임워크를 통해 액세스할 수 있으며 사용자 지정 로직을 사용하여 토너먼트의 다양한 측면에 추가 규칙을 적용할 수 있습니다. 예를 들어 토너먼트에 가입하려는 상대방은 특정 수준보다 높아야 할 수 있습니다.

토너먼트 생성 #

모든 구성 옵션으로 토너먼트를 만드십시오.

재설정 일정으로 토너먼트를 생성하지 않으면 종료 시간을 제공해야 합니다.

토너먼트 삭제 #

ID로 토너먼트를 삭제합니다.

득점 시도 추가 #

소유자의 토너먼트 기록에 추가 득점 시도를 추가합니다. 이것은 이 특정 소유자에 대해 토너먼트에서 허용되는 최대 득점 시도 수를 재정의합니다.

보상 분배 #

토너먼트의 활성 기간이 끝나면 서버에 등록된 기능이 호출되어 만료된 기록을 전달하여 보상을 계산하고 소유자에게 분배하는 데 사용할 수 있습니다.

Go에서 보상 분배 기능을 등록하려면 initializer을(를) 사용합니다.

상위 10명의 플레이어에게 지속적으로 알림을 보내 본인들이 승리했음을 알리고 가상 지갑에 코인을 추가하는 간단한 보상 분배 기능은 다음과 같습니다:

고급 #

토너먼트를 사용하여 리그 시스템을 만들 수 있습니다. 리그와 토너먼트의 주요 차이점은 리그는 일반적으로 계절적이며 상대방이 진행할 수 있는 래더 또는 계층이 통합되어 있다는 것입니다.

리그는 동일한 재설정 일정과 기간을 공유하는 토너먼트 모음으로 구성될 수 있습니다. 보상 분배 기능을 사용하여 각 재설정 일정 사이에 한 토너먼트와 다음 토너먼트 사이에서 상대방을 진행할 수 있습니다.

이에 대한 예는 티어 리그 가이드를 참조하세요.

토너먼트 메타데이터 #

각 토너먼트 및 토너먼트 기록에는 토너먼트 자체에 대한 추가 데이터, 제출 중인 점수 및 점수 소유자에 대한 추가 데이터가 선택적으로 포함될 수 있습니다. 추가 필드는 JSON으로 인코딩되어 메타데이터로 제출해야 합니다.

메타데이터의 용례는 날씨와 같은 운전 게임의 레이스 조건에 대한 정보로서 사용자가 레코드를 나열할 때 추가 UI 힌트를 제공할 수 있습니다.

1
2
3
4
5
{
  "surface": "wet",
  "timeOfDay": "night",
  "car": "Porsche 918 Spyder"
}