Um Inimigo Que Pisca e uma Estrada Que Bifurca
Desde a ultima leva de correcoes pequenas o board do Trello mostrou pra que veio: dois dias, uma pilha comprida de cartoes e, dessa vez, alguns deles sao brinquedo novo de verdade em vez de so tapar buraco. Tem um inimigo que teleporta pra fora da sua mira, um mapa que abre em duas estradas e deixa cada bicho escolher, um menu de pausa com sliders de volume e uma tela de cartas que finalmente parece que foi feita de proposito. Segue a pilha inteira, comecando pelo que e mais legal.
O hopper parou de jogar limpo
O hopper piscava num timer bobo: de N em N segundos ele pulava pra frente, voce estivesse atirando nele ou nao. Funcionava, mas nunca parecia reagir a voce. Agora reage. O hopper teleporta 2.5 unidades pra frente na trilha no instante em que leva qualquer dano, e depois precisa de 3 segundos pra recarregar antes de repetir. Ele nasce com a habilidade pronta, entao o primeiro tiro sempre faz ele piscar.
A parte gostosa e de onde o teleporte dispara. Todo ponto de dano no jogo ja passa por um unico pipeline dealDamage, entao o blink so se pendura ali num check tryHopperBlink: levou hit, pula. Ou seja, funciona pra toda fonte de dano automaticamente, splash de canhao, tick de veneno, arco de raio, sem nenhum desses sistemas saber que o hopper existe. A recarga anda no mesmo campo auxTimer que o brood usa pra botar ovo, entao zero estado novo. O resultado e um inimigo que ignora seu tiro de abertura e corre pra saida, e o counter e real: derruba ele antes da janela de 3 segundos resetar, ou traz algo que nao liga pra onde ele esta.
Isso ainda dedurou um bug lindinho no focus beam. O feixe carrega quanto mais tempo fica travado num alvo, e um hopper piscando no meio da carga obviamente deveria quebrar o lock. So que nao quebrava: o feixe seguia feliz carregando no vazio. Agora o teleporte reseta a carga, que e exatamente o trade-off que o hopper deveria criar.
Uma estrada que bifurca, e inimigos que escolhem
Agora tem uma fase onde a trilha se divide em duas. Os inimigos descem a estrada compartilhada, chegam na bifurcacao e se comprometem com o ramo de cima ou de baixo por um peso. O bug interessante aqui era de honestidade. No comeco cada inimigo escolhia o ramo no spawn, la no inicio da estrada, e o indicadorzinho de rota na bifurcacao mostrava... algo que nao batia, porque os pesos podiam mudar entre nascer e chegar la.
Agora a decisao acontece na propria bifurcacao, usando os pesos do momento em que o bicho realmente chega no ponto de divisao. E o indicador sao duas bolinhas paradas em cima do fork, uma por ramo, coloridas pra mostrar pra onde o fluxo vai. O que voce ve no cruzamento agora e literalmente a decisao que cada inimigo esta prestes a tomar. UI honesta ganha de UI esperta. (Ja que eu estava ali, o splitter tambem aprendeu a soltar os filhotes no seu proprio ramo em vez de sempre jogar tudo na trilha 0, aquele tipo de bug que so existe depois que um mapa tem mais de um caminho.)
Pausa, e uma tela de opcoes de verdade
Agora da pra pausar. Aperta ESC e a run congela numa tela de pausa decente com tres botoes: Resume, Options e Give Up. O Give Up encerra a run limpo, como uma derrota, entao voce ainda embolsa as moedas por onda que ganhou e nada que nao ganhou.
Atras do botao Options, tanto na pausa quanto no menu principal, finalmente tem uma tela de configuracoes de verdade: dois sliders de volume (musica e SFX, independentes) e um toggle de fullscreen. Os volumes sao multiplicadores de 0 a 1 salvos junto com o resto do progresso; SFX escala por som, a musica anda num gain node ao vivo, entao arrastar o slider ja soa na hora. O fullscreen so espelha e alterna o estado da propria engine. Nada disso e glamouroso e tudo isso e o basico que um jogo precisa ter antes de mostrar pra alguem.
As cartas cresceram
As cartas de level-up e de compra ganharam um trato de verdade. Agora elas tingem pela raridade (branco, azul, roxo, dourado) e deixam explicito o que a escolha faz: LV 4 -> 5 com o valor antes e depois do stat embaixo, entao voce escolhe um numero concreto em vez de um feeling. Comprar um unlock mostra um cartao de confirmacao de compra compartilhado que abre o preco em ouro, prata e bronze, sem misterio sobre o que voce esta gastando.
Teve tambem uma quantidade vergonhosa de mexerica no feel das cartas. Elas tem uma inclinacao 3D sutil que segue o cursor, e eu vivia passando do ponto: primeiro Michroma pra fonte, depois VT323, ate finalmente Roboto Mono; a inclinacao foi suavizada, e suavizada de novo (maxTilt 0.09 pra 0.05), o hover de escala foi de 1.02 pra 1.07, o lean cortado pela metade. Essa e a parte de game feel que ninguem consegue especificar antes, voce so empurra um numero, olha, e empurra de volta. Todos os numeros na tela agora passam por um unico fmtNum, entao um valor fica igual num cartao, num rodape de stat e num tooltip.
Debaixo desses numeros, a conta dos upgrades foi refeita tambem. Os upgrades globais empilhavam deltas por nivel, e os multiplicativos (slow, raio de coleta, splash, ganho de xp) cresciam exponencialmente e desandavam em nivel alto. Agora usam a mesma interpolacao linear limpa de level1 pra level100 que as torres ja usam, entao um nivel e uma reta entre dois extremos autorados. O balance de nivel baixo continua intocado; so a ponta alta desgovernada foi arrumada.
Torres que anotam o placar
Toda torre agora lembra do que fez. Durante a run cada torre colocada conta seus tiros, dano e kills (o kill vai pra torre que deu o golpe final). Quando a run acaba isso e somado por tipo de torre e mesclado no save, entao a tela de UNLOCK mostra um rodape vitalicio em cada torre: dano total, kills, tiros, vezes colocada e em quantas runs distintas voce ja usou aquilo. O cartao de inspecao no jogo mostra a versao ao vivo da torre selecionada.
A toolbar ficou mais esperta junto. Cada botao agora mostra o nivel atual daquele tipo de torre, e clicar num botao abre um menu por tipo: nivel, alcance, velocidade, dano e os stats agregados de todas as instancias que voce tem no campo, com botoes de mira e um botao PLACE. Definir um modo de mira ali aplica em todas as torres daquele tipo de uma vez; o botao so acende quando todas realmente concordam. E uma torre nova agora herda o modo de mira compartilhado do seu tipo ao ser colocada, entao voce nao fica reconfigurando toda santa vez.
A varrida de determinismo
Uma run tem uma seed, e algumas coisas estavam trapaceando ela na surdina. A tela de escolha de torre rolava tres opcoes novas toda vez que voce abria, entao dava pra abrir, dar ESC sem gastar, reabrir, e ficar pescando a torre que voce queria. Agora a rolagem e deterministica: semeada pela seed da run mais um salt por torre que so avanca quando voce de fato consome uma escolha (gasta uma torre ou um reroll), nunca ao abrir. Reabriu depois do ESC e voce ve exatamente as mesmas tres. O reroll ainda funciona, porque reroll e consumo de verdade. O servidor autoritativo faz a rolagem no co-op, entao a correcao vale online tambem.
E a pilha de coisa pequena
O resto, rapidinho:
- O gramado ganhou vida. O decor estatico saiu, trocado por tufos de grama espalhados proceduralmente que balancam a posicao e ordenam por profundidade por linha, entao cenario mais perto desenha por cima do mais longe, e o espalhamento inteiro varia com a seed da run. Os visuais das fases levaram um tune-up geral no mesmo passo.
- Os orbs de XP ficam no campo. Orb que caia pra fora do mapa agora gruda na borda, e eles sao presos a area construivel em vez do grid cru, entao voce nunca precisa perseguir orb parede adentro.
- Colocar torre congela a sim no single player agora, entao da pra alinhar o tiro sem inimigo passando voando no meio da decisao.
- Os precos de unlock das fases sao data-driven, saidos de uma formula e postos no JSON da fase como valores de bronze, e a compra agora gasta bronze.
- O hotspot do cursor finalmente fica na ponta da setinha em vez de vagamente perto dela, e a tela de selecao de medalha mostra qual fase voce escolheu de verdade.
Dois dias, um par de mecanicas genuinamente novas, e um jogo que comeca a parecer menos protopito e mais uma coisa com menus, memoria e educacao. O board ainda tem cartao. Voltando a comprar.