Pular para o conteúdo
Início » Gamedev » Tutorial: XNA Invasores – Parte 3

Tutorial: XNA Invasores – Parte 3

Logo do XNASeguindo com o projeto do XNA Invasores, é hora de entender o fluxo principal do jogo. Na parte anterior nós definimos as entidades que compõem o jogo, mas não vimos bem suas ações e como elas interagem. Baseado no que foi modelado e observando o jogo original, podemos verificar o fluxo de atividades do jogo, ou seja, a ordem em que as coisas são executadas. Tendo o fluxo do jogo detalhado, teremos um algoritmo que descreve seu funcionamento, tornando bem mais simples a etapa de implementação.
Como em qualquer outra etapa de modelagem, o nível de detalhamento do modelo é definido pelo analista. Eu decidi por deixar o diagrama em um nível bem alto e com poucos detalhes, por motivos de tempo e simplicidade, mas nada impede que num outro projeto você faça um diagrama com muito mais detalhes.
Outra coisa que merece uma observação é que este modelo trata apenas do fluxo principal do jogo, iniciando com os passos que serão executados quando o jogador escolher “Novo Jogo” num menu e indo até a tela final de “Game Over” ou “Vitória”. Para não complicar demais, vamos modelar inicialmente apenas a parte central do jogo, sem se preocupar com menus de opções ou telas de fim de jogo.
Muito bem, vamos agora tentar visualizar o comportamento de algumas das classes definidas na parte anterior. Este comportamento é que irá definir o algoritmo que será implementado.

  • NaveJogador:
    • Pode se mover para a esquerda/direita, mas deve ficar dentro dos limites da tela.
    • Pode disparar um tiro por vez.
    • Quando um tiro disparado por ela atinge uma nave, o jogador ganha pontos.
    • Caso seja atingida, a nave perde uma vida.
    • Quando não restarem mais vidas, o jogo acaba.
  • NaveInvasor:
    • As naves invasoras se movem em conjunto e vão sempre na mesma direção.
    • Quando a nave mais à esquerda do grupo atinge um limite à esquerda da tela ou a nave mais à direita atinge um limite à direita, todas as naves descem um pouco em direção à parte de baixo da tela e invertem o sentido do seu movimento.
    • Uma nave por vez pode disparar um tiro em direção ao jogador.
    • Ao ser atingida por um tiro vindo do jogador, mas não de outras naves invasoras, a nave é destruída.
  • NaveBonus:
    • Surge ocasionalmente no topo da tela e sempre se move da esquerda para a direita.
    • É destruída ao ser atingida por um tiro ou ao sair da tela pela direta.
    • O número de naves bônus destruídas é armazenado para oferecer um bônus cumulativo.
  • ControladorDeNaves:
    • Controla as instâncias de NaveInvasor e NaveBonus.
    • É responsável por armazenar o número de naves restantes, para verificar se o jogo acabou.
  • Tiro:
    • Se move para cima ou para baixo de acordo com a entidade que o disparou.
    • Ao atingir uma entidade (NaveJogador, NaveInvasor, NaveBonus ou Escudo), destrói ou danifica (no caso do escudo) a entidade e é destruído.
    • Também é destruído ao sair da tela.
  • Escudo:
    • Um escudo não executa nenhuma ação, apenas sofre dano ao ser atingido por um tiro.
  • CelulaEscudo:
    • Apenas armazena a energia restante da célula, sem realizar nenhuma ação.
  • JogoInvasores:
    • Gerencia as entidades e suas interações, como colisões, por exemplo.
    • Carregar e gerencia recursos, como sons e imagens.

De acordo com o comportamento de cada Entidade mostrado acima, podemos modelar o fluxo central do jogo, que é basicamente o seguinte:

  • Os recursos usados no Jogo são carregados e as Entidades instânciadas.
  • Cada Entidade é Atualizada, de acordo com o comportamento definido acima.
  • As Entidades são desenhadas na tela.
  • São feitas as verificações de colisão. No Space Invaders, as únicas interações entre as entidades são as colisões.
  • É feita uma verificação se o Jogo chegou ao fim (se o jogador venceu ou perdeu).

O Diagrama de Atividades acima mostra o fluxo principal do jogo. Obviamente, há muito a ser detalhado, principalmente na atividade “Atualiza Entidades”, mas este detalhamento será feito aos poucos, conforme o jogo for avançando.
Por hoje é só e agora chega de teoria. A partir da próxima parte vamos começar com a implementação do jogo, conhecendo alguns conceitos iniciais do XNA e colocando nosso jogo pra rodar. Até lá.

Relacionados e Publicidade