• Jogos
  • Projeto

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__, draw e update.
    • Implementou classes para todos os objetos do jogo, seguindo a organização proposta pelos professores.
      • Cada classe possui pelo menos os métodos __init__ e draw.
      • As classes extendem a classe Sprite do Pygame.
      • Utilizou colisões entre objetos utilizando spritecollide ou groupcollide do Pygame.
    • As responsabilidades de cada classe estão bem definidas e separadas.
  • Separou responsabilidades em arquivos diferentes. Código documentado com docstrings.
  • Rotinas são eficientes e sem chamadas inúteis.