Toda Torre Ganhou uma Cara e a Minhoca Ganhou um Nome
Desde o inimigo que pisca e a estrada que bifurca o jogo parou de parecer um spritesheet preso com fita. As torres ganharam arte de verdade, os inimigos ganharam arte de verdade, a Tesla ganhou um jeito novo inteiro de machucar as coisas, um boss ganhou nome e um corpo feito de segmentos, e os inimigos aprenderam a se apresentar quando você cutuca eles. Cinco dias, começando pelo que é mais legal.
A Tesla virou uma estrela
A Tesla disparava raio em cadeia: um relâmpago que pulava de inimigo em inimigo, perdendo força a cada salto. Funcionava, mas era só uma versão pior de tudo que já existia. Agora ela é uma estrela zapeadora. Cada tiro atinge vários inimigos no alcance ao mesmo tempo, um relâmpago reto da torre até cada um, e o número de alvos sobe com o nível (3 no nível 1, até 10 no nível 100).
A parte interessante é como o dano se divide. Um "divide pelo número de alvos" ingênuo faz a Tesla ficar pior quanto mais ela acerta, o que é ao contrário. Então a divisão fica mais generosa com o nível. Em nível baixo o dano é repartido igual entre os inimigos atingidos; conforme a torre sobe, um valor splitEfficiency desliza de 0 pra 1, e no topo cada alvo leva o dano base inteiro, sem penalidade nenhuma. Um alvo sozinho sempre come o golpe cheio. Nunca passa do base. O resultado é uma torre que começa cócegas em multidão e cresce até limpar a sala.
Em cima disso, todo inimigo que a estrela acerta fica atordoado no lugar, de leve no nível 1 e por quase dois segundos inteiros no nível 100. O stun agora é um efeito de verdade, com uma pegadinha: cada inimigo só pode ser atordoado de novo depois de um cooldown de dois segundos, então você não trava um alvo pra sempre spammando zap. Dentro dessa janela os raios ainda dão dano, só não recongelam. Bosses ignoram stun totalmente. Esse modelo por inimigo de "você já resistiu a isso há pouco" é a semente de como veneno, fogo e frost vão acabar funcionando também.
E agora parece um choque. A Tesla tem arte dedicada com frame de disparo, e o relâmpago é um sprite animado de 16 frames que estica da torre até cada inimigo atingido, mantendo a proporção, ciclando em algumas centenas de milissegundos. Um inimigo morto ainda ancora o relâmpago no ponto onde caiu, então um tiro letal pisca direito em vez do relâmpago sumir junto com o corpo. Esse último foi um ajuste sutil: o efeito é re-derivado do frame anterior à resolução do tiro, então alvos mortos ainda ganham o raio deles.
Toda torre ganhou uma cara
Até agora a maioria das torres dividia um único spritesheet placeholder: uma base e uma torretinha. Agora tem um sistema de sprite por torre orientado a dados, e o Canhão, a Metralhadora, o Sniper, o Frost, o Ricochete e a Tesla têm cada um a sua arte dedicada. Cada um é uma folha 128x64 com um frame parado e um frame disparando (o de disparo aparece por 250ms depois de cada tiro) mais o próprio projétil. A torre inteira gira pra mirar no alvo, menos as marcadas como fixed (Frost e Tesla) que ficam paradas e nunca rodam, porque um canhão de gelo girando ficava ridículo.
Fazer a arte mirar certo exigiu um angleOffset por sprite: a arte é desenhada virada pra direita, e um offset de -PI/2 alinha "direita" com pra onde a torre está de fato apontando. Torres sem arte dedicada ainda caem no placeholder antigo, então nada quebrou enquanto o conjunto ia sendo preenchido.
Os inimigos ganharam o mesmo tratamento. O hopper tem uma folha direcional (um frame por direção) e o renderer já escolhia a linha pela direção do movimento, então ligar ele não exigiu nenhuma mudança de desenho, só a folha e uma entrada no manifesto. O berserker ganhou duas folhas, calmo e enfurecido, e troca pra brava no instante em que cai abaixo do limiar de fúria, reaproveitando o check isBerserk que já existia. Teve a comédia de sempre de acertar a ordem dos frames (as folhas são baixo/direita/esquerda/cima, não o baixo/esquerda/direita/cima que eu assumi, então o hopper deu uma moon-walkada rápida).
M. Nhoca, uma minhoca com nome
O boss Wyrm foi refeito numa minhoca segmentada com arte de cabeça e corpo, e um nome: M. Nhoca. O segmento da frente desenha com a folha da cabeça, todos os outros com a folha do corpo, e o contorno branco antigo que marcava o segmento danificável sumiu, a arte carrega essa leitura agora. Só a cabeça leva dano, mas os segmentos do corpo continuam miráveis, então as suas torres ainda apontam e atiram na minhoca inteira em vez de ignorar a maior parte dela.
A M. Nhoca também é imune a todo efeito: frost, veneno, confusão, fogo, stun, tudo escorrega. Isso é uma flag nova effectImmune na definição do inimigo, e ela existe justamente pra um boss poder ser uma corrida pura de dano em vez de algo que você trapaceia com um campo de lentidão. Bosses agora carregam um nome de exibição opcional também, então a barra de vida do HUD e o bestiário podem chamar de M. Nhoca em vez de "wyrm".
O Aegis, um boss que castiga spam
O outro boss novo é o Escudo Dourado, o Aegis, e ele é o inimigo mais interessante do jogo pra montar estratégia contra, porque inverte a lógica inteira de DPS. Na maior parte de um tower defense, mais acertos por segundo é sempre melhor. O Aegis faz disso uma armadilha. Toda vez que ele leva um hit, ele ergue um escudo por um segundo inteiro e bloqueia todo dano recebido durante essa janela, dano-por-tempo incluso. Só o único acerto mais forte de cada segundo realmente entra. Uma parede de torres rápidas e fracas despeja fogo nele e não faz quase nada, porque o primeiro projétil ergue o escudo e todo projétil depois dele naquele segundo ricocheteia.
Então o Aegis é o espelho exato do Juggernaut. O Juggernaut limita cada acerto a uma fração mínima do seu enorme HP, então ele quer ser cocado até a morte por torres rápidas e fracas e ignora tirão único grande. O Aegis quer o oposto: ele come um acerto por segundo aconteça o que acontecer, então a resposta é fazer esse único acerto ser enorme. Empilha Snipers, Morteiros e Canhões, as maiores fontes de tiro único que você tiver, e cada segundo que conecta arranca um pedação. Traz uma metralhadora e você só está alimentando o escudo dele.
Tem uma dica gostosa embutida no movimento. O Aegis avança correndo enquanto exposto e rasteja enquanto escudado (um quarto da velocidade no instante em que o escudo sobe), então o boss visivelmente tranca: uma arrancada, um hit, e aí ele se encolhe e desacelera pra um passo de tartaruga por um segundo antes de disparar de novo. Dá pra ler o estado do escudo do outro lado do mapa só olhando quão rápido ele está indo. Ele tem um HP fundo de 10.000 e, como os outros bosses, solta uma fonte de vinte orbs de XP quando finalmente cai. Uma bolha dourada pulsante mostra a janela de escudo enquanto ela está ativa. Entre o Juggernaut e o Aegis o jogo agora tem dois bosses que castigam erros opostos, que é exatamente o tipo de pressão de "não existe uma única torre melhor" que eu quero.
O ricochete parou de ser educado
O ricochete passou por dois reworks num dia. A primeira versão ricocheteava pra trás pela trilha com queda de dano 1/n. O playtest disse que só pra trás não era divertido, então agora os ricochetes escolhem um inimigo aleatório em qualquer direção dentro do alcance, nunca acertando o mesmo inimigo duas vezes, e o dano sobe em vez de cair: cada ricochete bate mais forte que o anterior (1x, 1.5x, 2x, e assim por diante). A torre é de propósito fraca no primeiro acerto; encadear ricochetes é a recompensa toda. O número de ricochetes escala com o nível, e a parte fracionária é a probabilidade de um ricochete extra, resolvida com uma única rolagem de dado semeada por tiro.
Agora você escolhe sua abertura
As runs não te dão mais uma metralhadora de graça. No começo da run você ganha uma escolha de torre de abertura: a mesma tela de três opções da fila de torres do jogo, então você escolhe sua primeira torre e pode construir aberturas diferentes em vez de sempre começar pela metralhadora. A toolbar fica vazia até você escolher. O co-op dá a mesma escolha de abertura pra cada jogador, incluindo quem entra no meio da run.
E colocar ficou mais ágil. Clicar num cartão de torre que você tem agora arma a colocação na hora, sem botão PLACE, sem menu deslizando por cima do mapa. Clicar num cartão que você tem zero abre o menu de info e mira, então o botão faz o óbvio nos dois casos.
Inimigos que respondem
Esse é puro prazer de clicar. Clica em qualquer inimigo e ele solta um balão de fala branco que segue ele pelo campo e se apresenta: o tipo, a onda em que nasceu, o HP máximo e atual, as torres que acertaram nele, e quanto falta pra ele chegar. Clica em qualquer outro lugar pra fechar. A parte do "quem me acertou" é rastreada como um bitmask no inimigo, definido no pipeline de dano compartilhado e replicado no co-op, então é honesto até online.
Sorte, refeita em duas metades
A sorte parou de ser um stat misterioso e virou dois upgrades que alimentam um efeito: elevar a raridade das suas cartas de level-up. Tem um permanente (Bênção da Fortuna) e um por run (Estrela da Sorte), e a sorte combinada é a média dos dois, então você só chega em lendário garantido quando os dois estão no máximo. Conforme a sorte sobe, as chances de raridade drenam pra cima pelos níveis em três fases limpas: comum esvazia primeiro, depois raro, depois épico, até toda carta oferecida ser lendária. A curva inteira é contínua e sempre soma um conjunto válido de chances.
A pilha de quality-of-life
O resto, rapidinho:
- Duas checkboxes AUTO. Uma encaixada no botão de próxima onda enfileira a onda seguinte no instante em que o cooldown acaba. Uma no botão da fila de torres abre a tela de escolha no momento em que uma torre fica disponível (ligada por padrão). As duas sincronizam no co-op e rodam headless no servidor, e as duas podem ser alternadas a qualquer hora, até com a fila vazia.
- O painel de inspeção virou uma tabela de verdade. Ele crescia pra cima com um bloco de baixo preso por offsets mágicos, então uma torre com vários poderes produzia texto por cima de texto. Agora é uma tabela de duas colunas de verdade (rótulos à esquerda, valores à direita) com uma altura que deriva de quantos stats ela realmente tem, compartilhada entre o menu da torre clicada e o menu de tipo da toolbar.
- Os stats especiais aparecem em todo lugar. Os poderes de cada torre (lentidão, queimadura, veneno, stun, limiar de execução, ricochetes, buffs de aura) agora aparecem tanto no cartão de upgrade quanto no painel de inspeção, escalados por nível, então você vê exatamente o que uma escolha muda.
- A UI parou de ficar borrada em telas de alta resolução e com escala do Windows: o canvas agora é dimensionado pelo span real de pixels físicos da janela em vez de um 1080p fixo que o navegador esticava. Os efeitos de grão de filme e aberração cromática foram zerados no mesmo passo.
- O áudio virou procedural. Todos os sons de gameplay (tiros por torre, impactos, morte de inimigo, coleta de XP, vida perdida) saíram de arquivos wav embutidos pra arrays procedurais de ZzFX, e um feedback suave de hover e clique foi adicionado na UI.
Cinco dias, e o jogo finalmente parece ele mesmo: torres com cara, uma Tesla que limpa a sala, uma minhoca com nome, e inimigos que dão oi quando você clica neles. Voltando pro board.