Code Monkey home page Code Monkey logo

pinball-3d's People

Contributors

allannobre avatar igor-gme avatar josutk avatar rdlenke avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Forkers

rdlenke igor-gme

pinball-3d's Issues

Desenvoler LEDS da Fase

  • Desenvolver/Pesquisar um componente de LED para colocar no decorrer da fase;
  • Led`s devem piscar, acender, apagar;
  • Led`s devem possuir várias cores;
  • Led`s devem ser programáveis para receber padrões e responder a estímulos do jofo;

Desenvolver Segunda Tela Fase Bônus

  • Fazer Flippers 2D;
  • Fazer os Pop-Bumpers 2D;
  • Fazer Drop-Targets 2D;
  • Fazer Inserts 2D;
  • Fazer Slingshots 2D;
  • Fazer Timer da Fase;
    • Deve durar 20 segundos ou até Perder por queda no buraco;
  • Fazer condição de derrota por queda;
  • Fazer estrutura em que o flipper é grudado;

Desenvolver Sistema de Pontuação

  • O jogo deve acumular os pontos através dos contatos com os objetos da fase.

*O jogador pode adquirir buffs de pontuação de acordo com eventos específicos da fase;
Multiplicadores de Pontos
Aumento no ganho de pontos em determinados objetos da fase
Combos

Posicionar componentes na fase

  • Posicionar componentes na fase assim como está no Level Design da fase FGArcade;
  • Testar comportamento dos componentes;
  • Testar posições;
  • Testar tamanhos;
  • Testar distâncias;
  • Testar interações;
  • Testar força e velocidade da esfera e dos flippers;
  • Testar gravidade da bolinha e inclinação da mesa;
  • Testar Jogabilidade da Fase;

Desenvolver o Esqueleto da Fase

  • Fazer o Plano Inclinado;
  • Fazer as paredes da Fase;
    • Lateral, Superior e Inferior com buraco para a bola cair;
    • Fazer pedaços de parede internos baseado na fase FGArcade;
  • Fazer a esfera descer a fase da mesma forma que acontece no Pinball Analógico;
  • Ajustar a câmera para a posição de jogo com melhor imersão;
    • Lembrar da Televisão;
    • Paredes elevadas com sensação de profundidade;
    • Sem espaços vazios na observação, vendo a fase inteira com as paredes laterais subindo como se estivessem tocando na tela;
  • Posicionar os Flippers;
  • Ajustar tamanho da fase para que a esfera chegue até o final dela com força suficiente para que o jogo se comporte como um pinball original;
  • Ajustar tamanho da fase para que os componentes possam ser inseridos assim como está no Level Design do Relatório;

Emissão de Luz

O jogo deve emitir sinais luminosos de acordo com algumas condições de jogo:

  • Derrota
  • Lançamento da Esfera
  • Modo Normal (Luzes intermitentes normais)
  • Modo Alucinado (Luzes intermitentes frenéticas)

Desenvolver Lançamento da Esfera

  • Fazer a "Trouxa" com 3 bolinhas;
  • Fazer uma bolinha por vez ser posicionada corretamente da trouxa ao local de lançamento no momento correto;
  • Fazer a bolinha ser lançada com força variável para dentro da fase;
  • Implementar o modelo do túnel da Fase FGArcade;
    • As forças e qual local do túnel a esfera alcança baseada na força lançada estão descritos no relatório na parte da descrição da fase;
    • Os túneis que devem ser feitos são somente aqueles pelos quais a esfera pode passar quando é lançada com todos os tipos de força diferentes no lançamento inicial;
    • Não é preciso aparecer a mola do lançado na tela sendo puxada e soltada;
    • É preciso aparecer algo atrás da bolinha, batendo nela com a força do impacto da jogada;
    • É possível ter mais de uma esfera em jogo devido a uma interação especial, logo, prevendo essa situação, o jogador só poderá lançar a próxima esfera caso todas saiam do jogo;

Desenvolver Segunda Tela Base - Score e Textos

  • A segunda tela deve estar em 2D;
  • Deve seguir o modelo do Level Design no Relatório;
  • Deve aparecer a pontuação do Jogador com 12 casas decimais;
  • A pontuação deve aparecer num modelo de placar digital;
  • A pontuação deve ser incrementada em real-time;
  • Deve apresentar uma espaço para apresentação de textos;
    • Comunicação com o Jogador;
  • Os textos devem aparecer em fonte de 8-Bits;
  • Os textos devem ser programáveis em questão de tempo de aparição e qual texto está aparecendo;
  • Os textos enviados para a segunda tela devem ser mostrados seguindo o algoritmo de escalonamento FIFO (First In First Out), tendo uma fila para que os textos fiquem aguardando sua vez de ficar na tela pelo tempo X indicado;
    • Deve ter um atributo que indica se o texto deve aparecer na hora que for mandado, furando a fila de textos na tela e interrompendo o texto corrente e colocando o texto corrente como a primeira posição da fila após esse novo texto prioritário;
  • Os textos devem ser referente as quests ou a uma comunicação específica do jogo com o jogador, ex.: "Parabéns, você quebrou um recorde!", "Última Chance, em!", "Derrotaaaaaaaaaaaaa!";

Desenvolver Flippers

  • implementar os Flippers.

O Flipper deve se mover usando, no mínimo, um dos botões laterais;

Desenvolver Pop-Bumpers

  • Implementar Pop-Bumbers assim como no Pinball Analógico;
  • Devem mudar a direção da esfera para algum lado aleatório com a colisão;
  • Deve acrescentar velocidade a esfera com a colisão;
  • Deve mudar de cor ao colidir com a esfera;

Desenvolver Ranking

  • Deve aparecer as três iniciais e as pontuações dos dez primeiros jogadores bem colocados em cada nível;
  • Ao finalizar um nível, caso tenha uma pontuação acima do décimo colocado, o jogador deve ser capaz de inserir suas três iniciais utilizando os botões de ação do flipper para movimentar um seletor numa lista de letras;
    • Uma letra por vez, os flippers navegam entre as letras e a seleção é feita pelo botão seletor;
  • Ao finalizar a fase, o ranking deve aparecer na tela principal por cima da fase;
  • Ao selecionar o Ranking no menu, este deve aparecer na tela principal do pinball;

Desenvolver Menu

  • O Menu deve seguir o Modelo proposto no Level Design do relatório;
  • A navegação deve ser feita através dos botões dos Flippers;
  • A seleção deve ser feita através do botão seletor;
  • Deve ter 3 opções;
  • Ao passar pelo Ranking, este deve aparecer na tela principal do jogo;

Vibração de Botões

  • Botão deve vibrar de acordo com as interações da esfera com os objetos do jogo;
    A intensidade varia de acordo com a distância dos objetos

  • Interação com os componentes eletrônicos

Sistema de Quest

*O jogador deve ser capaz de adquirir missões ao interagir com um elemento específico de cada nível.
*As missões devem exigir que o jogador interaja de alguma forma com outros elementos do cenário.
*As missões devem aparecer no segundo monitor do jogo.
*As missões devem dar um bônus de pontuação.

Desenvolver Esfera

  • Deve ser implementada assim como a esfera do Pinball Original;
  • Deve ter a aparência metálica;
  • Deve dar a impressão de estar girando ao movimentar-se pela fase;
  • Deve dar a impressão de ter o peso da esfera de Pinball Original:
    • Sendo pouco suscetível a saltos;
    • Tendo força e velocidade relevantes para a fase e interação com outros componentes;

Desenvolver Spinner

  • Implementar o Spinner assim como no Pinball Original;
  • O Spinner deve girar quando a esfera passar em baixo dele, variando a velocidade e quantidade de giros com a velocidade que a esfera passar;
  • A implementação deve ser feita prevendo que a cada giro do Spinner, o jogador ganhará uma pontuação;
  • O Spinner pode girar para os dois lados, tendo o mesmo comportamento para ambos;
  • O Spinner deve ser alocável entre duas paredes, podendo ser ajustado em questão de tamanho para alocação na fase;
  • O contato da esfera com o Spinner não deve remover uma quantidade de velocidade grande de esfera, mantendo a força desta quase intacta;

Desenvolver Saucer

  • Implementar Saucer assim como é no Pinball Analógico;
  • A esfera deve encaixar no Saucer e ficar presa por algum tempo;
    • A esfera pode sumir por completo;
    • A esfera não desaparece, ficando somente encaixada em pequeno buraco na mesa;
  • Após o tempo presa deve ser lançada de volta ao jogo com velocidade aleatória e em uma direção aleatória;
  • Ver exemplo:
    https://www.youtube.com/watch?v=nirysONu22A&t=2400s

Desenvolver Scoops

  • Implementar o Scoop assim como no Pinball Original;
  • A Esfera deve ser capaz de entrar no Scoop e sair em outro lugar da Fase;
    • A Esfera deve aparecer na segunda tela;
    • A cena na segunda tela deve mudar do Score/Texts para uma fase com a esfera em 2D;
  • O Scoop pode estar no chão (Ver Level Design FGArcade);
  • O Scoop pode estar na parede (Ver Level Design PinballBet);
  • O Scoop só pode estar aberto para a entrada da Esfera após uma interação especial do jogo;
    • Implementar prevendo a implementação da interação especial futuramente;
    • O Scoop pode ser bloqueado por uma tampa dele próprio ou com um DropTarget modificado que só desce após a interação especial futuramente implementada;

Desenvolver Slingshots

  • Implementar um Slingshot assim como no Pinball Original;
  • O Slingshot deve acrescentar muita velocidade a esfera;

Fazer jogo responder a Estímulos Externos

  • Implementar o código que tomará de conta dos sinais externos que irão ser recebidos e interferirão no jogo (Classe Signal Handler);
  • A Esfera deve se mover de acordo com a inclinação da mesa;
    • Implementar a lógica de movimento da esfera com algumas teclas do teclado que simulam os sinais recebidos pelo giroscópio;
    • Deve se mover em todas as direções de acordo com a inclinação da mesa;
  • Os Flippers responderão aos botões laterais analógicos;
    • Implementar a lógica de movimento dos flippers com algumas teclas do teclado que simulam os sinais recebidos pelos botões;
  • A Esfera será lançada para o jogo através de um lançador com força variável;
    • Implementar a lógica de lançamento com alguma tecla do teclado que simulam os sinais recebidos pelo sensor magnético do Lançador;
  • A seleção das opções deve ser feita através de um botão analógico de seleção;
    • Implementar a lógica de seleção com alguma tecla do teclado que simula o sinal recebido pelo botão;

Desenvolver Inserts

  • Desenvoler os inserts assim como eles são no Pinball Original;
  • Podem possuir uma imagem ou ser só um sinal luminoso;
  • Deve ascender, piscar, apagar ou mudar de cor;
  • Deve variar o comportamento baseado em alguma ação do jogo;

Desenvolver Accelerators

  • Pode ser um componente visível ou invisível ao jogador;
  • Deve impulsionar a esfera na mesma direção do movimento dela;
  • Caso seja visível poderá ser representado por um Insert;

Pendências de Jogabilidade

  • Fazer a esfera não perder tanta velocidade na fase e quicar como deveria nas colisões com as paredes e com os Componentes;
    • A força com que a bolinha colidi nos componentes que dão impulsão a ela deve influenciar na força de impulsão que os componentes aplicam a ela;
    • Refatorar os materiais para utilizar o Bounce e Atrito;
    • Refatorar Script de impulsão da esfera (ElasticCollision.cs, podem ter outros), para que todos os componentes que impulsionam a esfera possam usá-lo, aplicando força a espera e não multiplicando a velocidade;
      • Separar a mudança de cor do Script de impulsão;
    • Verificar quais componentes tem e/ou precisam do RigidBody para utilizar ou não o Continous Dynamic no Collision Detection;
    • Após essas altrações, o Flipper deve ser capaz de lançar a esfera em todos os lugares da fase com força suficiente;

  • Refatorar o SlingShot;
    • Fazer a colisão de impulsão acontecer somente no lado interno do SlingShot;
    • O restante do Corpo do SlingShot deve ser uma colisão comum com Bounce e Atrito padrões da fase;
    • A força com que a esfera é lançada pelo SlingShot depende da força com que ela o atingiu;
    • A esfera deve ser lançada em um ângulo de colisão natural (Ver vídeos de exemplos de bolinhas caindo em Slingshots reais);

  • Fazer a esfera voltar a fase nas quedas laterais;
    • Criar um componente que seja um StandUp com comportamento de SlingShot, na fase está com o nome de SmallSling, podendo impulsionar a esfera com força selecionável;
    • Nas aberturas laterais deve haver um SmallSling, onde, quando a esfera o tocar será lançada de volta a fase;
    • Quando o RollOver estiver pronto, deve-se detectar a passagem da esfera por ele para que uma pequena parede suba na diagonal, obstruindo o SmallSling para que a esfera caia na condição de derrota na segunda vez que cair na lateral da fase;
    • Na lateral direita deve-se aplicar um pedaço do modelo da estrutura que está faltando, para que a esfera possa entrar na fase pelo tubo de lançamento lateral e voltar para a fase através do SmallSling Direito;

  • Remodelar a entrada da esfera na fase para que não caia direto entre os flippers.
    • Pedir novos modelos do Designer;
    • Substituir os novos modelos na fase e testar a entrada da esfera;

  • Fazer as paredes escondidas subirem na fase quando necessário;
    • O RollOver poderá ser usado para verificar se a esfera passou por algum lugar específico para acionar as paredes escondidas;
    • Uma parede diagonal deve subir quando a esfera passar de uma determinada altura no lançador, fazendo com que ela entre na fase;
      • Quando a esfera entrar na fase por esta abertura lateral, duas paredes verticais devem subir, proibindo ela de voltar para o lançador, tanto pelo tubo superior de entrada, quanto pela entrada lateral da fase;
    • Duas paredes verticais deve subir quando a esfera passar a parte de cima do tubo de lançamento, proibindo a volta desta para o lançador tanto quando jogada no corredor com os spinners com muita força, quanto pela entrada lateral da fase;
    • Uma parede diagonal deve subir quando a esfera voltar a fase pela primeira vez através da impulsão de resgate da lateral esquerda;
    • Uma parede diagonal deve subir quando a esfera voltar a fase pela primeira vez através da impulsão de resgate da lateral direita;

  • Colocar scoop na fase;
    • O Scoop deve estar bloquado por um DropTarget especial, que abaixará ou levantará e permanecerá abaixado ou levantado baseado em alguma interação especial X;
    • A Esfera deve voltar para a fase através do componente no espaço representado na fase pelo ScoopExit;

  • Adicionar valor máximo de força aplicada a esfera em caso de colisões que geram impulsão;
    • Evitar que a esfera seja lançado e fique muito veloz na fase, causando um sensação estranha;
  • Adicionar valor mínimo de força aplicada a esfera em caso de colisões que geram impulsão;
    • Evitar que a esfera não seja impulsionada em componentes que deveriam, mesmo ela colidindo lentamente, causando um sensação estranha;

Condição de Derrota

  • Deve perder a esfera passar entre os flippers;
  • Deve perder a esfera ela cair nos caminhos adjacentes aos flippers;
  • A próxima esfera só pode ser lançada caso não haja nenhuma esfera em jogo;
    • É possível ter mais de uma esfera em jogo devido a uma interação especial, logo a condição de derrota deve estar preparada para esse acontecimento, onde o jogador só poderá lançar a próxima esfera caso todas saiam do jogo;
  • Caso não seja possível lançar mais esferas para o jogo, a partida do jogador estará encerrada;
    • A cena deve mudar para o ranking, como ainda não estará pronto, basta fazer aparecer uma tela com textos escritos sobre a tela da fase e os flippers não se movem mais;

Desenvolver Road

  • Deve-se criar um Corredor de passagem da esfera que ativa um determinado evento e/ou um bônus de pontuação especifico quando a bolinha passar por ele;
  • Deve-se seguir o modelo de Corredor proposto para a fase no Level Design no Relatório (FGArcade);
  • O Corredor criado deve ser criado com todas as estruturas que compõem as interações dele com a esfera;
    • Ex.: Pedaços de parede soltas que permitem ou impedem a passagem da esfera;

Emissão de Sons

  • O jogo deve emitir sons de impacto e interação com os objetos do jogo;
    Varia com a distância do objeto para o usuário

  • Interação com os componentes eletrônicos

Desenvolver Rollover

  • Implementar o Rollover assim como no Pinball Original;
  • Deve captar a presença da esfera naquela posição para ativar algo;
    • A implementação deve prever esse comportamento;
  • Deve estar levemente visível na mesa;
  • Deve abaixar quando a esfera passar por cima;
  • Deve detectar quantas vezes a esfera passou por cima e retornar esse valor;

Desenvolver Drop-Target

  • Implementa Drop-target assim como é no Pinball Analógico;
  • Podem ser criados de forma individual ou em grupo;
  • Devem abaixar quando acertados;
  • Devem levantar quando o conjunto de Drop-targets atrelados estiverem todos abaixados;
  • Deve aparecer um pedaço do Drop-target que está abaixado;

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.