Meu Primeiro Jogo em Unity (Parte 1, iniciando o desenvolvimento)
INICIANDO UM NOVO PROJETO
Comecei a desenvolver meu primeiro jogo feito com a Game Engine Unity e vou postar aqui os progressos que tenho feito.
De início, estava seguindo os tutoriais oficiais da Unity, para aprender a trabalhar com a Game Engine. Segui todo o primeiro tutorial, o qual ensina a fazer o jogo Roll-a-Ball, um game simples onde o player rola um bola dentro de um espaço e "coleta" objetos que valem pontos.
Estava seguindo, também, o segundo tutorial, referente ao game Space Shooter, no qual controlamos uma nave espacial e atiramos para destruir os inimigos.
Acontece que percebi que precisava forçar mais minhas habilidades de aprendizado, pois não me sentia aprendendo tanto apenas seguindo o passo-a-passo dos tutoriais. Foi aí que inicie o desenvolvimento do meu primeiro jogo em Unity, o qual nomeei como Ataque Pirata.
Não que seja má prática seguir os tutoriais, e, inclusive, continuarei a segui-los mais à frente, pois são muito bons, porém, por questões de aprendizado e de realização pessoal, achei melhor dar os primeiros passos solo.
Meu foco, no desenvolvimento de games, é na parte de codificação, com a qual tenho mais afinidade. Portanto, com o Ataque Pirata não tem sido diferente. Deixei a parte visual para depois, e estou implementando a mecânica geral do jogo.
Por falar na parte gráfica, até já instalei o 3DStudioMax, pensando nisso, porém ainda estou estudando a possibilidade de procurar Assets para este fim na internet. Caso não ache nada que me agrade, farei eu mesmo a modelagem 3D, sendo preferencialmente modelos simples, apenas para o jogo ficar "bonitinho" e poder publicar aqui para vocês se divertirem.
COMO É O JOGO ATAQUE PIRATA
Ataque Pirata trata-se de um game do tipo "Tower Defense"(defesa da torre, em tradução direta). Nesse estilo, a ideia é você defender sua base(ou torre) contra um ataque inimigo.
Neste jogo, isso se dá com navios inimigos(piratas) se dirigindo em direção à sua base para uma invasão, e você terá canhões para contra-atacar e tentar impedir tal invasão.
Este é o jogo rodando dentro da Unity, com os detalhes do desenvolvimento ao lado(clique na imagem para aumentar):
Figura: Jogo Ataque Pirata rodando na Unity.
Como podem ver, não há ainda nenhum desenvolvimento gráfico, sendo que posicionei apenas elementos representativos de cada objeto em seus devidos lugares, para posterior substituição pelos modelos condizentes. Veja abaixo a descrição do que cada elemento representa na cena:
Figura: Descrição dos elementos representados na cena.
Na cena acima, os navios piratas(representados pelos blocos verdes) se movimentam lentamente para a esquerda, em direção à base do jogador, onde está posicionado o canhão de defesa do player(bloco branco). O mar está representado pela superfície azul por onde deslizam os navios, e, no momento deste print, haviam sido disparadas duas bolas pelo canhão.
SIMPLICIDADE, PORÉM FOCANDO EM BOA MECÂNICA E JOGABILIDADE
O jogo Ataque Pirata será, como se pode ver, um jogo simples. No entanto, estou focando em desenvolver uma mecânica bastante satisfatória para o jogador, proporcionando uma boa jogabilidade, um bom controle das ações no game. A ideia é mais para praticar, me aperfeiçoar no desenvolvimento de games, no que ainda sou um iniciante, um newbie, na linguagem gamer.
CÓDIGO DO JOGO
Como a ideia do SupremeGamesBR é a de atrair o engajamento de pessoas focadas na parte de programação do desenvolvimento de games, vou apresentar aqui os scripts nos quais tenho trabalhado para fazer a mecânica de Ataque Pirata e comentar algumas partes(se quiserem que eu comente outras partes que não foram comentadas aqui, deixe um comentário, e poderei eventualmente responder num próximo post!).
Nesta tela do Visual Studio(onde trabalho meus scripts), você pode ver o código que uso para o lançamento do projétil/bola do canhão(LançaProjetil.cs):
Figura: Script LançaProjetil.cs.
Atribuí este script como "Component"(componente) do objeto "Canhao" desta cena do jogo.
O método "OnMouseUp" é chamado quando o botão do mouse é liberado(ou seja, você clicou, segurou para ajustar o ângulo, e depois soltou o botão). Usei este método para instanciar o projétil assim que o player liberar o botão do mouse que foi apertado.
Já o método "OnMouseDrag" é chamado enquanto o jogador arrasta o mouse clicado. Nele, cuidei para que o movimento do mouse, durante o clique, controle a inclinação do canhão.
A variável "mouseYAnterior" serve para armazenar o valor anterior da posição Y do mouse, e, com isso, poder determinar, na próxima frame, se o mouse foi ou não movimentado verticalmente, assim como calcular a distância do movimento realizado, para aplicar a mudança na inclinação do canhão.
Script utilizado para determinar a velocidade de disparo da bola do canhão(Atira.cs):
Figura: Script Atira.cs.
Este script foi atribuído ao prefab "Projetil", que será instanciado quando o jogador liberar o botão do mouse após clicar no canhão.
O método "Dispara"(invocado pelo script LançaProjetil.cs quando do instanciamento do projétil) recebe como parâmetro a rotação do canhão, para definir em que ângulo o tiro será disparado. Também faz uso do atributo "velocity", do "Component" "Rigidbody" do projétil, para atribuir uma velocidade de disparo ao mesmo.
Aqui, o script NavioInimigo.cs e Varios.cs:
Figura: Script NavioInimigo.cs.
Figura: Script Varios.cs.
O primeiro é responsável simplesmente por "empurrar" os navios inimigos, através do mar, em direção à base do jogador.
O segundo instancia os navios em posições aleatórias, a cada alguns segundos, da rampa de onde eles partem.
Por fim, o script "Destroi.cs", feito apenas para apagar da memória RAM qualquer objeto(navio, bola de canhão, etc.) que sair da área delimitada por um bloco invisível que coloquei na cena ao redor da área de jogo, e ao qual atribuí este script.
Figura: Script Destroi.cs.
Essa ação(apagar objetos da memória) é necessária para que o jogo não vá atulhando a memória RAM do dispositivo com objetos que já saíram de cena e causando lentidão no jogo.
PRÓXIMOS PASSOS
Recentemente implementei uma solução relacionada ao ângulo de disparo das bolas do canhão, que antes estavam saindo apenas num ângulo estanque.
Meus próximos passos, no desenvolvimento de Ataque Pirata, serão os de cuidar de limitar o ângulo de inclinação do canhão de defesa, para que ele não gire indefinidamente(indo para cima, e até para trás) conforme o jogador movimenta o mouse.
Atualmente, o player clica sobre o canhão para usá-lo, e, segurando o botão do mouse, arrasta para cima e para baixo para ajustar o ângulo do tiro. No entanto, se o mouse for movimentado muito para cima ou para baixo, o canhão vai girando direto, sendo possível dar uma volta, o que não condiz com a mecânica real de um canhão. Por isso, estou trabalhando nesta parte agora e vou postar o progresso no próximo post.
Portanto, fique atento à próxima postagem para ver como o jogo estará!
Não deixem, também, de comentar, dar seu feedback, fazer perguntas... enfim, participar!
Até a próxima!







Comentários
Postar um comentário