Doug's Game Dev Log
Sobre
EN|PT-BR
2026-08-23

O Nível Mexe em Só Três Números

Lá quando toda torre aprendeu a subir de nível de 1 a 100, eu escrevi dois blocos de stats por torre e deixei uma reta preencher os outros 98. Bom sistema. Mas ele escalava tudo na surdina: uma torre Frost de nível alto deixava mais lento, uma Tesla de nível alto dividia mais generosamente, um dardo de veneno de nível alto envenenava por mais tempo, tudo como efeito colateral da mesma curva de nível. Essa semana eu tracei uma linha firme no meio disso, adicionei uma família inteira de upgrades, larguei uma tempestade de areia num dos mapas e reconstruí a tela de seleção de fase. Uma semana de sacola cheia.

O nível escala três números, mais nada

A regra agora: o nível de uma torre escala só dano, alcance e intervalo. Esses três, e só esses três. Os dois blocos de ponta que a torre escreve, level1 e level100, guardam exatamente esses stats e a interpolação linear preenche o resto, igual antes.

Todo o resto que uma torre carrega, a personalidade dela de verdade, saiu pra um towerEffects.json separado: raio de splash, força da lentidão, DPS de fogo, duração do veneno, número de ricochetes, o número de alvos e a eficiência de divisão da Tesla, o limiar de execução, os multiplicadores de aura, tudo. Esses são fixos entre níveis. Uma torre Frost de nível 100 deixa lento exatamente na mesma medida que uma de nível 1; o que subir de nível compra é mais dano, mais alcance e um intervalo mais rápido.

Por que se dar o trabalho? Porque isso faz os dois eixos significarem coisas diferentes. O nível é o eixo "deixa essa torre maior". Os upgrades são o eixo "deixa essa torre especial". Antes, os dois estavam embolados: você não conseguia empurrar o poder bruto de uma torre sem também inflar a lentidão ou o fogo dela, o que fazia do balanceamento um jogo de adivinhação. Agora o único jeito de crescer um efeito é escolher a carta de upgrade correspondente, que é uma escolha deliberada que você gasta um level-up. O painel de inspeção e a carta de upgrade se resolvem a partir disso: a carta só mostra dano, alcance e cadência mudando por nível, e os stats especiais aparecem no painel de inspeção, onde é o lugar deles.

A parte boa é o quão pouco quebrou. O towerLevelDef interpola os três stats centrais e depois mescla os efeitos fixos por cima, devolvendo a mesma definição completa que todo sistema já lia. Todo lvl.splashRadius e lvl.slowPower no código continuou funcionando sem toque; eles só leem uma constante agora em vez de um valor interpolado.

Eletricidade: a Tesla finalmente tem os próprios upgrades

Com os efeitos congelados no nível da torre, o único jeito de crescer o zap em estrela da Tesla são upgrades, então adicionei dois, escritos em torno de "eletricidade" em vez da torre:

  • Chain Lightning aumenta o número de inimigos que cada tiro alcança de uma vez.
  • Superconductor eleva a eficiência da divisão, então o dano repartido entre esses alvos mantém mais do valor por inimigo em vez de se diluir.

Os dois são cartas de nível, os dois custam um pouco de ouro pra desbloquear, e os dois são o único jeito de empurrar a Tesla além dos 3 alvos base e da divisão pareja. O número de raios desenhado na tela lê do mesmo valor, então uma Tesla melhorada visivelmente joga mais relâmpago. Essa é exatamente a forma que eu quero que toda torre acabe tendo: uma base modesta e alguns upgrades que definem como ela cresce.

Já que eu estava nas flags de inimigo, também adicionei bounceImmune: um inimigo com ela absorve um disco de ricochete em vez de repassar. O disco ainda dá o dano, ele só para ali em vez de continuar a corrente, então um inimigo imune bem posicionado pode ser uma parede que mata todo o truque de um build de Ricochet.

Sirocco: um mapa que te cega

Uma das fases, a Sirocco, ganhou uma tempestade de areia de verdade. Uma parede de poeira varre da esquerda, segura cobrindo a tela inteira por oito segundos, depois desliza pra fora pela direita, num ciclo repetido com uma contagem no canto superior direito dizendo quando a próxima chega e quanto a atual dura. Enquanto a nuvem está sobre uma torre, o alcance dela é cortado, então a tempestade é um evento tático de verdade, não só decoração: você posiciona pensando na tempestade ou fica cego e com pouco alcance por um terço da luta.

Fazer ela parecer clima em vez de um retângulo cinza levou algumas passadas. As bordas da frente e de trás ondulam numa onda em "S", cada linha deslocada um pouco, então a frente parece areia soprando em vez de uma barra deslizando. A opacidade da poeira anda num envelope triangular, fraca quando chega, mais densa no ponto médio, fraca de novo quando vai embora, tudo a partir de um helper puro minúsculo, o stormHaze. E a câmera dá um balanço suave feito bandeira ao vento sob a nuvem, via um novo hook de fase cameraOffset, então a tela inteira respira com o vento. O feedback de playtest cortou o hold de dez pra oito segundos e suavizou as bordas; agora lê muito melhor como clima de verdade.

O Endless nunca fica sem bosses

O modo Endless costumava ficar quieto de bosses assim que você passava a última wave de boss escrita da fase. Agora ele continua jogando, numa cadência decrescente: 25 waves depois da última, depois 17, 14, 12, e apertando até um boss a cada 2 waves pra sempre. A escolha é um boss aleatório do RNG com seed, então o co-op fica determinístico e todo mundo enfrenta o mesmo monstro. Runs profundas de Endless finalmente parecem um cerco que escala em vez de um desfile infinito de normies.

Seleção de fase, refeita

A tela de seleção de fase foi achatada em linhas limpas: nome, medalhas na linha, wave máxima alcançada e um único botão PLAY ou BUY no fim. Fases trancadas abrem uma carta de confirmação de compra que deixa o BUY cinza quando você não pode pagar (clicar no botão morto toca um som suave de "negado" e mantém a carta aberta, em vez de não fazer nada em silêncio). A seleção de dificuldade virou uma carta modal sobre a lista de fases escurecida: uma grade 2x2 de níveis de medalha com ícones acesos e apagados e fundos ativos de metal versus diamante. O Endless agora fica atrás da medalha de ouro feito todo outro nível, então é uma coisa que você conquista em vez de uma coisa que só está lá.

O HUD ganhou algumas linhas pequenas de stats de wave no canto inferior direito, acima dos botões da barra: quantos inimigos restam na wave ativa, ou uma contagem pra próxima wave quando a atual é limpa, mais uma segunda linha que só aparece quando mais de uma wave roda ao mesmo tempo. A contagem é um helper puro pequeno; o HUD só desenha. E as várias contagens de eventos de fase foram todas pro mesmo canto inferior direito pra que o olho tenha um lugar só pra checar "o que vem a seguir".

Três eixos limpos e separados, uma família de torre que finalmente tem os próprios upgrades, um mapa que revida e um menu que se lê num relance. De volta pro quadro.