← Todos os posts

Pew pew, em oito direções

Mira, armas como dados, tiros que nunca atravessam paredes e um script que acha a ponta do blaster em cada quadro.

Ouça este post

Narrado com a voz do Dodz, clonada por IA

0:00 / 0:00
O Pew atirando com o Blaster na sala de testes cinza, ao lado de uma cápsula de arma flutuando.

O jogo se chama PewRun. O "pew" tinha que ser gostoso.

Oito direções e algumas regras

O Pew mira em oito direções. A pose depende de onde ele está:

  • No chão, cima + lado ou baixo + lado faz ele parar e mirar na diagonal. Não existe animação de correr mirando na diagonal, e parado fica mais legível de qualquer jeito.
  • Só baixo, no chão, é agachar, ainda atirando para a frente.
  • Direto para baixo só funciona no ar.
  • Ctrl (ou o botão direito do mouse) segura o Pew no lugar, para mirar sem andar.

Experimente aqui. Aponte dentro da caixa para mirar e clique para atirar:

aim_forward
Aponte na caixa para mirar e clique para atirar. Direto para baixo só funciona no ar.

Armas são arquivos

Cada arma é um pequeno arquivo de recurso, um WeaponData: com que frequência atira, a velocidade dos tiros, quanto tempo eles duram, dano, quantos tiros por disparo, o leque, a cor, o som e a cor da cápsula. Arma nova é arquivo novo, não código novo.

BlasterEspalhador
Intervalo entre tiros0,13 s0,24 s
Velocidade do tiro1900 px/s1600 px/s
Duração do tiro0,9 s0,42 s
Tiros por disparo15
Leque0°40°

Segurar o botão dispara na cadência da arma. O Blaster é a arma inicial, com munição infinita; o Espalhador troca alcance por um leque de cinco tiros.

Achando o cano

O tiro tem que sair da ponta do blaster, e o blaster está num lugar diferente em cada pose e em cada quadro. Marcar esses pontos à mão, quadro a quadro, parecia um castigo.

Então o script que monta os sprites acha os pontos sozinho. Em cada quadro de tiro, ele procura os pixels laranja brilhantes do blaster e escolhe o que está mais longe na direção da mira. Essa é a ponta da arma. As posições vão para um JSON ao lado do atlas, e o jogo lê esse arquivo na hora de atirar. Este site lê o mesmo arquivo: é por isso que os tiros da demo acima saem alinhados com a arma.

Tiros que não trapaceiam

Um tiro rápido pode andar mais num quadro do que a largura de uma parede fina, e passar direto por ela. Por isso, a cada quadro, cada tiro lança um raio de onde estava até onde vai, e para na primeira coisa que encontra. O que for atingido recebe uma chamada de take_damage com o dano, o ponto do impacto e a direção.

A demo de tiro na sala de testes: mira, rajadas, uma cápsula de arma e alvos quebrando.

Coisas para acertar

Dois objetos saíram desta etapa: uma lata de refrigerante e uma caixa de fósforos. Quando acertados, eles piscam e tremem; quando a vida acaba, viram destroços e voltam alguns segundos depois. Também são sólidos, então o Pew pode subir neles. E há uma cápsula de arma flutuando, que dá uma arma ao Pew quando ele encosta.

Cada tiro tem um clarão na ponta da arma, um pequeno recuo no sprite e um som gerado na ElevenLabs, tocado com uma leve variação de tom para a rajada não soar como uma metralhadora de cópias.

A seguir: o primeiro trecho de verdade do Capítulo 1, onde tudo isso encontra chuva, luz e água. A sarjeta está molhada.