FallenGhosts+home+page

= 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 =
 * Unity 4.3.4
 * Photoshop CS6

= 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 =

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. 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. 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.

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. 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.

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


= 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