리그 포인트 공식은 어떻게 작동하나요?
모든 리그는 각 토너먼트에 참가한 플레이어들에게 포인트를 부여하며, 리그를 생성하거나 편집할 때 선택한 채점 시스템을 사용합니다:
- 로그
- 제곱근
- 선형
- 고정 (각 순위에 대한 정확한 포인트를 직접 입력)
- 사용자 정의 (자체 수식 작성)
사용자 정의 수식 변수
사용자 정의 수식은 토너먼트 종료 시 각 플레이어에 대해 한 번씩 계산됩니다. 일부 변수는 토너먼트를 설명하므로 모든 참가자에게 동일한 값을 가지며, 일부는 점수를 받는 플레이어를 설명합니다. 어느 것이 어느 것인지 아는 것이 수식 작성의 핵심입니다.
토너먼트에 관한 것으로, 모든 플레이어에게 동일:
| p | 플레이어 수 |
| n | 엔트리 수 (리엔트리 포함) |
| b | 바이인 |
| z | 상금 풀 |
| m | 입상 인원 수 |
| t | 토너먼트 형식 (1 표준, 2 스플릿, 3 슈팅아웃, 4 미스터리 바운티) |
점수를 받는 플레이어에 관한 것:
| f | 최종 순위 |
| c | 지출한 금액 (바이인 + 자신의 리바이 및 애드온) |
| k | 녹아웃 수 |
| r | 리바이 횟수 |
| a | 애드온 횟수 |
| x | 사용한 불릿 수 (총 바이인 횟수) |
| w | 상금 (획득한 금액) |
| d | 슈팅아웃에서 결승전까지의 라운드 수 (1은 결승 라운드) |
예를 들어, 이 수식은 각 플레이어가 이긴 상대마다 1포인트, 녹아웃마다 2포인트 보너스를 주고, 리바이마다 1포인트를 뺍니다:
(p - f + 1) + (2 * k) - r
고급: 자체 수식 작성
산술 연산 외에도, 두 가지 표기법이 실제 리그 수식에서 대부분의 작업을 수행합니다: 조건과 포인트 테이블입니다. sqrt, log, log10, exp, pow, round, floor, fix, abs, min, max도 사용할 수 있으며, 거듭제곱에는 ^를 사용할 수 있습니다.
? :를 사용한 조건
조건은 테스트 ? 참일 때 값 : 그렇지 않을 때 값으로 읽습니다.
f == 1 ? 50 : 10
이는 우승자에게 50포인트를, 나머지 모두에게 10포인트를 부여합니다. "같다"를 나타내는 이중 ==에 주목하세요. <, <=, >, >=, !=도 사용할 수 있으며, and와 or로 테스트를 결합할 수 있습니다:
p >= 20 and f <= 3 ? 10 : 0
조건은 연쇄될 수 있으며, 이는 클럽이 각 순위에 대해 다른 규칙을 작성하는 방법입니다. 각 :는 다음 테스트로 넘어갑니다:
f == 1 ? 30 : f == 2 ? 20 : f == 3 ? 15 : 5
[ ... ][f]를 사용한 포인트 테이블
조건을 연쇄하는 대신, 포인트를 순서대로 나열하고 플레이어의 최종 순위에 해당하는 것을 선택할 수 있습니다:
[100, 85, 70][f]
목록은 순위별로 읽습니다: 1등은 100점, 2등은 85점, 3등은 70점을 받습니다. 순위는 1부터 시작하므로 f는 조정 없이 목록과 일치합니다.
항상 포인트 테이블을 조건으로 보호하세요. 플레이어가 목록의 끝보다 낮은 순위로 마치면 수식이 실패하고 해당 플레이어는 전혀 점수를 받지 못합니다. 세 항목의 목록은
f < 4가 필요합니다:
f < 4 ? [100, 85, 70][f] : 0
:값을 사용하여 나머지 모두에 대한 최소값을 설정할 수 있습니다. 예를 들어: 5는 참가만 해도 5포인트를 줍니다.
괄호에 주의하세요
곱셈과 덧셈은 비교보다 먼저 적용되므로 수식이 테스트하는 내용이 조 용히 변경됩니다. 괄호 없이 작성하면:
30 * k + f < p / 3 + 1 ? 100 : 1
테스트는 "f가 상위 1/3 안에 있는가"가 아니라 "30 * k + f가 p / 3 + 1보다 작은가"가 됩니다. 리그는 이런 식으로 전체 시즌을 잘못된 규칙으로 진행할 수 있습니다. 조건이나 전체 조건문을 괄호로 감싸세요:
30 * k + (f < p / 3 + 1 ? 100 : 1)
클럽이 실제로 사용하는 수식
다음은 Blind Valet에서 운영되는 리그의 실제 패턴으로, 클럽의 순위 목록이 매우 긴 경우에만 단순화되었습니다.
| 클럽이 원한 것 | 수식 |
|---|---|
| 참가만 해도 1포인트, 그 외 없음 | 1 |
| 우승만 기록하는 리더보드 | f == 1 ? 1 : 0 |
| 녹아웃 + 우승 시 1포인트 | k + (f == 1 ? 1 : 0) |
| 이긴 상대마다 1포인트 + 상위권 보너스 | p - f + 1 + (f < 4 ? [4, 2, 1][f] : 0) |
| 고정 테이블이지만 나머지도 점수 획득 | f < 10 ? [1500, 1200, 900, 700, 600, 500, 400, 300, 200][f] : 100 |
| 더 높은 스테이크가 더 가치 있고, 리바이마다 포인트 차감 | log(p + 1) / f * 10 + b - c / 4 |
| 상금 풀 크기에 비례한 포인트 | sqrt(p + 1) / f * z / 500 |
| 상위 1/3만 점수 획득, 참가자 수에 비례 | 30 * k + (f < p / 3 + 1 ? sqrt(p / 10) * [120, 90, 70, 60, 50, 45, 40, 30, 25, 20][f] : 1) |
| 각 순위는 참가자 수에 따라 증가하는 기본값의 백분율 | f == 1 ? round(600 + p * 10) : f == 2 ? round((600 + p * 10) * 0.82) : round((600 + p * 10) * 0.74) |
스테이크 예제는 두 그룹이 중요한 이유를 보여줍니다. 비슷해 보이지만 반대편에 있는 b와 c를 사용합니다: 바이인은 토너먼트에 속하므로 b를 더하면 더 높은 바이인 토너먼트에서 모든 점수가 올라가는 반면, c를 빼면 각 플레이어가 개별적으로 지출한 금액의 일부를 되돌립니다. 두 번 리바이한 플레이어는 한 번의 불릿으로 같은 순위를 차지한 플레이어보다 적은 포인트로 마칩니다.
수식 확인
리그 설정은 입력하는 동안 모든 최종 순위에 대한 포인트를 미리 보여주므로 저장하기 전에 상금 구조의 모양을 확인할 수 있습니다. 미리보기가 비어 있으면 수식이 아직 유효하지 않습니다: 누락된 괄호나 낮은 순위가 끝을 벗어날 수 있는 포인트 테이블을 확인하세요.