Módulo 11 · Aula 11.5 · Protótipo de papel e fatia jogável
| Carga horária | Dificuldade | Ferramenta | Competências |
|---|---|---|---|
| 10 h/a | ⭐⭐⭐ | papel; GDevelop ou Godot (kit/modelo-godot) | C2, C3 |
Objetivos de aprendizagem
- Testar o laço central no papel antes de programar.
- Começar o projeto na ferramenta a partir de uma base pronta e testada.
- Entender o que é uma "fatia jogável" e por que ela vem antes da arte.
Pré-requisitos
Aulas 11.3 e 11.4; Aula 2.6 (protótipo em papel).
Materiais
Papel, tesoura, dados, fichas; o kit/modelo-godot (equipe Godot) ou a cópia de um jogo de referência do GDevelop (equipe GDevelop).
Conceitos
Protótipo de papel. Recortes e regras numa folha, com uma pessoa fazendo o papel do computador. Em 30 minutos mostra se o laço central tem graça. Mudar uma regra no papel custa um minuto; no código, uma aula.
Fatia jogável. Um pedaço fino do jogo que já vai do começo ao fim: tela de início, o laço central funcionando, um jeito de ganhar ou perder, tela de fim. Com quadrados e círculos no lugar da arte. É o objetivo do Ciclo 1. Ela mostra cedo se a ideia funciona no computador.
O kit Godot. Um projeto pronto para copiar, com o que todo jogo precisa e que a turma já fez nos Módulos 8 e 9:
| Já vem pronto | Onde |
|---|---|
| tela de início (Espaço, Enter ou clique) | cenas/inicio.tscn |
| cena do jogo com placar e tempo de 30 s | cenas/jogo.tscn |
| pausa com Esc ou P, botões Continuar e Sair para o início | cenas/pausa.tscn |
| tela de fim com pontos, recorde e espera de 1 s | cenas/fim.tscn |
Autoload Global com pontos e recorde salvo em user:// | scripts/global.gd |
Mapa de Entrada: setas e W A S D, comecar, pausar | Configurações do Projeto |
.gitignore, CREDITOS.md, pastas imagens, sons, materiais | raiz do projeto |
O teste automático do kit (testes/godot/testar_kit_equipe.gd) confere 22 comportamentos, entre eles: a pausa para o tempo e os pontos, o recorde só sobe com partida melhor e o singular "1 ponto".
Pausa que continua viva. Quando o jogo pausa (get_tree().paused = true), todos os nós param, inclusive o menu de pausa... a não ser que ele esteja com Process → Mode em Always. É assim no kit.
Exemplos
O que trocar primeiro no kit:
- Em
jogo.gd, apagar a linha que soma ponto com Espaço e colocar a regra do jogo. - Trocar os textos de
inicio.tscn. - Mudar
DURACAO(ou tirar o tempo, se o jogo não tiver).
Tutorial passo a passo
Parte A. Protótipo de papel (150 min)
- Montem o laço central no papel. Uma pessoa joga; outra faz o "computador" seguindo só as regras escritas.
- Joguem 3 rodadas de 5 minutos com pessoas de outra equipe. Anotem onde travou e onde riu.
- Mudem as regras e joguem de novo. Atualizem o GDD.
Parte B. Começar o projeto (150 min)
- Equipe Godot: copiem a pasta
kit/modelo-godotpara o repositório da equipe, abram no Godot (Importar Projeto Existente), mudem o nome em Projeto → Configurações do Projeto... e rodem. Commit. - Equipe GDevelop: copiem o jogo de referência mais parecido (Módulos 3, 4, 6 ou 7), renomeiem e apaguem o que não serve. Commit.
- Rodem o teste automático do kit (equipe Godot), seguindo
testes/godot/LEIAME.md. Deve dar 22 de 22 antes de mudarem qualquer coisa.
Parte C. Primeiro passo da fatia (100 min)
- Façam o menor pedaço do laço central funcionar, com quadrados (
ColorRect,Polygon2Dou formas prontas). Commit e demonstração ao professor.
Imagens
../../../recursos/imagens/godot/kit-equipe-tela-inicio.png
: tela de início do kit.../../../recursos/imagens/godot/kit-equipe-tela-jogo.png
: cena do jogo do kit, com placar e tempo.
Indicação da interface
| Item | Nome na tela |
|---|---|
| abrir o kit | Gerenciador de Projetos → Importar Projeto Existente |
| mudar o nome do jogo | Projeto → Configurações do Projeto... → Geral → Application → Config → Name |
| o menu de pausa continuar rodando | no nó Pausa, Inspetor → Process → Mode = Always |
O caminho Application → Config → Name dentro da aba Geral não foi conferido na tela (como o Main Scene no Módulo 8).
O código completo
kit/modelo-godot/scripts/pausa.gd:
extends CanvasLayer
## Menu de pausa. Esc ou P pausam e despausam. Este nó continua rodando
## com o jogo pausado porque o "Process > Mode" dele está em "Always".
func _ready() -> void:
hide()
func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("pausar"):
alternar()
get_viewport().set_input_as_handled()
func alternar() -> void:
get_tree().paused = not get_tree().paused
visible = get_tree().paused
func _on_continuar_pressed() -> void:
alternar()
func _on_sair_pressed() -> void:
get_tree().paused = false
get_tree().change_scene_to_file("res://cenas/inicio.tscn")Explicação do código
not get_tree().pausedinverte: se estava pausado, despausa, e o contrário.set_input_as_handled()diz "esta tecla já foi usada", para ela não chegar também ao jogo.- Em Sair para o início, é preciso despausar antes de trocar de cena; senão a tela de início abriria pausada.
Resultado esperado
Protótipo de papel testado e ajustado; projeto da equipe criado a partir do kit (ou de um jogo do GDevelop), rodando, no Git, com o primeiro pedaço do laço central.
Problemas comuns
| Sintoma | Causa | Solução |
|---|---|---|
| a equipe quer desenhar antes de programar | ansiedade pela aparência | arte final só no Ciclo 3; agora, quadrados |
| a tela de início abre travada depois de sair da pausa | trocou de cena sem despausar | get_tree().paused = false antes |
| o menu de pausa não responde | Process → Mode não está em Always | conferir no Inspetor |
| o teste do kit falha depois das mudanças | mudaram nomes de nós que o teste procura | normal; o teste vale para o kit original |
Exercício guiado
Por que o Ciclo 1 usa quadrados no lugar da arte? (Resposta: para descobrir cedo se o laço central funciona e diverte; arte bonita num jogo sem graça é trabalho perdido.)
Desafio individual
Acrescente ao menu de pausa um botão Reiniciar que recarrega a cena do jogo (get_tree().reload_current_scene()), lembrando de despausar antes.
Desafio avançado (opcional)
Escreva uma verificação nova no teste do kit para o botão Reiniciar.
Critérios de avaliação
- Protótipo de papel jogado por gente de fora da equipe.
- Projeto na ferramenta, no Git, rodando.
- Laço central começando a funcionar.
Checklist de conclusão
Extensão
Desenhe a fatia jogável de um jogo que você conhece: o que é o mínimo para ele já ser "aquele jogo"?