Torneio

Como funcionam as fórmulas de pontos de liga?

Cada liga concede pontos aos seus jogadores para cada torneio que jogam, usando o sistema de pontuação que você escolhe ao criar ou editar a liga:

  • Logarítmico
  • Raiz Quadrada
  • Linear
  • Fixo (você insere os pontos exatos para cada posição)
  • Personalizado (escreva sua própria fórmula)

Variáveis de fórmula personalizada

Uma fórmula personalizada é calculada uma vez para cada jogador no final de um torneio. Algumas de suas variáveis descrevem o torneio, então mantêm o mesmo valor para todos nele, e algumas descrevem o jogador sendo pontuado. Saber qual é qual é a maior parte da habilidade em escrever uma fórmula.

Sobre o torneio, o mesmo para cada jogador:

pnúmero de jogadores
nnúmero de entradas (incluindo reentradas)
bo buy-in
zpremiação
mnúmero de posições pagas
tformato do torneio (1 padrão, 2 split, 3 shootout, 4 mystery bounty)

Sobre o jogador sendo pontuado:

fposição final
co que eles gastaram (buy-in mais seus próprios rebuys e add-on)
kknockouts que fizeram
rrebuys que tomaram
aadd-ons que tomaram
xbullets que usaram (seus buy-ins totais)
wganhos (o valor que ganharam)
drodadas da final em um shootout (1 é a rodada final)

Por exemplo, esta fórmula dá a cada jogador um ponto para cada oponente que sobreviveram, um bônus de 2 pontos para cada knockout, e subtrai um ponto para cada rebuy:

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

Avançado: escrevendo sua própria fórmula

Além da aritmética, duas notações fazem a maior parte do trabalho em fórmulas reais de liga: condições e tabelas de pontos. Você também pode usar sqrt, log, log10, exp, pow, round, floor, fix, abs, min e max, e ^ para potências.

Condições com ? :

Uma condição se lê como teste ? valor se verdadeiro : valor caso contrário.

f == 1 ? 50 : 10

Isso concede 50 pontos ao vencedor e 10 para todos os outros. Note o == duplo para "é igual a". Você também tem <, <=, >, >= e !=, e pode juntar testes com and e or:

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

Condições se encadeiam, que é como clubes escrevem uma regra diferente para cada posição. Cada : passa para o próximo teste:

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

Tabelas de pontos com [ ... ][f]

Em vez de encadear condições, você pode listar os pontos em ordem e escolher aquele para a posição final do jogador:

[100, 85, 70][f]

A lista é lida por posição: primeiro lugar recebe 100, segundo 85, terceiro 70. As posições começam em 1, então f se alinha com a lista sem nenhum ajuste.

Sempre proteja uma tabela de pontos com uma condição. Se um jogador terminar abaixo do final da lista, a fórmula falha e esse jogador não pontua nada. Uma lista de três entradas precisa de f < 4:

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

Use o valor : para definir um piso para todos os outros, por exemplo : 5 para dar cinco pontos por aparecer.

Cuidado com os colchetes

Multiplicação e adição são aplicadas antes de uma comparação, o que silenciosamente muda o que uma fórmula testa. Escrito sem colchetes:

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

o teste se torna "é 30 * k + f menor que p / 3 + 1", não "está f dentro do terço superior". Uma liga pode rodar uma temporada inteira na regra errada desta forma. Envolva a condição, ou toda a condicional, em colchetes:

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

Fórmulas que clubes realmente usam

Estes são padrões reais de ligas rodando no Blind Valet, simplificados apenas onde a lista de posições de um clube era muito longa.

O que o clube queriaFórmula
Um ponto por aparecer, nada mais1
Um ranking apenas de vitóriasf == 1 ? 1 : 0
Knockouts, mais um ponto pela vitóriak + (f == 1 ? 1 : 0)
Um ponto por oponente sobrevivido, com bônus de pódiop - f + 1 + (f < 4 ? [4, 2, 1][f] : 0)
Uma tabela fixa, mas todos os outros ainda pontuamf < 10 ? [1500, 1200, 900, 700, 600, 500, 400, 300, 200][f] : 100
Stakes maiores valem mais, cada rebuy custa pontoslog(p + 1) / f * 10 + b - c / 4
Pontos escalados pelo tamanho da premiaçãosqrt(p + 1) / f * z / 500
Apenas o terço superior pontua, escalado pelo tamanho do field30 * k + (f < p / 3 + 1 ? sqrt(p / 10) * [120, 90, 70, 60, 50, 45, 40, 30, 25, 20][f] : 1)
Cada posição uma porcentagem de uma base que cresce com o fieldf == 1 ? round(600 + p * 10) : f == 2 ? round((600 + p * 10) * 0.82) : round((600 + p * 10) * 0.74)

O exemplo de stakes mostra por que os dois grupos importam. Ele usa b e c, que parecem similares mas ficam em lados opostos: adicionar b eleva cada pontuação em um torneio de buy-in maior, porque o buy-in pertence ao torneio, enquanto subtrair c retira uma parte do que cada jogador individualmente gastou. Um jogador que faz rebuy duas vezes termina com menos pontos do que um jogador que ficou na mesma posição com um bullet.

Verificando sua fórmula

As configurações da liga pré-visualizam os pontos para cada posição final conforme você digita, então você pode ver a forma da premiação antes de salvar. Se a pré-visualização estiver em branco, a fórmula ainda não é válida: verifique se há um colchete faltando, ou uma tabela de pontos que uma posição baixa pode ultrapassar o final.