O documento descreve as características gerais e requisitos de alto nível de um jogo em turnos chamado "Brutal Mentes". Detalha a criação de personagens cientistas e seus ataques e defesas especiais. Também apresenta a modelagem UML inicial do jogo com diagramas de casos de uso, classes, sequência e estados.
2. CARACTERÍSTICAS GERAIS
• Jogo em turnos;
• Desenvolvido para computadores;
• Pode ser jogado de forma individual ou em equipes;
• Personagens cientistas com ataques relacionados às suas contribuições;
• Objetivo: lançar projéteis para eliminar os adversários.
3. Inicialmente foram levantados requisitos mais genéricos, como por exemplo:
"Os status de cada jogador deverão ser representados por sprites.”
"As artes deverão seguir o tema da brutalidade.”
"Cada cenário deverá conter uma arte coerente com o roteiro."
REQUISITOS DE ALTO NÍVEL
4. DOCUMENTO DE REQUISITOS
Após a definição de requisitos de alto nível, foi criado um documento geral com requisitos mais
detalhados
5. FÍSICA PARA LANÇAMENTO DO PROJÉTIL
O personagem poderá lançar o projétil
escolhendo aproximadamente os
parâmetros Força e Ângulo de lançamento.
a = F / m
Velocidades Iniciais:
Vxo = a*cos(θ)*1 Vyo = a*sen(θ)*1
O movimento em x é uniforme e mantém a mesma
velocidade durante todo o percurso.
Vx = Vxo Sx = Sxo + Vx*t
O movimento em y é uniformemente variado, pois
considera-se a aceleração da gravidade.
Vy = Vyo + g*t Sy = Syo + Vy*t
6. CRIAÇÃO DOS PERSONAGENS
-Albert Einstein
-Isaac Newton
-Maxwell
-Pitágoras
-Tesla
-Charles Darwin
-Marie Curie
-Stephen Hawking
-Joule
-Arquimedes
7. CARACTERIZAÇÃO / APRESENTAÇÃO
-Texto de apresentação
(tela de escolha de jogadores)
-Frase do personagem
(momento da escolha do jogador)
-Caracterização
(cabeça maior que o corpo, realce das características físicas marcantes)
8. ATAQUE / DEFESA
-Ataque comum para todos os personagens
(lançamento de projétil)
-Ataque e defesa especiais para cada personagem
(área de atuação, descobertas e estudos)
9. EXEMPLO: PITÁGORAS
-Texto de apresentação:
Pitágoras foi um filósofo e matemático nascido a 570 anos antes de Cristo na ilha de Samos,
Grécia.Creditado como fundador do movimento "Pitagorismo", responsável por inúmeras
descobertas matemáticas.O "Teorema de Pitágoras" solucionou o problema das relações
entre os lados de um triângulo retângulo.
-Frase de efeito:
"Eduquem as crianças, para que não seja necessário punir os adultos."
-Caracterização:
“Turbante”, barba grande e rosto fino.
10. EXEMPLO: PITÁGORAS
-Ataque:
Calcula a distância entre ele e o seu adversário e ao pular consegue atingir
exatamente o seu adversário através do valor da hipotenusa.
-Defesa:
Utiliza uma raíz quadrada para diminuir o efeito do ataque em sua vida.Por
exemplo: Um ataque que deveria retirar 25 pontos de sua vida vai retirar
somente 5 pontos.
11. CRIAÇÃO DOS PERSONAGENS
-O documento com os detalhes de todos os personagens já está disponível no
“Slack”.
-Sugestões e novas ideias são sempre bem vindas.
12. Modelagem UML
• Para auxiliar na implementação do jogo foi preciso fazer uma modelagem UML através dos seguintes
diagramas:
• Casos de Uso
• Classes
• Sequência
• Estados
13. Modelagem UML – Diagrama de Casos de uso
• Casos de uso escolhidos para o cenário;
• O mesmo deve ser implementado primeiro,
como decidido em uma reunião entre os
coordenadores
• Representa as funcionalidades básicas que o
personagem interpretado pelo jogador teria em
cada cenário;
14. Modelagem UML – Diagrama de Classes
• Jogo é a classe principal, que deve conter vários
elementos importantes para o sistema;
• Funcionalidades representadas no diagrama de
Casos de uso modeladas com mais detalhes;
• Elementos modelados com mais detalhes são os
que serão implementados primeiro.
15. Modelagem UML – Diagramas de Sequência
• Foram feitos diagramas de sequência bem gerais para cada funcionalidade básica presente no cenário,
apenas para guiar os programadores.
• Os diagramas dos próximos slides modelam:
• Ataque ao adversário;
• Defesa;
• Movimento da “câmera”;
• Movimento do personagem;
• Seleção da câmera.
19. Modelagem UML – Diagramas de Estados
• Diagrama feito para entender a
lógica do sistema de uma forma
geral.
20. MOVIMENTAÇÃO – IMPLEMENTAÇÃO INICIAL
• A movimentação dos personagens foi implementada através do
reconhecimento de eventos de teclado.
• Utilização da biblioteca SDL2_image;
• Texturas para renderização de
Imagens sobrepostas.
21. FISICA DO JOGO - IMPLEMENTAÇÃO INICIAL
• Métodos responsáveis por calcular a próxima posição em ambas as direções no próximo
instante.
• float getnextpositionx(float s_ant_x,float v_x,int t)
• float getnextpositiony(float s_ant_y, float v_y,int t)
• Métodos responsáveis por calcular a velocidade em ambas as direções no próximo instante.
• float getnextspeedx(float force,float ang)
• float getnextspeedy(float v_y_ant,float acc_y, int t)
• Um loop principal recalcula as novas posições. Velocidades e atualiza a tela.
• Melhoria necessária: Criar um controlador para lidar com atualização da tela.
22.
23. DETECÇÃO DE COLISÕES E MAPEAMENTO DE
OBSTÁCULOS - IMPLEMENTAÇÃO INICIAL
-Os objetos (chão, personagens, etc) da fase serão mapeados por círculos, que,
em contato com os círculos de outros objetos, definem uma colisão.
-Cada círculo de um objeto possui uma posição do seu centro (x,y), um raio e,
opcionalmente, um identificador.
-Ideia geral: a cada objeto estará associada pelo menos uma lista de círculos
que o descrevem (para os personagens existe a ideia de se ter uma lista para
cada um dos estados definidos em suas sprites).
25. DETECÇÃO DE COLISÕES E MAPEAMENTO DE
OBSTÁCULOS - IMPLEMENTAÇÃO INICIAL
Chão da fase-modelo mapeado por círculos Trecho do arquivo contendo os círculos do chão da fase-modelo
26. DETECÇÃO DE COLISÕES E MAPEAMENTO DE
OBSTÁCULOS - IMPLEMENTAÇÃO INICIAL
Foram realizados testes bem sucedidos para:
-identificar sobreposição entre dois círculos;
-identificar colisões entre círculos externos com o cenário
27. DETECÇÃO DE COLISÕES E MAPEAMENTO DE
OBSTÁCULOS - PRÓXIMOS PASSOS...
- Montar sprites dos personagens e associar listas de círculos a cada um de
seus estados;
- Integração com a parte física do jogo