Que tal como terceiro post aqui do blog eu tentar deixar as coisas mais claras; tentarei fazer passo a passo dessa vez;
O segundo desafio começar, criar um clone de Flappy Birds; um jogo caótico que ja fez muitas pessoas quebrarem celulares;
Mas dessa vez eu resolvi iniciar de uma forma diferente, não fui diretamente para a engine; Resolvi antes de tudo criar um Mockup de como seria o jogo;
Comecei criando um personagem, pensei em pássaros, naves, aviões, balões; Então uma arte do Pinterest me chamou atenção, era um vampiro; Logo a ideia de fazer um morceguinho passando pelos muros de um cemitério apareceu;
Então com as sprites prontas, eu posso partir para a construção do jogo;
Estrutura geral;
Eu antes de começar a montar as coisas diretamente no Godot, decidi desta vez utilizar o https://app.hacknplan.com, para poder me organizar um pouco melhor nas coisas; um dos problemas que tive com o pong;
1. Player
Iniciei uma cena adicionando um RigidyBody2D, por que sabia que ele ja iniciava com física; então fuçando aqui e ali. consegui controlar a gravidade e o impulso que ele daria ao receber o Tap;
criei inicialmente duas variáveis; uma para definir a força do pulo e outra para definir o inicio de partida, para que o personagem não entrasse na tela ja caindo;
na função ready eu inicio com a gravidade desligada;
diferente do Pong da ultima vez, eu resolvi tentar criar funções para as coisas, para poder ter um melhor controle do código todo; Então iniciei criando uma função de start game, Ela vai lidar com tudo que envolva o inicio da partida, como no caso, ligar a gravidade e definir que o jogo começou;
e a outra função que criei foi a tap que é responsável por dar o impulso ao personagem quando apertar espaço. Aqui eu tentei de algumas formas, e tentando mover a position do player não funcionou muito bem;
2. Obstáculos
Para a parte dos obstáculos, eu resolvi montar ele em 2 cenas diferentes.
1 . Uma contendo apenas um obstáculo, com sua colisão e sprite;
2. Depois eu fiz uma segunda cena, aonde coloquei esse obstáculo duplicado, um sobre o outro deixando um espaço ente eles;
E por fim eu juntei eles a cena principal aonde vou instanciar eles de forma aleatória;
A ideia é fazer com que eles apareçam fora da tela e se movimentem em direção ao player; para não ficar uma coisa repetitiva, no Flappy Birds eles são criados em alturas diferentes;
Então a partir de um função de Timeout de um timer, eu defini um tempo, a sempre que a função chamar, ela vai criar uma instancia dentro de um nó especifico na cena principal; A posição de criação que coloquei por enquanto é provisória ainda não sei se vai ser assim mesmo que vai funcionar;
para a movimento eu apenas criei uma variável de velocidade para poder controla melhor; e adicionei a posição. Também me certifiquei de que quando ele sair da tela ele sera destruído para não ocupar memoria;
Caso o player colidir com um dos obstáculos ele vai chamar a Scene novamente, reiniciando assim o jogo, provisório, pois pretendo logo mudar para um tela de Score.
3. Efeito Parallax
Uma coisa boa que vi da Godot é a facilidade que ele dão ao implementarem coisas simples na engine. uma delas é o efeito parallax, apenas criei uma cena e adicionei todos as minhas artes e tava pronto o sorvetinho;
E por enquanto ele ficou assim;
4. Pontos
O sistema de pontos de um FlappyBird é bem simples, você passa entre os canos e ganha um ponto; Eu resolvi criar um efeito visual mais agradável, então o morceguinho vai coletar esferas de sangue entre os obstáculos;
Foi bem simples, eu coloquei ela na mesma cena que cria os dois obstáculos, a "LevelWall" e adicionei uma colisão com o jogador;
Adicionei uma UI simples também, como uma cena separada; utilizei um NinePatchRect pra poder colocar o texto dentro;
E na parte de códigos, ali aonde eu estava printando "Ponto", mudei para ele somar a uma variável global;
E até esse ponto o jogo esta concluído e funcional, você pegar pontos e é isso; A partir de agora eu vou começar a mexer em partes que dão um pouco mais de charme para uma gameplay, como sons, menus e user interface;
5. Melhorando o jogo (Sons, UI e Menus)
Quando se trata de som, musica eu sou uma negação, entao procurei em alguns sites alguns fx gratuitos; achei uns bacanas e algumas musicas também neste site;
Adicionei alguns sons, como as asas batendo, uma colisão com os obstáculos, a coleta da orbezinha de sangue, e uma musica de background; para colocar eles não achei muito complicado, bem simples na real;
Um caixa de score ao final do jogo mostrando para o player a pontuação atua dele é uma ótima forma de fazer ele querer jogar novamente; Então criando uma cena nova de game over, e utilizando alguns nós de controle, como Label e NineRect;
Acrescentei um menu simples também apenas para não iniciar diretamente na tela do jogo.
Considerações finais
Após um dia e meio, eu decidi finalizar. Tinham muitas ideias na cabeça pra ir deixando o jogo cada vez melhor, mas envolviam coisas que ainda preciso estudar. Então como segundo jogo do desafio, acredito que este esteja concluído;
Preciso estudar um pouco mais sobre emitir sinais, e organização geral;
Mas o resultado esta ai, quem quiser testar fique a vontade;
E me siga nas minhas redes sociais;
até a próxima
;
Comments