Projeto 6 · Protótipo 3D: labirinto com chave e porta
Duração: 16 horas-aula (20 se a turma não fizer a Aula 9.8). Formato: em dupla. Cada um explica qualquer parte do código. Ferramenta: Godot 4.7, renderizador Compatibilidade.
A proposta
Fazer um labirinto 3D próprio: o jogador procura uma chave, abre uma porta e chega à saída, com a câmera em terceira pessoa. O tema é da dupla (casa de farinha, escola à noite, roça de milho, caverna da serra), desde que tenha chave (ou outro item), porta (ou outro bloqueio) e saída.
O projetos/chave-da-porteira/ é a referência para consulta. A dupla pode partir de uma cópia dele, mas precisa trocar o mapa, o personagem, os materiais e pelo menos uma regra.
Requisitos obrigatórios
| Nº | Requisito | Aula |
|---|---|---|
| 1 | Projeto com renderizador Compatibilidade e pastas cenas, scripts, materiais, modelos | 9.1 |
| 2 | Personagem próprio feito de formas prontas, com a frente visível | 9.2, 9.3 |
| 3 | Pelo menos três materiais salvos em .tres | 9.2 |
| 4 | Pelo menos um modelo .glb (o mandacaru do curso, um do Blender ou de terceiros com CREDITOS.md) | 9.2 |
| 5 | CharacterBody3D com gravidade, giro e andar | 9.3 |
| 6 | Câmera em terceira pessoa com SpringArm3D que ignora o jogador | 9.4 |
| 7 | Labirinto montado pelo código a partir de um mapa de letras próprio | 9.5 |
| 8 | Chave, porta e saída avisando por sinais; a cena decide | 9.6 |
| 9 | Tempo na tela e melhor tempo salvo em user:// | 9.6 |
| 10 | WorldEnvironment com céu, luz ambiente e neblina; sol com sombra | 9.7 |
| 11 | Tabela de medição com sombra e sem sombra | 9.7 |
| 12 | Telas de início e fim | 8.6 |
Cronograma sugerido (16 h)
| Horas | Etapa | Entrega parcial |
|---|---|---|
| 2 | Tema, mapa no papel conferido pela outra dupla | mapa aprovado |
| 3 | Personagem, materiais, câmera | anda no chão de teste |
| 3 | Labirinto pelo código | anda dentro do labirinto |
| 3 | Chave, porta, saída, tempo | partida completa |
| 2 | Clima, medição, telas | versão para teste |
| 2 | Teste com 3 colegas e correções | diário |
| 1 | README e mostra | apresentação |
O que entregar
- Pasta do projeto do Godot (sem a pasta oculta
.godot). README.md: nome, como jogar, controles, versão do Godot, autores, créditos.- Mapa no papel (foto) e o mesmo mapa em letras.
- Diário com: as três câmeras testadas (Aula 9.4), a tabela de medição (Aula 9.7) e pelo menos um erro encontrado e como foi resolvido.
CREDITOS.md, se usou qualquer coisa de terceiros.
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 (pisar duas vezes na saída, primeiro recorde) |
| Espaço 3D | objetos flutuando ou enterrados | posições corretas, sem cuidado de escala | escala coerente (pessoa ~1,7 m, corredores largos para a câmera) | explica a escolha de cada medida |
| Câmera e controle | câmera atrapalha | segue, mas bate na parede ou some | terceira pessoa jogável, braço ignorando o jogador | duas câmeras ou ajuste justificado por teste com colegas |
| Labirinto e regras | sem caminho até a saída | caminho existe, porta não bloqueia | chave antes da porta, porta obrigatória | segunda regra (duas chaves, armadilha, atalho) |
| Aparência | sem materiais | um material só | três materiais, clima configurado | clima que combina com o tema e ajuda a jogar |
| Otimização e medição | não mediu | mediu sem comparar | tabela com e sem sombra, malha reaproveitada | propõe e testa outra melhoria com número |
| Domínio do código | não explica | explica com ajuda | cada um explica três trechos | propõe mudança e mostra onde mexer |
Nota = soma ÷ 7.
Questões de saída (individuais, 20 minutos)
- Para onde aponta cada eixo no Godot? Qual é a frente de um nó 3D?
- Por que a câmera precisa de
braco.add_excluded_object(get_rid())? - Por que o labirinto não aparece no editor, só no jogo?
- Por que a porteira avisa
jogador_chegouem vez de abrir sozinha? - O que acontece com as chamadas de desenho quando se desliga a sombra do sol? Por quê?
Gabarito
- X para a direita, Y para cima, Z na direção de quem olha a tela. A frente é o Z negativo (
-transform.basis.z). - O braço procura obstáculos com um raio; sem essa linha, o primeiro obstáculo é a cápsula do próprio jogador e a câmera fica colada nele.
- As paredes são criadas pelo script quando a cena começa (
_ready). No editor o script não roda. - Para a regra ficar na cena: a mesma porteira serve para outra fase com outra regra.
- Diminuem (no Chave da Porteira, de 102 para 25 com sombra e neblina desligadas), porque a sombra obriga o Godot a desenhar a cena outra vez, vista pelo sol.