Turnering

Hur fungerar ligapoängformler?

Varje liga delar ut poäng till sina spelare för varje turnering de spelar, med hjälp av det poängsystem du väljer när du skapar eller redigerar ligan:

  • Logaritmisk
  • Kvadratrot
  • Linjär
  • Fast (du anger de exakta poängen för varje placering)
  • Anpassad (skriv din egen formel)

Variabler för anpassad formel

En anpassad formel beräknas en gång för varje spelare i slutet av en turnering. Vissa av dess variabler beskriver turneringen, så de har samma värde för alla i den, och vissa beskriver spelaren som poängsätts. Att veta vilken som är vilken är det mesta av skickligheten i att skriva en formel.

Om turneringen, samma för varje spelare:

pantal spelare
nantal entries (inklusive re-entries)
bbuy-in
zprispott
mantal betalda placeringar
tturneringsformat (1 standard, 2 split, 3 shootout, 4 mystery bounty)

Om spelaren som poängsätts:

fslutplacering
cvad de spenderade (buy-in plus deras egna rebuys och addon)
kknockouts de gjorde
rrebuys de tog
aaddons de tog
xbullets de använde (deras totala buy-ins)
wvinster (summan de vann)
domgångar från finalen i en shootout (1 är finalomgången)

Till exempel ger denna formel varje spelare en poäng för varje motståndare de överlevde, en 2-poängsbonus för varje knockout, och drar av en poäng för varje rebuy:

(p - f + 1) + (2 * k) - r

Avancerat: skriva din egen formel

Utöver aritmetik gör två notationer det mesta av arbetet i riktiga ligaformler: villkor och poängtabeller. Du kan också använda sqrt, log, log10, exp, pow, round, floor, fix, abs, min och max, samt ^ för potenser.

Villkor med ? :

Ett villkor läses som test ? värde om sant : värde annars.

f == 1 ? 50 : 10

Det delar ut 50 poäng till vinnaren och 10 till alla andra. Notera dubbla == för "är lika med". Du har också <, <=, >, >= och !=, och du kan sammanfoga tester med and och or:

p >= 20 and f <= 3 ? 10 : 0

Villkor kan kedjas, vilket är hur klubbar skriver en annan regel för varje placering. Varje : överlämnar till nästa test:

f == 1 ? 30 : f == 2 ? 20 : f == 3 ? 15 : 5

Poängtabeller med [ ... ][f]

Istället för att kedja villkor kan du lista poängen i ordning och välja den för spelarens slutplacering:

[100, 85, 70][f]

Listan läses efter position: förstaplatsen får 100, andraplatsen 85, tredjeplatsen 70. Positioner börjar på 1, så f stämmer överens med listan utan någon justering.

Skydda alltid en poängtabell med ett villkor. Om en spelare slutar under slutet av listan misslyckas formeln och den spelaren får inga poäng alls. En lista med tre poster behöver f < 4:

f < 4 ? [100, 85, 70][f] : 0

Använd : värdet för att sätta ett golv för alla andra, till exempel : 5 för att ge fem poäng för att dyka upp.

Se upp med parenteserna

Multiplikation och addition tillämpas innan en jämförelse, vilket tyst ändrar vad en formel testar. Skrivet utan parenteser:

30 * k + f < p / 3 + 1 ? 100 : 1

blir testet "är 30 * k + f mindre än p / 3 + 1", inte "är f inom den övre tredjedelen". En liga kan köra en hel säsong med fel regel på detta sätt. Omslut villkoret, eller hela det villkorliga uttrycket, med parenteser:

30 * k + (f < p / 3 + 1 ? 100 : 1)

Formler som klubbar faktiskt använder

Dessa är riktiga mönster från ligor som körs på Blind Valet, förenklade endast där en klubbs lista över placeringar var mycket lång.

Vad klubben ville haFormel
En poäng för att dyka upp, inget annat1
En ranking endast av vinsterf == 1 ? 1 : 0
Knockouts, plus en poäng för vinstenk + (f == 1 ? 1 : 0)
En poäng per motståndare man överlevde, med pallplaceringsbonusp - f + 1 + (f < 4 ? [4, 2, 1][f] : 0)
En fast tabell, men alla andra poängsätter fortfarandef < 10 ? [1500, 1200, 900, 700, 600, 500, 400, 300, 200][f] : 100
Högre insatser värda mer, varje rebuy kostar poänglog(p + 1) / f * 10 + b - c / 4
Poäng skalade efter storleken på prispottensqrt(p + 1) / f * z / 500
Endast den övre tredjedelen poängsätter, skalat efter fältstorlek30 * k + (f < p / 3 + 1 ? sqrt(p / 10) * [120, 90, 70, 60, 50, 45, 40, 30, 25, 20][f] : 1)
Varje placering en procentsats av en bas som växer med fältetf == 1 ? round(600 + p * 10) : f == 2 ? round((600 + p * 10) * 0.82) : round((600 + p * 10) * 0.74)

Insatsexemplet visar varför de två grupperna spelar roll. Det använder b och c, som ser likadana ut men sitter på motsatta sidor: att lägga till b höjer varje poäng i en turnering med högre buy-in, eftersom buy-in tillhör turneringen, medan att dra av c tar tillbaka en andel av vad varje spelare individuellt spenderade. En spelare som tar två rebuys slutar med färre poäng än en spelare som tog samma placering på en bullet.

Kontrollera din formel

Ligainställningarna förhandsgranskar poängen för varje slutplacering medan du skriver, så du kan se formen på utbetalningen innan du sparar. Om förhandsgranskningen är tom är formeln inte giltig ännu: kontrollera om det saknas en parentes, eller en poängtabell som en låg slutplacering kan åka av i slutet av.