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 (testado)
  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 6 · Aula 6.5 · Salvar o progresso

Carga horáriaDificuldadeFerramentaCompetências
8 h/a⭐⭐⭐GDevelop 5C2, C6

Objetivos de aprendizagem

  1. Explicar a diferença entre variável (some ao fechar o jogo) e armazenamento (fica guardado).
  2. Salvar um número no armazenamento quando o jogador termina uma fase.
  3. Ler esse número ao abrir o menu, só se ele existir.
  4. Apagar o progresso salvo.
  5. Saber onde o navegador guarda esses dados e o que isso significa para a privacidade.

Pré-requisitos

Aulas 6.2 e 4.9 (variáveis globais).

Materiais

Computador com o GDevelop.

Conceitos

Variável × armazenamento. Variáveis (até as globais) vivem enquanto o jogo está aberto. Fechou a aba, sumiram. O armazenamento grava no próprio dispositivo e continua lá na próxima vez.

Armazenamento e grupo. O armazenamento tem um nome ("progresso") e dentro dele ficam grupos com nome ("faseLiberada"), cada um com um valor. É como uma gaveta com etiquetas.

As quatro instruções do Cajueiral:

Instrução (como aparece)TipoPara quê
Salvar um valoraçãograva FaseLiberada no grupo "faseLiberada" do armazenamento "progresso"
Existência de um grupocondiçãoconfere se já existe algo salvo, para não ler o que não existe
Carregar um valoraçãolê o grupo e põe numa variável
Limpar um armazenamentoaçãoapaga tudo do armazenamento "progresso"

Salvar só quando melhora. O jogo grava Fase + 1 só se for maior que o que já estava liberado. Quem rejoga a fase 1 depois de chegar à 3 não perde o progresso.

Onde fica, no navegador. Num jogo web, o GDevelop guarda o armazenamento no espaço do próprio navegador para aquele site. No teste, apareceu com o nome GDJS_progresso. Outro navegador, outro computador ou uma janela anônima não têm esse dado. Limpar os dados do navegador apaga o progresso.

Privacidade. Só guarde o necessário. O Cajueiral guarda um número. Nunca guarde nome completo, telefone ou senha de jogador num jogo escolar.

Exemplos

JogoO que salva
O Cajueirala maior fase liberada
jogos de quebra-cabeçaestrelas de cada fase
jogos de corridamelhor tempo de cada pista

Tutorial passo a passo

Parte A. Salvar (60 min)

  1. Variável global FaseLiberada, número, valor 1.
  2. No evento da saída (Aula 6.2), um subevento: Comparar dois números Fase + 1 > FaseLiberada → FaseLiberada = Fase + 1 e Salvar um valor: armazenamento "progresso", grupo "faseLiberada", valor FaseLiberada.

Parte B. Carregar (60 min)

  1. Na cena Menu, evento com duas condições: No começo da cena e Existência de um grupo "faseLiberada" no armazenamento "progresso".
  2. Ação Carregar um valor: grupo "faseLiberada" do armazenamento "progresso", guardar em FaseLiberada.
  3. Mostre FaseLiberada num texto provisório para conferir.

Parte C. Provar que ficou salvo (60 min)

  1. Visualizar, passe a fase 1, feche a janela do jogo, Visualizar de novo. O menu lembra?
  2. Feche o GDevelop inteiro e abra de novo. Ainda lembra? Anote.

Parte D. Apagar (30 min)

  1. No menu: tecla [R] → Limpar um armazenamento "progresso" e FaseLiberada = 1.
  2. Teste. Por que é preciso também mudar a variável, e não só apagar o armazenamento?

Parte E. Conversa sobre privacidade (30 min)

  1. Que dados de jogador vocês acham aceitável um jogo guardar? E um aplicativo? Registre a conclusão da turma.

Imagens

  • Captura real, evento de salvar ("Salvar valor FaseLiberada em "faseLiberada" do armazenamento "progresso""): recursos/imagens/gdevelop/captura-cajueiral-regras-3.png.
  • Captura real, menu lendo e apagando o progresso: recursos/imagens/gdevelop/captura-cajueiral-menu-eventos.png.

Indicação da interface

ItemOnde fica
Instruções de armazenamentojanela de ações e condições, grupo de armazenamento (pesquise "armazenamento")
Comparar dois númerosOutras Condições

O código completo

Regras, ao passar pela porteira (subevento):
Fase + 1 > FaseLiberada   → Alterar a variável FaseLiberada: definir como Fase + 1
                            Salvar valor FaseLiberada em "faseLiberada" do armazenamento "progresso"

Cena Menu:
Comentário: Ao abrir o menu, lê do armazenamento do navegador até que fase o jogador já chegou.
No começo da cena
"faseLiberada" existe no armazenamento "progresso"
    → Carregue "faseLiberada" do armazenamento "progresso" e armazene o valor em FaseLiberada

Comentário: R apaga o progresso salvo.
A tecla "r" foi pressionada   → Excluir o armazenamento "progresso"
                                 Alterar a variável FaseLiberada: definir como 1

Explicação do código

  • Sem a condição de existência, na primeira vez o jogo leria um grupo que não existe. Ela deixa claro, para quem lê, que o primeiro acesso é um caso especial.
  • FaseLiberada = 4 depois de vencer as três fases quer dizer "terminou tudo". O menu só pergunta "≥ 2" e "≥ 3", então funciona.

Resultado esperado (testado)

Teste automático no Cajueiral: ao passar da Fase 1, FaseLiberada virou 2 e o navegador passou a ter GDJS_progresso com {"faseLiberada":{"value":2}}; depois de vencer tudo, a variável foi zerada de propósito para 1 e, ao abrir o menu, ela voltou para 4, lida do armazenamento; [R] deixou o armazenamento vazio e as fases trancadas.

Não testado: fechar e abrir o GDevelop (passo 7) e o jogo exportado num servidor web. A expectativa é que o progresso continue, porque o armazenamento fica no navegador.

Problemas comuns

SintomaCausaSolução
Sempre volta para a fase 1lê antes de existir ou nomes diferentes ao salvar e lermesmo nome de armazenamento e grupo nos dois lados
Progresso some ao trocar de navegadoro dado fica em cada navegadoré assim mesmo; avisar o jogador
[R] não destranca na horaapagou o armazenamento mas a variável continua 3também pôr FaseLiberada = 1
Rejogar a fase 1 tranca a fase 3salva sem compararsalvar só se Fase + 1 > FaseLiberada

Exercício guiado

FaseLiberada = 3. O jogador termina a Fase 1 de novo. O que é salvo? (Resposta: nada; Fase + 1 = 2 não é maior que 3.)

Desafio individual

Salve também o menor número de vezes que o jogador foi pego em cada fase (grupos "pegoFase1", "pegoFase2"...) e mostre no menu.

Desafio avançado (opcional)

O GDevelop tem ações para salvar o jogo inteiro (posição de todos os objetos) no armazenamento do dispositivo ("Salvar jogo no armazenamento do dispositivo"). Faça uma cena de teste e descubra o que é salvo. Este caminho não foi testado no curso.

Critérios de avaliação

  • Progresso salvo, lido e apagado corretamente.
  • Registro do teste de fechar e abrir.
  • Participação na conversa sobre privacidade.

Checklist de conclusão

Extensão

Matemática/Informática: o valor foi salvo como texto {"faseLiberada":{"value":2}}. Esse formato se chama JSON. Escreva no mesmo formato um "progresso" com três números: fase liberada, castanhas e vezes que foi pego.