Flashteroid Shooter
- Wagner Ferreira
- 8 de jan. de 2016
- 3 min de leitura
Atualizado: 30 de out. de 2019
No semestre passado uma das matérias que estudei era focada em programação e animação. Como não podia deixar de ser, a matéria foi estudada usando o Flash como plataforma.
Normalmente digo que Flash é uma plataforma morta e não faz sentido usá-la, mas só de forma profissional, por que no estudo para iniciantes essa ainda é uma das melhores ferramentas. Muitas das engines atuais são muito complexas ou limitadas, o que dificulta o aprendizado, já o Flash é uma plataforma simples com animação e programação, por isso o desenvolvedor precisa aprender e entender os conceitos mais básico que normalmente já estão prontos em engines mais complexas.
Importante: Atualmente (2019) o Adobe Flash se tornou o Adobe Animate, dando ênfase a criação de projetos com WebGL, a nova plataforma web universal.
Além disso surgiram (ou só descobri recentemente 😅) várias novas plataformas simples de desenvolvimento para jogos como Godot, Monogame e inúmeros frameworks de Javascript.

O Jogo
Para ter acesso ao projeto basta clicar no botão ao lado. O Projeto contém o código fonte, o jogo compilado, as imagens originais e um arquivo de texto com as fontes externas usadas.
O jogo foi feito no Flash Professional CC 2015 e é recomendado executá-lo na versão mais atual do Flash Player, algumas versões antigas são incompatíveis com o jogo.
O Projeto
O projeto final da matéria que citei foi fazer um jogo completo em Flash. Claro que completo simplesmente quer dizer que ele esteja funcionando e tenha início, meio e fim, não vá imaginando um jogo pronto para venda. Para esse projeto decidi então recriar um jogo similar aos clássicos Asteroid Shooters com o básico de uma nave para controlar e asteroides para atirar.
Núcleo do Jogo
Durante o desenvolvimento precisei recriar alguns conceitos de engines mais avançadas como o DeltaTime e Hitboxes.
O DeltaTime foi fácil, bastou aplicar o conceito de diferença de tempo entre dois frames e já estava pronto, depois foi só necessário usar como multiplicador para os valores necessários.
O caso do Hitbox não ficou tão perfeito já que o detector de colisão do Flash trabalha usando os limites de tamanho dos objetos, isso quer dizer que mesmo um círculo vai ser detectado como um retângulo baseado nos limites do objeto. Até mesmo um retângulo pode dar trabalho se ele for rotacionado já que o sistema vai calcular baseado nos limites do objeto. No final consegui uma parte do resultado esperado, fazendo o sistema só detectar colisões com objetos que tenham hitboxes e melhorei a precisão usando múltiplas delas em um mesmo objeto, como foi o caso da nave.
Jogabilidade
Para a jogabilidade fiz algo interessante, usei só um objeto para o asteroide mas fiz com que o layout, tamanho e rotação fossem aleatórios, juntamente com isso fiz a velocidade, resistência e delay de respawn seguissem conforme o tamanho de cada asteroide de forma independente.
A nave foi bem simples, adicionei limites na tela para evitar que ela desaparecesse ou fosse muito para a frente e fiz com que ela atirasse o laser.
O plano de fundo traz um ponto interessante do projeto. Como um plano estático seria muito chato, decidi adicionar uma lua se movendo lentamente, passando a sensação de que o jogador realmente está se movendo pelo espaço.
No menu inicial fiz com que o jogo rodasse no plano de fundo sem a nave, dando uma sensação interessante ao jogador quando abre a primeira vez.
Créditos
Minha especialidade é programação então não vá esperando que a arte e música do jogo tenham sido feitas por mim.
Todas as imagens dos objetos foram encontradas na internet em sites de outros tutoriais ou em sites de compartilhamento de cliparts.
A música de fundo faz parte das músicas de exemplo que vêm junto do programa SunVox.
Para quem tiver interesse, junto com o projeto está um arquivo de texto que traz os links ou referências de origem de cada imagem e som utilizados.
Comments