Setores de sete segundos: como o TUNL marca o ritmo de uma corrida
Uma curva de dificuldade te diz o quão difícil o jogo está em qualquer momento. Ela não te diz como a corrida parece. Esta é a história de substituir um monte de curvas independentes por um plano, e de medir se funcionou.
Pela primeira dezena de versões, a dificuldade do TUNL era um conjunto de curvas separadas. O espaçamento das estalactites tinha uma curva, o espaçamento das minas tinha uma curva, o espaçamento das moedas tinha uma curva, e cada uma era função de quão fundo na caverna você estava. Cada curva fazia sentido sozinha. Juntas, produziam uma corrida que parecia irregular, e quando finalmente medi isso, os números diziam a mesma coisa que a sensação.
O que a auditoria encontrou
Reproduzi os geradores reais e a física real com bots em quatro níveis de habilidade, cem corridas cada, em 24 sementes diárias diferentes. Depois observei quando coisas novas aconteciam e onde os bots morriam. Quatro problemas se destacaram:
- O ritmo era irregular. Sete elementos novos chegavam nos primeiros nove segundos. Depois nada de novo por treze segundos. Depois cinco nos próximos quatorze. Depois nunca mais nada de novo pelo resto da corrida.
- O primeiro erro era fatal para iniciantes. 41% das corridas do bot mais fraco terminavam a até oito pontos do momento em que as paredes se tornavam letais, e 91% das mortes desse bot eram contra paredes. A zona segura aberta no início apenas te empurrava de volta, então não podia ensinar a única coisa que os iniciantes precisavam aprender.
- O meio era um precipício. A densidade de estalactites dobrava duas vezes entre a pontuação 300 e 1.150, e isso terminava toda corrida do bot especialista em algum lugar na faixa de 500-900.
- As minas triplicaram por acidente. Estalactites mais esparsas impediam uma regra de posicionamento de vetar minas e moedas, então a contagem de minas triplicou sem que ninguém tivesse pedido. Esse acoplamento importa mais adiante.
A ideia: uma corrida é uma sequência de setores
Em vez de curvas separadas, escrevi um plano. Uma corrida é uma sequência de setores, cada um com sete segundos de duração numa velocidade de referência fixa. O setor 0 é o voo de abertura seguro. Cada setor depois disso introduz exatamente uma coisa nova ou intensifica algo que você já conhece. Um aviso "SETOR n" aparece em cada limite a partir do terceiro, para que o jogador sinta a estrutura.
O comprimento é medido deliberadamente em segundos, não em pixels. A caverna continua acelerando, então um número fixo de pixels do mundo representa cada vez menos tempo conforme a corrida avança. Um setor definido em pixels ficaria cada vez mais curto. Definido em segundos de referência, e reconvertido em posição no mundo integrando a tendência da velocidade de referência, um limite de setor continua sendo uma função pura da posição. Isso importa porque o jogo inteiro precisa permanecer idêntico para cada jogador: escrevi sobre o porquê no post sobre a caverna diária.
| Setor | Pontuação | O que há de novo |
|---|---|---|
| 0 | 0 - 50 | Corredor aberto. Moedas de ouro e ampulheta. |
| 1 | 50 - 110 | Primeiras estalactites, moeda de escudo |
| 2 | 110 - 180 | Munição, ímã |
| 3 | 180 - 250 | Primeira mina (sozinha, centrada), moeda de bomba |
| 4 | 250 - 330 | Rochas |
| 5 | 330 - 410 | Chicanas, surgindo gradualmente |
| 6 | 410 - 490 | Canhões |
| 7 | 490 - 580 | Estalactites caindo |
| 8 | 580 - 680 | Moeda de veneno |
| 9 | 680 - 770 | Moeda de dreno |
| 10+ | 770 em diante | Nada de novo. As taxas continuam crescendo. |
Duas regras decidem a ordem. Ferramentas vêm antes da ameaça a que respondem. A moeda de escudo aparece um setor antes da primeira mina, para que o jogador tenha uma para gastar. E as ferramentas não podem chegar tarde demais, porque as missões diárias ("colete cinco munições", "pegue dois ímãs", "use três bombas") são cumulativas para o dia e precisam continuar acessíveis para jogadores casuais, cujas corridas terminam por volta do segundo ou terceiro setor. Antes de mover qualquer portão de moeda, verifiquei a lista de missões.
Densidades são taxas, não espaçamentos
Dentro de um setor, a densidade de um perigo é uma taxa por segundo de referência: slots de estalactites a dois por segundo no setor 1, crescendo 14% por setor, e suavizando para 8% por setor a partir do setor 8. Minas começam em 0,28 por segundo no setor 3, crescendo 20% por setor e depois 10%. O espaçamento em pixels é derivado da taxa e mantém um piso rígido, então as taxas podem crescer sem limite e toda corrida ainda assim termina. A mina é o que garante isso, porque uma mina pode ficar em qualquer lugar do corredor, então nenhuma largura de corredor torna sobrevivível uma caverna rápida o suficiente.
Cada setor também é um dente de serra. Seu primeiro quinto roda a 55% da densidade alvo, com candidatas a moedas extras como recompensa, e depois sobe de 80% para 115% rumo ao próximo limite. Assim o jogador ganha um respiro no início de cada setor, depois pressão crescente, depois uma ideia nova. Uma subida constante é exaustiva. Uma subida com pausas é algo que as pessoas chamam de justo.
Ajuste pela taxa medida, nunca pelo número de espaçamento. Regras de posicionamento vetam objetos que cairiam em algum lugar injusto, e a fração que vetam muda com a densidade. Reduzir pela metade um valor de espaçamento não dobra os perigos, e esse acoplamento é exatamente como a contagem de minas triplicou da primeira vez. Então toda passagem de ajuste termina com uma repetição que conta os objetos realmente posicionados por segundo real.
Arranhões no casco: perdoando a parede, não o espinho
A segunda grande mudança foi para os iniciantes que morriam na primeira parede. Uma nave agora tem dois arranhões no casco. Um contato com parede consome um, faz a nave quicar de volta para dentro e diz "ARRANHÃO!". Sem nenhum restante, o próximo contato termina a corrida.
Eles começaram como uma ajuda temporária que expirava no setor 3. Assim que toda corrida passou a começar voando para a boca do túnel com paredes letais desde o início, fazia sentido que durassem a corrida toda, e agora duram. O período de graça após um arranhão protege só contra a parede. Estalactites, minas, rochas e tiros continuam letais, e a nave não pisca. Se a graça cobrisse tudo, um bom jogador poderia raspar numa parede de propósito para voar por um campo de estalactites, então a regra é que arranhões perdoam erros de parede e acertos diretos são trabalho do escudo.
Também testei a alternativa óbvia, um escudo grátis no mesmo momento. Ajudou principalmente o nível forte, que o usava para sobreviver a uma estalactite depois, e elevou sua corrida mediana em cerca de 72%. Recompensava uma habilidade que não precisava da ajuda, e eu descartei.
Funcionou?
Os mesmos bots, nas mesmas sementes, antes e depois. "Médio" é o nível cujo comportamento mais se aproximava de jogadores reais na versão anterior.
| Nível do bot | Pontuação mediana | Alcança 100 | Morre a até 8 pontos do momento em que as paredes se tornam letais |
|---|---|---|---|
| Iniciante | 65 → 95 | 4% → 39% | 41% → 3% |
| Médio | 107 → 155 | 32% → 70% | 16% → 2% |
| Bom | 205 → 401 | 80% → 91% | 1% → 1% |
| Especialista | 715 → 928 | 100% | 0% |
A taxa de morte por setor do nível médio se tornou uma rampa (38%, depois 60%, depois 68% nos primeiros três setores de perigo) em vez de um precipício. Essa é a forma que eu queria: uma corrida deveria terminar de forma gradualmente mais provável, não subitamente certa.
O que não corrigiu
Especialistas ainda esbarram numa parede de tempo de reação por volta dos setores 10 e 11, onde 63% e depois 77% das corridas de especialistas terminam. Antes do plano era 100% nos setores 7 e 8, então essa é uma melhoria real, mas não é a rampa suave que os setores anteriores têm. Testei duas correções óbvias: um crescimento mais lento do comprimento das estalactites e uma rampa mais lenta da probabilidade de chicanas. Ambas se mediram como sem efeito. A alavanca que resta é a própria velocidade, e a deixei intocada, porque a velocidade nunca estaciona de propósito, e uma caverna que para de acelerar é uma caverna que parou de pedir algo novo de um jogador muito bom.
O que eu manteria
Dois hábitos. Primeiro, planeje a sequência do que um jogador encontra, não só o quão difícil cada coisa é: uma ideia nova de cada vez se lê como um jogo que te ensina, enquanto cinco de uma vez se lê como um jogo que te sobrecarrega. Segundo, nunca confie numa mudança de dificuldade até que uma simulação te diga onde cada tipo de jogador morre. As duas maiores surpresas aqui, a contagem de minas e as mortes na primeira parede, eram invisíveis jogando e óbvias numa tabela.
Você pode ler a versão voltada ao jogador do mesmo plano no guia de como jogar.