Os meteoros são o elemento central do Navistron — cada um deles é gerado proceduralmente no momento do spawn, garantindo que nenhum meteoro seja visualmente idêntico ao outro. Neste guia, explicamos exatamente como a função spawnMeteor() do código fonte cria cada meteoro, desde a forma poligonal até a velocidade, HP, rotação e efeitos visuais.

Forma Poligonal Irregular: 8 a 12 Vértices

Cada meteoro é um polígono irregular com 8 a 12 vértices. O número exato é calculado como n = 8 + floor(random × 5), o que resulta em formas com 8, 9, 10, 11 ou 12 lados, com probabilidade uniforme.

Os vértices são posicionados em ângulos uniformemente espaçados ao redor do centro, mas cada um tem uma distância aleatória do centro: d = baseR × (0.7 + random × 0.3). Isso significa que cada vértice pode estar entre 70% e 100% do raio base do meteoro, criando contornos irregulares e orgânicos — semelhantes a rochas espaciais reais.

O resultado é que, mesmo que dois meteoros tenham o mesmo tamanho, suas silhuetas serão sempre diferentes. Isso dá ao jogo uma variedade visual infinita sem precisar de sprites ou imagens pré-renderizadas.

Dois Tipos de Meteoros: Grande e Pequeno

Cada meteoro é classificado como grande ou pequeno no momento do spawn. A chance de ser grande depende da dificuldade atual: chance = min(0.25 + (diff - 1) × 0.055, 0.65).

No Tier I (dificuldade 1.0), apenas 25% dos meteoros são grandes. Conforme a dificuldade cresce, essa proporção sobe gradualmente até o cap de 65% — ou seja, nos tiers altos, quase dois em cada três meteoros serão grandes.

As diferenças entre os dois tipos são significativas em todos os atributos:

Tamanho (Raio) dos Meteoros

O raio de cada meteoro é calculado com base no tipo e na dificuldade, com caps máximos para evitar que ocupem a tela inteira:

  • Meteoro grande: min((32 + rand × 20) × min(1 + (diff-1) × 0.10, 2.0), 78) — raio base de 32-52px, escalando até o cap de 78 pixels
  • Meteoro pequeno: min((12 + rand × 18) × min(1 + (diff-1) × 0.07, 1.7), 36) — raio base de 12-30px, escalando até o cap de 36 pixels

No Tier I, os meteoros grandes têm entre 32 e 52 pixels de raio. No Tier VII, eles podem chegar a 78 pixels — ocupando uma porção considerável do canvas de 540 pixels de largura. Os meteoros pequenos ficam entre 12 e 30 pixels no Tier I, crescendo até 36 pixels nos tiers altos.

Velocidade Vertical e Horizontal

Os meteoros não caem apenas para baixo — eles possuem componentes de velocidade vertical (vy) e horizontal (vx), criando trajetórias diagonais imprevisíveis.

A velocidade vertical é a principal: vy = (base + rand) × min(1 + (diff-1) × 0.20, 3.8), onde:

  • Grandes: base de 60 px/s + até 60 px/s de variação → entre 60-120 px/s antes do multiplicador
  • Pequenos: base de 90 px/s + até 110 px/s de variação → entre 90-200 px/s antes do multiplicador

O multiplicador de velocidade sobe com a dificuldade até o cap de 3.8×. No Tier VII com dificuldade alta, um meteoro pequeno pode atingir velocidades acima de 500 px/s — atravessando a tela de 720 pixels em pouco mais de 1 segundo.

A velocidade horizontal (vx) é calculada como vx = (rand - 0.5) × 2 × min(40 + diff × 10, vy × 0.35). Isso cria um drift lateral limitado a no máximo 35% da velocidade vertical, fazendo com que os meteoros se movam diagonalmente sem escapar pela lateral da tela.

HP: Vida dos Meteoros

O HP de cada meteoro é calculado pela fórmula: HP = max(1, round((big ? 3 : 1) × diff)). Isso cria uma escalada dramática:

  • Tier I (diff≈1): pequeno = 1 HP, grande = 3 HP
  • Tier III (diff≈3): pequeno = 3 HP, grande = 9 HP
  • Tier V (diff≈7): pequeno = 7 HP, grande = 21 HP
  • Tier VII (diff≈14+): pequeno = 14+ HP, grande = 42+ HP

Meteoros com mais de 1 HP exibem uma barra de vida acima deles. A cor da barra indica o status: verde acima de 60%, amarelo entre 30-60% e vermelho abaixo de 30%.

Rotação dos Meteoros

Cada meteoro gira sobre seu próprio eixo com velocidade angular: rot = (rand - 0.5) × (2 + diff × 0.25) radianos por segundo. O sinal aleatório faz com que meteoros girem tanto no sentido horário quanto anti-horário.

No Tier I, a rotação máxima é de aproximadamente 1.1 rad/s. No Tier VII com dificuldade alta, a rotação pode ultrapassar 5 rad/s, fazendo os meteoros girarem visivelmente rápido. Isso contribui para a sensação de caos crescente nos tiers avançados.

Posição de Spawn

Os meteoros sempre nascem acima da tela, na coordenada y = -baseR (completamente ocultos). A posição horizontal é: x = baseR + random × (W - baseR × 2), onde W = 540 pixels (largura do canvas).

Essa fórmula garante que o meteoro inteiro esteja dentro dos limites horizontais da tela — ele nunca nasce parcialmente cortado. O padding de baseR em cada lado assegura que meteoros grandes não apareçam com metade do corpo fora da tela.

Frequência de Spawn

O intervalo entre spawns de meteoros segue a fórmula: intervalo = max(0.2, 1.2 / sqrt(diff)) + random × 0.15. No Tier I, um novo meteoro aparece a cada ~1.2 segudos. No Tier VII, o intervalo mínimo é 0.2 segundo, ou seja, 5 meteoros por segundo.

Além disso, em dificuldades acima de 4 há 25% de chance de spawnar 2 meteoros de uma vez. Acima de 8, essa chance sobe para 45%. Combinado ao intervalo curto, os tiers altos produzem uma verdadeira chuva de meteoros.

Efeito Visual: Heat e Cores

Os meteoros do Navistron não são simples polígonos cinza — eles possuem um sistema visual sofisticado que muda com a dificuldade.

O heat (aquecimento) é calculado como heat = min((diff - 1) / 9, 1). No Tier I, heat é 0 e os meteoros têm tons acastanhados (RGB ~154, 110, 80). Conforme a dificuldade sobe, os meteoros ficam progressivamente mais avermelhados e brilhantes, com hue indo de 20 (amarelado) para 0 (vermelho puro).

A renderização inclui: uma aura radiante que se intensifica com o heat, um preenchimento com gradiente de claro (iluminação superior esquerda) para escuro, contorno que engrossa com o heat (de 1.5 para 3.0 pixels), e crateras renderizadas como elipses semitransparentes (4 crateras nos grandes, 2 nos pequenos).

Resumo: Grande vs Pequeno

  • Raio: grande 32-78px, pequeno 12-36px
  • Velocidade base: grande 60-120 px/s, pequeno 90-200 px/s
  • HP base: grande 3× dificuldade, pequeno 1× dificuldade
  • Pontos: grande 3× mais que pequeno (ver sistema de pontuação)
  • Crateras: grande 4, pequeno 2
  • Chance de spawn: de 25% a 65% conforme a dificuldade

Cada meteoro é único — gerado com forma, tamanho, velocidade e rotação aleatórias. Jogue Navistron e observe como os meteoros mudam conforme você sobe de tier!

FAQ

Os meteoros do Navistron são sprites ou formas geradas?

São formas geradas proceduralmente. Cada meteoro é um polígono irregular com 8 a 12 vértices, criado matematicamente no momento do spawn. Não há nenhuma imagem ou sprite envolvido.

Os meteoros se movem diagonalmente?

Sim. Cada meteoro possui velocidade vertical (principal) e horizontal (drift), fazendo com que se movam em trajetórias diagonais imprevisíveis. O drift lateral é limitado a 35% da velocidade vertical.

Por que os meteoros ficam vermelhos nos tiers altos?

O efeito heat (aquecimento) aumenta com a dificuldade, mudando a cor dos meteoros de acastanhado para vermelho brilhante. É um indicador visual de que a dificuldade está Alta.

Os meteoros podem ter mais de 40 HP?

Sim. No Tier VII, meteoros grandes podem ter 42+ HP. A barra de vida acima deles mostra o HP restante com cores: verde (>60%), amarelo (30-60%) e vermelho (<30%).

Quantos meteoros aparecem por segundo nos tiers altos?

No Tier VII, até 5 meteoros por segundo (intervalo mínimo de 0.2s), com 45% de chance de spawnar 2 de uma vez. Isso pode resultar em quase 10 meteoros por segundo na tela.