Projeto do Módulo 8 · Sementes do Sertão em Godot
Duração: 12 horas-aula (16 se a turma não fizer a Aula 8.9). Formato: individual. Cada aluno escreve o próprio código. Ferramenta: Godot 4.7, renderizador Compatibilidade.
A proposta
Refazer em Godot, com GDScript, o jogo de coleta do Projeto 1 (Módulo 3): o seu jogo, e não o de referência. Quem fez o Sementes do Sertão refaz o Sementes; quem fez outro tema (catar latinhas, pegar frutas) refaz o seu. As regras são as mesmas; o que muda é a ferramenta. No fim, o aluno compara as duas versões.
O projeto projetos/sementes-godot/ é a referência para consulta, não para copiar. Copiar o código sem entender aparece na entrevista de saída.
Requisitos obrigatórios
| Nº | Requisito | Aula |
|---|---|---|
| 1 | Projeto com renderizador Compatibilidade, pastas cenas, scripts, imagens, sons | 8.1 |
| 2 | Jogador como cena própria (CharacterBody2D + desenho + colisão) | 8.1, 8.3 |
| 3 | Ações próprias no Mapa de Entrada, com duas teclas cada | 8.3 |
| 4 | Movimento com get_vector, animação e virada | 8.3 |
| 5 | Item coletável como cena Area2D com sinal próprio | 8.4 |
| 6 | Inimigo ou obstáculo que avisa por sinal | 8.4 |
| 7 | Itens criados pelo código, em lugar sorteado, sem mensagens de erro | 8.5 |
| 8 | Tempo de partida com Timer e dificuldade que cresce | 8.5 |
| 9 | Telas de início e fim, placar numa CanvasLayer | 8.6 |
| 10 | Autoload com os dados da partida e recorde salvo em user:// | 8.6 |
| 11 | Código com nomes em português, sem acento, e comentários nas partes difíceis | todas |
| 12 | Tabela comparando GDevelop e Godot no seu jogo | 8.1 |
Cronograma sugerido (12 h)
| Horas | Etapa | Entrega parcial |
|---|---|---|
| 1 | Projeto, pastas, desenhos e sons do Projeto 1 importados | projeto abre |
| 3 | Jogador e Mapa de Entrada | jogador anda |
| 3 | Itens, inimigo, sinais e criação pelo código | partida jogável |
| 2 | Telas, Autoload, recorde | do início ao fim |
| 1 | Teste com 3 colegas e correções | diário |
| 1 | Tabela GDevelop × Godot e README | entrega |
| 1 | Mostra e entrevista de código | apresentação |
O que entregar
- Pasta do projeto do Godot (sem a pasta oculta
.godot, que o Godot recria sozinho). README.md: nome, como jogar, controles, versão do Godot, autor, créditos.- Tabela GDevelop × Godot (pelo menos 8 linhas).
- Diário, com pelo menos um erro encontrado e como foi resolvido.
- Exportação para web, se a turma tiver feito a Aula 8.10.
Entrevista de código (5 minutos por aluno)
O professor aponta três trechos do código do aluno e pergunta "o que acontece aqui?". Serve para confirmar autoria e entendimento, e conta no critério Domínio do código.
Rubrica do projeto (28 pontos, convertidos para 4,0)
| Critério | 1 (iniciando) | 2 (em desenvolvimento) | 3 (adequado) | 4 (avançado) |
|---|---|---|---|---|
| Funcionamento | não roda | roda com erros na Saída | os 12 requisitos funcionam, sem erros | trata casos raros (sair e voltar, recorde sem arquivo) |
| Organização em cenas | tudo numa cena | jogador separado | jogador, item e inimigo como cenas | cenas reaproveitadas em outra fase |
| Sinais | sem sinais | só sinais prontos | sinal próprio emitido e conectado | sinais com valores (coletada(valor)) |
| Código legível | nomes sem sentido | alguns nomes claros | nomes em português e comentários | funções curtas, cada uma com uma tarefa |
| Dados e persistência | tudo some ao trocar de cena | Autoload sem recorde | Autoload e recorde salvo | ranking ou mais dados salvos |
| Domínio do código | não explica | explica com ajuda | explica os três trechos | propõe melhoria e mostra onde mexer |
| Comparação | sem tabela | tabela rasa | 8 linhas com exemplos do próprio jogo | conclusão própria sobre quando usar cada ferramenta |
Nota = soma ÷ 7.
Questões de saída (individuais, 20 minutos)
- Qual a diferença entre
_processe_physics_process? Onde fica o movimento do jogador? - Por que a semente avisa
coletadaem vez de somar o ponto ela mesma? - O que acontece se criar a semente nova sem
call_deferred? - Por que os pontos ficam no Autoload e as vidas no script do jogo?
- Por que o recorde é salvo em
user://e não emres://?
Gabarito
_processroda a cada quadro desenhado;_physics_processroda no ritmo fixo da física. O movimento com colisão (move_and_slide) fica no_physics_process.- Para a semente não depender da cena: ela só avisa, e quem ouve decide. A mesma semente serve em outro jogo.
- O Godot mostra "Can't change this state while flushing queries..." e, no teste do Sementes, os pontos passaram a ser contados errado.
- Os pontos precisam chegar à tela de fim, e as variáveis do jogo somem ao trocar de cena; as vidas só importam durante a partida.
res://é a pasta do projeto, que vira só leitura no jogo exportado;user://é a pasta de dados do jogador e continua depois de fechar.