Módulo 9 · Jogos 3D: fundamentos
| Carga horária | Ano | Ferramenta | Produto final |
|---|---|---|---|
| 80 horas | 3º | Godot 4.7 (o mesmo do Módulo 8) | Projeto 6: protótipo 3D simples, um labirinto com chave, porta e câmera em terceira pessoa |
Para que serve este módulo
O aluno já sabe montar cenas, escrever scripts e ligar sinais no Godot (Módulo 8). Agora o jogo ganha profundidade: além de X (para os lados) e Y (para cima), aparece o Z (para frente e para trás). Quase tudo o que foi aprendido continua valendo, só que com nomes terminados em 3D: CharacterBody3D, Area3D, MeshInstance3D. O que é novo de verdade é câmera, luz e material: no 2D o desenho já vinha pronto; no 3D a forma, a cor e a iluminação são coisas separadas.
O jogo de referência é Chave da Porteira: um sertanejo preso num labirinto de taipa precisa achar a chave, abrir a porteira e chegar à saída no menor tempo. O labirinto é montado pelo código a partir de um mapa de texto, a câmera segue o personagem por trás e o melhor tempo fica salvo.
Objetivos do módulo
- Localizar objetos no espaço com os eixos X, Y e Z e mover a câmera do editor.
- Montar cenas com formas prontas (
BoxMesh,SphereMesh,CapsuleMesh) e materiais (StandardMaterial3D). - Importar um modelo
.glbe registrar a licença de modelos de terceiros. - Mover um
CharacterBody3Dcom gravidade e colisão. - Montar uma câmera em terceira pessoa com
SpringArm3D. - Gerar um labirinto pelo código a partir de um mapa de texto.
- Usar
Area3De sinais para chave, porta e saída. - Configurar céu, neblina e sombra, e medir o custo de cada coisa.
Sequência de aulas
| Aula | Título | Horas | Ciclo | Arquivo |
|---|---|---|---|---|
| 9.1 | O mundo em 3D: eixos, câmera e luz | 8 | Explorar | aula-9-1 |
| 9.2 | Formas prontas, materiais e modelos com licença | 10 | Compreender / Construir | aula-9-2 |
| 9.3 | CharacterBody3D: andar no chão em 3D | 10 | Construir | aula-9-3 |
| 9.4 | Câmera em terceira pessoa | 8 | Construir | aula-9-4 |
| 9.5 | Labirinto feito pelo código | 10 | Construir | aula-9-5 |
| 9.6 | Chave, porteira e saída | 8 | Construir | aula-9-6 |
| 9.7 | Ambiente e otimização básica | 6 | Melhorar | aula-9-7 |
| 9.8 | Primeira modelagem no Blender (opcional) | 4 | Explorar | aula-9-8 |
| — | Projeto 6: protótipo 3D | 16 | Construir / Testar / Compartilhar | atividades/projeto-6-labirinto-3d.md |
| Total | 80 |
Se a turma não fizer a Aula 9.8, as 4 horas vão para o projeto.
Materiais de apoio
| Arquivo | Uso |
|---|---|
| projetos/chave-da-porteira/ | jogo de referência completo (abrir a pasta no Godot) |
| exemplos/laboratorio-3d/ | dois exemplos curtos: eixos (9.1) e materiais (9.2) |
recursos/imagens/godot/captura-godot3d-*.png | fotos reais do editor do Godot 4.7.2 com o projeto aberto |
recursos/imagens/godot/chave-da-porteira-tela-*.png, chave-da-porteira.gif e laboratorio-3d-tela-*.png | jogos rodando |
testes/godot/testar_porteira.gd e testar_laboratorio_3d.gd | testes automáticos (41 e 15 verificações) |
Computadores do laboratório
O 3D pesa mais que o 2D. O curso usa o renderizador Compatibilidade (o mesmo do Módulo 8), que funciona em placas de vídeo simples. Na preparação, o Chave da Porteira rodou numa placa integrada Intel Iris Xe com OpenGL 3.3. Os computadores da escola não foram testados: rode o jogo de referência em uma máquina do laboratório antes da Aula 9.1. Se ficar lento, a Aula 9.7 mostra o que desligar primeiro (a sombra).
Avaliação do módulo
| Instrumento | Peso |
|---|---|
Projeto 6 (rubrica em atividades/projeto-6-labirinto-3d.md) | 4,0 |
| Exercícios das aulas | 2,5 |
| Diário de desenvolvimento (rubrica R3) | 1,5 |
| Mostra (rubrica R2) | 1,0 |
| Questões de saída | 1,0 |
Ligação com os outros módulos
- Módulo 1: o mapa do labirinto é uma lista de textos; montar as paredes é uma repetição dentro de outra.
- Módulo 6: a porteira trancada é uma condição de estado, como as fases liberadas do Cajueiral.
- Módulo 8: cena, nó, script, sinal, grupo, Autoload,
call_deferrede Tween continuam iguais. - Módulo 10: o labirinto vira GIF para o portfólio e entra no repositório com
.gitignore.