Grupo

  • Marcelo Ruberto Júnior - 0040441223010
  • Murilo Aparecido Vicente - 0040441223016
  • Murilo Soares da Rocha - 0040441223008
  • Samuel Petersen dos Santos - 0040441223024
  • Rodney Cardoso de Campos - 0040441223023

Dispositivo

  • Android

Projeto

  • FallenGhosts

Resumo

  • FallenGhosts se trata de um jogo singleplayer e de plataforma, onde o jogador controla o personagem principal que é um samurai, e precisa enfrentar uma série de inimigos para completar seu objetivo no decorrer do jogo. O jogo terá três fases e terá a seguinte história ao inicio do jogo:
  • Em uma vila rural no japão, o protagonista Suo chega. No momento em que ele chega, a vila é atacada por um bando de renegados que vão pelo nome de Moonlight Sword, que visavam a morte de um importante nobre que visitava a vila. Suo então tem como objetivo primário defender a vida deste nobre, enfrentando os renegados com a ajuda de sua mãe, uma entidade que pode tomar a forma de uma espada.


Software utilizado


Metodologia

  • Inicialmente utilizaremos o Photoshop para criar todo o conteúdo gráfico do jogo, como sprites dos personagens, background do cenário, as imagens de conversação dos personagens (imagem estática e maior do personagem) e os itens que serão adquiridos no jogo.
  • Após o desenvolvimento de todo o conteúdo gráfico, utilizaremos a engine Unity 4 no desenvolvimento do jogo em si, importando todas as imagens feitas no Photoshop. Após isso, utilizaremos o recurso que a Unity oferece de desenvolvimento em 2 dimensões, o Unity 2D, pelo fato do jogo ser do gênero de plataforma bidimensional.

Desenvolvimento

Relatório

Seguindo a metodologia, após termos as imagens necessárias para o início do desenvolvimento, começamos a utilizar o Unity 4 para importar os elementos gráficos e iniciar o desenvolvimento do jogo.
141.02 osu_Idle_2.gif
Gif demonstrando a posição Idle do personagem


O Unity trabalha com uma interface baseada em cenas e objetos que são criados e/ou instanciados nelas. Então primeiro foi criado a cena com algumas plataformas provisórias para iniciamos o desenvolvimento do personagem principal, que usaria 2 botões horizontalmente em 2 direções, um botão de pulo e outro de ataque. Também foi criado uma entidade com a forma de uma esfera, que segue o jogador e serve de explicação na história do jogo em relação a espada que o personagem usa.

141.02 osu_idle_mom.jpg
141.02 character.png
Animação e configuração do controle do personagem principal



Com todas as animações construídas e todos os comandos do personagem operando, fomos então ao próximo passo de implementar realmente o cenário e além disso programar um inimigo com uma inteligência artificial básica apenas para movimento e ataque, o movimento do inimigo é realizado de um lado pro outro da fase, virando pro outro lado caso bata contra alguma parede. Na fase inteira foram instanciados 5 inimigos, sendo um diferente considerado como chefe da fase.

141.02 villainconfig.png
Inspector do objeto inimigo

Em conjunto também já estava sendo desenvolvido o menu do jogo, com botões de acesso à cena principal, opções para ajustar o volume, créditos, e para sair do jogo.
Utilizando a mesma ideia do menu principal, foi criado também um menu de pausa, onde há a parada do jogo e os botões de controle somem, dando espaço a outro menu interativo que possibilita a volta ao jogo, a saída do jogo e o retorno ao menu principal.
141.02 menuprincipal.jpg
Tela de Menu Principal


Por ultimo foi adicionado alguns sons ao jogo, sons de movimentação e também um som temático do jogo, todos foram implementados através de um objeto criado na cena do jogo que realiza a transmissão do som.

Problemas encontrados e resolvidos

Posição de objetos no jogo

Durante o desenvolvimento, encontramos um problema em relação à gerar elementos gráficos no mundo do jogo. De acordo com telas diferentes, as posições de botões, imagens, e etc. se ajustavam somente à um aspecto/resolução fixo.
Conseguimos resolver esse problema ao definir a posição de todos os elementos em proporção à própria resolução da tela, em vez de uma estática, em pixels.
O único detalhe é que com isso, há resoluções onde o jogo não se encaixa bem, como por exemplo botões que se tornam mais difíceis de pressionar de acordo com a tela. Considerando que na plataforma Android há todo um espectro de modelos e tipos diferentes de aparelhos, só podemos concluir que é um desafio que cada desenvolvedor tem que lidar de suas próprias formas.

Ideias e dicas em geral

  • Evite usar a função GUI.Buttons do Unity com o fim de programar botões, pois eles são limitados e não irão permitir que você aperte mais de um botão por vez. Em vez disso, crie um objeto na cena que sirva de botão e trabalhe com ele.
  • Na hora de desenhar os sprites para o jogo, prefira montar uma grade definida em pixels e desenhe cada quadro dentro delas. Irá facilitar na hora de importar estes sprites no Unity.

Resultados

Em suma, temos um jogo com um menu totalmente operacional, e uma fase com o personagem, seus movimentos devidamente programados, com o cenário e uma quantidade de inimigos espalhados por ele, operantes porém passíveis de uma melhora considerável no movimento. Caso seja necessário, a fase pode ser estendida e mais inimigos podem ser inclusos para uma sessão maior de jogo.

Imagens e Sprites


allthesprites.pngfundo_2_mountain.png



Conclusão

Houve alguns problemas no processo de desenvolvimento, mas tudo caiu dentro das expectativas. O Unity realmente é uma plataforma poderosa e focada à fazer jogos, e só havíamos arranhado a superfície que é o Unity 2D, sem mencionar que ele é altamente flexível pois permite a inserção de blocos de código via scripts, podendo até mesmo trabalhar com múltiplas linguagens de programação em um só projeto. Graças à facilidade e liberdade que a engine nos ofereceu, conseguimos desenvolver o jogo sem ficar preso em problemas críticos por muito tempo. O intuito é continuar desenvolvendo o projeto, para uma possível versão com um maior conteúdo, com o objetivo de melhorar o rendimento adquirindo novas informações, assim quando o projeto estiver completo, colocar o jogo gratuito na google store, utilizando propagandas com o fim de gerar receita.

Jogo em formato .apk para instalação em algum sistema operacional Android:

Fallen Ghosts - apk