Competência de Projeto#
O conceito de projeto é definido pelas funcionalidades implementadas, mas pode ser limitado pela qualidade de código e pelo trabalho em grupo.
Funcionalidades#
- Conceito I:
- Jogo não apresenta uma jogabilidade mínima.
- Não há interações que funcionem como esperado para um jogo 2D ou 3D.
- Conceito D: Possível visualizar uma cena de jogo, porém não possui nenhum recurso de interação incorporado. Basicamente é um passeio em um cenário.
- Conceito C:
- Foi criado um jogo que possui apenas uma ou duas telas.
- O jogo possui algumas formas de interação, mas são limitadas e simples (ex: apenas um personagem pode ser controlado, ou o personagem pode apenas se mover, etc.).
- O jogo apresenta travamentos e/ou bugs que prejudicam a experiência de jogo.
- Conceito B:
- Atingiu o conceito C e todos os itens a seguir.
- O programa desenvolvido permite a interação com vários objetos (gráficos) na cena de forma coerente com a proposta do jogo.
- Mais de uma tela é apresentada para o usuário, incluindo telas informativas e tela de início e fim.
- Após o término do jogo, o jogador é levado para uma tela de fim de jogo, onde é possível reiniciar o jogo ou voltar para a tela inicial.
- O jogo possui efeito visual e/ou sonoro para diferentes ações do jogador.
- Possui um som ambiente e de efeito sonoro de personagens. Diferentes interações em tempo real são possíveis.
- O jogo possui um objetivo claro e uma condição de vitória ou derrota.
-
Conceito A:
- Atingiu o conceito B e todos os itens a seguir.
- O jogo possui progressão de dificuldade ou mudança de desafio entre momentos do jogo.
- Funcionalidades Adicionais - Além da jogabilidade básica do jogo, foi implementado pelo menos dois dos recursos a seguir:
- Implementação de inimigos com algum comportamento (ex: perseguir o jogador, atirar, etc.).
- Cooldown de ações, onde o jogador precisa esperar um tempo para realizar a mesma ação novamente (ex: atirar, pular, etc.). Deve ser possível visualizar o cooldown de alguma forma (ex: barra de cooldown, mudança de cor do personagem, etc.).
- Implementação de power-ups, onde o jogador pode coletar um item que lhe dá uma vantagem temporária (ex: invencibilidade, aumento de velocidade, etc.). Deve ser possível visualizar o efeito do power-up de alguma forma (ex: mudança de cor do personagem, etc.).
- Implementação de diferentes fases do jogo, onde o jogador enfrenta desafios diferentes em cada fase.
- Implementação de eventos aleatórios durante o jogo que afetam a jogabilidade por um tempo limitado.
- Implementação de um sistema interno triggers (gatilhos), permitindo que ações do jogador ou condições da partida acionem eventos específicos que alterem o comportamento do jogo.
- Caso queira sugerir alguma funcionalidade extra no jogo, converse com os professores para verificar a possibilidade de aprovação.
- Cenário elaborado com riqueza de detalhes e objetos do jogo possuem animações.
- Implementou um esquema de pontuação/ranking, onde ao fim do jogo o jogador possui uma pontuação que será salva e mostrará em uma tela de ranking.
- Implementou uma tela com rankings de pontuação.
- Os dados são salvos em um arquivo.
- Para armazenar o ranking do jogo, será necessário implementar a funcionalidade para o jogador informar seu nome ao fim do jogo, para que o nome e a pontuação sejam salvos no ranking.
- O jogo possui um bom acabamento, se aproximando de um produto.
-
Conceito A+:
- Atingiu o conceito A e todos os itens a seguir.
- Implementou 4 ou mais das funcionalidades adicionais listadas no conceito A.
- Fez uso de algum recurso avançado, como integração com dispositivos externos ou periféricos especiais, uso de câmera, microfone, controles dedicados (ex: controles de PlayStation, Xbox, Nintendo Switch e afins), sensores ou outros mecanismos de entrada e saída além de teclado e mouse. Ou comunicação por rede entre jogadores ou com um servidor para funcionalidades como multiplayer.
- O ranking do jogo está ordenado de forma decrescente, mostrando os jogadores com maior pontuação no topo.
- O ranking do jogo possui um limite de 10 jogadores, ou seja, apenas os 10 jogadores com maior pontuação são salvos no ranking.
- Todos os objetos que se movem no jogo possuem animações e efeitos sonoros associados a suas ações. Além disso, os sons são variados, ou seja, não é o mesmo som para todas as ações.
- Todos os botões do jogo possuem efeitos visuais e sonoros ao passar o mouse por cima e ao clicar.
- O jogo possui variedade de conteúdo:
- Tipos diferentes de obstáculos;
- Inimigos diferentes (sprites e comportamentos diferentes);
- Mais de um objetivo;
- Mudança de cenário ou fase;
- Mais de uma forma de perder ou ganhar.
Importante:
- Caso o grupo não entregue os storyboards das duas propostas de jogo, o conceito de projeto será limitado ao conceito B.
- Caso o grupo mude a ideia do jogo sem avisar os professores, o conceito de projeto será limitado ao conceito C.
Qualidade de Código#
O conceito obtido em qualidade de código limita o conceito do projeto. Ou seja, se as funcionalidades desenvolvidas atingem o conceito A, mas a qualidade de código for B, o conceito da competência de projeto será B. Por outro lado, se as funcionalidades desenvolvidas atingem o conceito B, mas a qualidade de código for A, o conceito da competência de projeto será B.
- Conceito I:
- Código não roda, mesmo havendo algumas rotinas sem erros de sintaxe, não é possível uma execução completa.
- Documentação basicamente nula, nem no código, nem externa.
- Conceito D:
- Código apresenta erros que inviabilizam o uso do programa de forma completa. Embora haja alguns comentários no código, esses não permitem minimamente entendê-lo.
- Conceito C:
- O código é funcional e faz o que se propõe fazer, código não apresenta erros de sintaxe.
- Apesar de funcionar, não seguiu a divisão de código em funções proposta nos handouts.
- Conceito B:
- Código organizado em uma série de funções, seguindo a divisão proposta nos handouts, que permitem uma clara compreensão da estratégia do jogo.
- Os principais blocos de código estão documentados de forma clara.
- Repositório está bem organizado. Não possui arquivos desnecessários ou com nomes confusos.
- Repositório possui um README.md com informações sobre o projeto, integrantes do grupo, como rodar o projeto, etc.
- Realizou commits para cada funcionalidade implementada, com mensagens claras e objetivas.
- Conceito A: A
- tingiu o conceito B.
- Código organizado de forma apropriada em orientação a objetos (classes) de forma que auxilia a compreensão, reuso e manutenção do código.
- Implementou classes para cada tela do jogo, seguindo a organização proposta pelos professores.
- Cada classe de tela possui pelo menos os métodos
__init__,draweupdate.
- Cada classe de tela possui pelo menos os métodos
- Implementou classes para todos os objetos do jogo, seguindo a organização proposta pelos professores.
- Cada classe possui pelo menos os métodos
__init__edraw. - As classes extendem a classe
Spritedo Pygame. - Utilizou colisões entre objetos utilizando
spritecollideougroupcollidedo Pygame.
- Cada classe possui pelo menos os métodos
- As responsabilidades de cada classe estão bem definidas e separadas.
- Implementou classes para cada tela do jogo, seguindo a organização proposta pelos professores.
- Separou responsabilidades em arquivos diferentes. Código documentado com docstrings.
- Rotinas são eficientes e sem chamadas inúteis.