quinta-feira, 14 de junho de 2012

Atualização 14-06

O jogo, ao longo desse período, mudou um pouco de cara, quem quiser fazer um teste basta mandar um email para (este) que estarei encaminhando o instalador, por enquanto é uma fase tutorial, mas já mostra qual a ideia do jogo final.

Nessa última atualização foi mudado o cenário devido a aplicação do Parallax, foram acrescentados os efeitos sonoros tanto no menu, quanto na fase e nos personagens.

Estamos satisfeitos com o resultado, pois conseguimos montar a base do jogo, a qual é a parte mais difícil.

Queremos agradecer a todos os professores envolvidos no curso de Design de Jogos Digitais da Universidade Cruzeiro do Sul.

Pretendemos continuar com o projeto nas férias e a cada mudança estarei postando aqui.

Até o 2º semestre,
Abraços, Equipe Zombie Raw.



PS: Ideias e sugestões serão sempre bem-vindas!!

Revision 158

Foram eliminados alguns métodos redundantes do código, a saber:

Get_Colisao_Com_Visao()
Já existe um método que verifica a colisão com o campo de visão, que é o getCollidingCampoVisao()

get_HP()
Já existe um método que retorna o HP do objeto, que é o getHP()

getSomJogador() e a variável booleana tocar_jogador
Se o intuito era verificar se o jogador ainda estava vivo para tocar o som de quando apanha, é mais lógico usar o método já implementado IsDead(). O código fica mais limpo e não precisa dizer para todos os inimigos que o jogador morreu para parar de tocar o som de quando apanha.

Ao invés de: if (tocar_jogador)
É mais intuitivo: if (!jogadorAlvo.IsDead())

variável booleana Inimigo_vivo

Ao invés de: if (Inimigo_Vivo == false)
É mais intuitivo: if (IsDead())

get_Game_Over()
Este método é redundante. No seu lugar, podemos usar uma generalização do método get_Desenhar() para o jogador. Afinal, quando o jogador não puder mais ser desenhado, significa que morreu, e consequentemente será Game Over. Isso permitirá unificar os médotos Update() das classes Jogador, Inimigo01 e Chefao, que estavam separadas só por que usavam variáveis booleanas diferentes. O método ficará na classe pai Personagem e será igual para todos.

Classe Fade
A classe Fade foi excluída do projeto, por não ser mais necessária.

quarta-feira, 13 de junho de 2012

Revision 156 e 157

Foi corrigido o BUG que estava impedindo as animações de morte dos inimigos serem desenhadas.

O BUG foi causado durante a implementação da tela You Win. O método que checava a morte impedia que os objetos fossem desenhados na tela assim que o HP ficasse menor que zero.

A solução encontrada foi substituí-lo por um método que já existia no código, que ao invés de checar o HP, checa se ele precisa ser desenhado. (Estado = dead e último frame exibido)

E a outra alteração mais aparente: foram implementadas animações nas telas de menu e de fim de jogo para deixar o projeto mais comercial.

quinta-feira, 31 de maio de 2012

Atualização 31-05

Nesse momento, no que o grupo se comprometeu a fazer nesse semestre, o projeto já está OK, faltando apenas algumas interações com alguns objetos e uma música de fundo.

Acrescentamos uma tela de Menu:

Ao apertar a tecla "Enter" ocorre um efeito de transição e vamos para a tela do jogo.
A classe HP sofreu por algumas alterações e agora está mais genérica, antes dessa mudança todos os personagens perdiam 25 de HP, agora, com essas alterações, o valor é diferente para cara personagem, facilitando bastante para o futuro.

Estamos definindo ainda os sprites dos inimigos e assim que cada inimigo tiver o seu definido eu volto a postar as imagens aqui.

quinta-feira, 17 de maio de 2012

Atualização 17-05

Desde a semana passada, pouca coisa mudou no jogo, foi acrescentado um cenário e melhoradas algumas partes do código que estavam dando alguns bugs na animação, a cara do jogo nesse momento está assim:


Estamos enfrentando alguns problemas na atualização do HP, mas o mesmo deverá ser resolvido essa semana. O HUD também está sendo construído e em algumas semanas já estará implementado.


quinta-feira, 10 de maio de 2012

Atualização 10-05

Essa semana o código passou por uma refatoração e as classes estão totalmente separadas e funcionando corretamente, o visual nesse momento está assim:


Foi adicionado um texto para "Debug" assim poderíamos verificar se as variáveis estão funcionando corretamente.

Algumas alterações na animação ocorreram, a animação do ataque ficou assim:



A animação da "morte" ficou assim:


E foi adicionado um inimigo (Inimigo01), o qual é possível ver na primeira imagem (personagem Cinza).

terça-feira, 1 de maio de 2012

HP, Colisão, Classes

HP

Essa semana foi implementado o HP, parte visual, no inimigo e no jogador principal. A perda do HP ocorre nas seguintes situações:

- O jogador colide com o inimigo e perde 25.
- O jogador colide com o inimigo, mas está atacando, o inimigo perde 25.

Essa perda é somente visual, ao inicializar o HP, é desenhado na tela -25 na posição atual do objeto e esse valor vai mudando sua posição em Y a cada update em um determinado tempo; ao fim desse tempo o -25 não é mais desenhado na tela.

Colisão

O código da colisão foi melhorado, ao ocorrer a colisão, ele fará a verificação de quem está perdendo HP, o objeto que está perdendo o HP recuará 100 pixels, não importando a posição e ordem dos objetos, por exemplo, se o jogador está sofrendo o ataque ele fará o seguinte calculo: 

             if (Colisao_Personagem_Inimigo_01 && !Personagem_Esta_Atacando)
            {
                Pos_Personagem = Jogador_Principal.Position;

                if (Personagem_esta_a_esq)
                {
                    Pos_Personagem.X = Pos_Personagem.X - 100;
                }
                else
                {
                    Pos_Personagem.X = Pos_Personagem.X + 100;
                }
                Jogador_Principal.Position = Pos_Personagem;
             }

Organização das classes

Estamos enfrentando alguns problemas para separar todas as classes, primeiramente o código foi feito todo no Game1.cs, assim era possível testar se o código estava funcionando corretamente. Ao separar as classes encontramos um problema, ele não está atualizando as posições dos "Vector2", por exemplo, na classe IA.cs, o inimigo começa na posição (660, 175) e vai diminuindo em 1, em X, a cada Update, ao chegar na posição (200,175) o inimigo deve aumentar em 1, em X, na classe Game1.cs o código funciona perfeitamente, porém ao fazer a adaptação na classe IA.cs, o inimigo vai diminuindo 1, em X, "eternamente", esse foi o problema principal encontrado e estamos trabalhando para remover esse Bug.