Pular para o conteúdo
Jogos Digitais
Nesta página
  1. Objetivos de aprendizagem
  2. Pré-requisitos
  3. Materiais
  4. Conceitos
  5. Exemplos
  6. Tutorial passo a passo
  7. Imagens
  8. Indicação da interface
  9. O código completo
  10. Explicação do código
  11. Resultado esperado
  12. Problemas comuns
  13. Exercício guiado
  14. Desafio individual
  15. Desafio avançado (opcional)
  16. Critérios de avaliação
  17. Checklist de conclusão
  18. Extensão

Módulo 11 · Aula 11.5 · Protótipo de papel e fatia jogável

Carga horáriaDificuldadeFerramentaCompetências
10 h/a⭐⭐⭐papel; GDevelop ou Godot (kit/modelo-godot)C2, C3

Objetivos de aprendizagem

  1. Testar o laço central no papel antes de programar.
  2. Começar o projeto na ferramenta a partir de uma base pronta e testada.
  3. 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 prontoOnde
tela de início (Espaço, Enter ou clique)cenas/inicio.tscn
cena do jogo com placar e tempo de 30 scenas/jogo.tscn
pausa com Esc ou P, botões Continuar e Sair para o iníciocenas/pausa.tscn
tela de fim com pontos, recorde e espera de 1 scenas/fim.tscn
Autoload Global com pontos e recorde salvo em user://scripts/global.gd
Mapa de Entrada: setas e W A S D, comecar, pausarConfigurações do Projeto
.gitignore, CREDITOS.md, pastas imagens, sons, materiaisraiz 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:

  1. Em jogo.gd, apagar a linha que soma ponto com Espaço e colocar a regra do jogo.
  2. Trocar os textos de inicio.tscn.
  3. Mudar DURACAO (ou tirar o tempo, se o jogo não tiver).

Tutorial passo a passo

Parte A. Protótipo de papel (150 min)

  1. Montem o laço central no papel. Uma pessoa joga; outra faz o "computador" seguindo só as regras escritas.
  2. Joguem 3 rodadas de 5 minutos com pessoas de outra equipe. Anotem onde travou e onde riu.
  3. Mudem as regras e joguem de novo. Atualizem o GDD.

Parte B. Começar o projeto (150 min)

  1. Equipe Godot: copiem a pasta kit/modelo-godot para o repositório da equipe, abram no Godot (Importar Projeto Existente), mudem o nome em Projeto → Configurações do Projeto... e rodem. Commit.
  2. 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.
  3. 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)

  1. Façam o menor pedaço do laço central funcionar, com quadrados (ColorRect, Polygon2D ou 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

ItemNome na tela
abrir o kitGerenciador de Projetos → Importar Projeto Existente
mudar o nome do jogoProjeto → Configurações do Projeto... → Geral → Application → Config → Name
o menu de pausa continuar rodandono 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().paused inverte: 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

SintomaCausaSolução
a equipe quer desenhar antes de programaransiedade pela aparênciaarte final só no Ciclo 3; agora, quadrados
a tela de início abre travada depois de sair da pausatrocou de cena sem despausarget_tree().paused = false antes
o menu de pausa não respondeProcess → Mode não está em Alwaysconferir no Inspetor
o teste do kit falha depois das mudançasmudaram nomes de nós que o teste procuranormal; 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"?