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!!
quinta-feira, 14 de junho de 2012
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.
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.
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.
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:
E foi adicionado um inimigo (Inimigo01), o qual é possível ver na primeira imagem (personagem Cinza).
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.
Assinar:
Postagens (Atom)





