Um dos desafios de desenvolvimento de um jogo, é dar diferenciações aos personagem, fases, e inimigos, para conseguirmos isso e manter o trabalho programável, temos que agrupar objetos por características parecidas, e então dentro desses grupos individualizar esses objetos diferenciando parâmetros, na programação isso basicamente (e muito basicamente mesmo) seria a criação de uma classe e as instancias dela, nisso a ferramenta Scriptable Objects da Unity auxilia demais, dando a possibilidade de tornar muito mais amigável ao designer a criação de novos inimigos únicos.
Uma das partes importantes do jogo é a sua característica "Infinita" que vem do fato de sortear os inimigos e posições que são criados a cada x segundos, mas vir o mesmo inimigo sempre deixaria o jogo monótono e cansativo, então há necessidade de criarmos inimigos mais rápidos, outros mais forte ou até mais resistentes, para conseguir isso criei um classe chamada inimigo, que guarda as informações básicas dele sendo elas, nome, quantidade de vida, velocidade, dano, tipo, os gráficos, e os prêmios ganhos ao derrotá-los, um inimigo pode compartilhar com outro o mesmo modelo 3D, e ter apenas as cores alteradas.
Outra classe necessária é a que coloca os personagens no lugar, e sorteia qual vai onde, e por fim a última classe é a que controla o objeto e dita o comportamento dele, que no caso por enquanto é apenas se mover para baixo.
Além de criar classes para lidar com os tipos de inimigos que o jogo terá, também há a necessidade de agrupar eles, de deixar o jogo mais fácil, ou difícil, e deixar inimigos mais raros que outros, então há a necessidade de usar uma classe para as fases, essa classe tem controle sobre algumas questões, como quais os inimigos que podem ser instanciados, qual a chance deles aparecerem, e se o jogo está fácil ou difícil, com a classe implementada, e um gerenciador de fases feito para poder passar isso para os outros objetos da cena temos um contorno da jogabilidade se tornando mais nítido.
Muitas outras questões internas do jogo podem ser controladas por esse método para agilizar criação de variação, como as naves, os tipos de tiros os chefes, fundos de tela, e por ai vai, quanto mais variação, mais conteúdo e desafios o jogo vai ter, portanto é importante tornar a experiência de cria-la mais intuitiva e fácil.
Cada vez mais o jogo toma forma, com inimigos já dá para testar como a jogabilidade final vai ser, e começar a modelar as dificuldades e progressões.
DevLog :
Criação de novos Inimigos;
Separação das fases;
Características das naves;
Instanciador de Inimigos conforme sorteio;