29 de junho de 2013

Projeto de estudo de um game runner


Faz um tempo que não posto nada! Só para lembrar o RolimãProject não está arquivado, embora o nome irá mudar, estou aproveitando os conhecimentos que estou adquirindo na faculdade para dar uma melhorada no projeto, embora o tempo seja um pouco curto. E enquanto não solto nada sobre os carrinhos de rolimã, vou soltar este projeto que trabalhei para uma "prova" que teve na minha pós.

O objetivo era criar um jogo de corrida infinita, onde deveria contar com o máximo de features possíveis. O jogo foi programado em C#, até então eu estava programando no Unity com JavaScript, as features que implementei foram estas, junto descrevi as minhas dificuldades:

  1. Follow Câmera
A câmera segue o personagem, no angulo x e z, a dificuldade aqui foi fazer a câmera movimentar quando aperta Start.
  1. Escudo
Ele destrói qualquer obstaculo em um determinado tempo e se ele colidir antes de o tempo acabar anula automaticamente seu efeito e começa a spawnar novos itens no cenário. Dificuldade de acertar como ele iria destruir o objeto e seu efeito se anular na mesma hora.
  1. Magnetismo
Atrai as moedas para o jogador, quando ele é ativado, e após término do tempo ele finaliza o efeito e começa a spawnar novos itens no cenário. Foi difícil fazer ele puxar as moedas individualmente e bolar um jeito para ele puxar elas somente em uma determinada distância.

  1. Som
Executa efeitos de som, pulo, impacto. O som não tocava pois o objeto destruía antes.

  1. Moedas
Sistema de coleta de moedas e elas giram individualmente, e são destruídas e atraídas pelo magnetismo. Tive a dificuldade de fazer elas girar individualmente.

  1. Pause
Executa o pause no jogo após o jogador apertar o botão ESC. Quando pausava ele continuava a contar os pontos.

  1. Continue
Quando o jogador morre ele pode utilizar o continue, ele vem com o escudo pré determinado, a dificuldade foi acertar a forma que ele conta o continue, e ele retomar todas as rotinas até então paradas pela suposto status que ele esta morto.

  1. Spawn Objetos
Ele gera os objetos do jogo na posição pré - determinada, ou seja o cenário tem os itens de spawner e este script lança os objetos nas coordenadas do spawner de forma aleatória, mas com sequências pré - determinadas. Difícil acertar o modo como o script faria isto de forma menos dificultosa e mais personalizável.

  1. Compra de continue
Para dar continue será necessário comprar com as moedas adquiridas do jogo. Dificuldade de acrescentar os continues e subtração do mesmo.

  1. Emissão de partículas
Emite partícula de explosão, quando o personagem colide com o obstaculo usando o item escudo. Chamar a partícula.

  1. Destruição de objetos por distância
Este script foi feito para destruir os objetos após uma determinada distancia ou condição de um item especial. Como calcular a distancia foi minha maior dificuldade.

  1. Spawn aleatório de cenário
Ele gera um cenário a frente randomicamente. O problema foi gerar a lógica de quando ele deveria gerar o próximo cenário.

  1. Movimento esquerda direita centro
O personagem vai para direita, esquerda e centro, utilizando a seta, a dificuldade foi fazer ele transladar de forma que não ultrapasse o valor máximo determinado.
  1. Trap Catapulta
Após o jogador pisar no botão ele levanta uma barreira.
  1. GUI de Contagem dos efeitos dos Itens
ele gera um box onde representa o tempo de efeito do item especial. Sincronizar com o efeito do item em si.





Para quem acompanha o blog deve ter percebido que todos os assets utilizados no jogo são iguais aos do game demo "ProjectViking". Sim realmente, como o objetivo era a programação o tempo era curto, e não queria utilizar apenas cubos, aproveitei todos os assets que tinha em minha biblioteca para criar os cenários.

Devido ao tempo que era muito curto, o jogo contém apenas 4 tipos diferentes de cenário sendo que um é o inicial, e 3 tipos de sequência de itens e objetos. Mas pelo objetivo já era válida a quantidade. Para quem tiver curiosidade segue o link do jogo, ou então basta joga-lo abaixo! Se tiverem dúvidas sobre as features implementadas estarei disposto a compartilhar minhas experiências deste projeto!

Nenhum comentário:

Postar um comentário