Skip to main content

Como carregar e salvar dados do jogo no Corona SDK (LUA / SQLite)

#15 - Tutorial Godot - Paths e Diretórios [PT br] (Junho 2026)

#15 - Tutorial Godot - Paths e Diretórios [PT br] (Junho 2026)
Anonim

Uma coisa que quase todos os aplicativos e jogos têm em comum é a necessidade de armazenar e recuperar dados. Até mesmo o jogo mais simples pode utilizar o SQLite para salvar o número da versão do aplicativo, que pode ser usado para garantir a compatibilidade ao realizar upgrades, ou configurações simples, como ativar ou desativar o som do jogo.

Se você nunca trabalhou muito com bancos de dados ou usou os recursos do banco de dados no Corona SDK, não se preocupe. Na verdade, é um processo relativamente simples, graças ao poder do LUA e do mecanismo de banco de dados SQLite utilizado no Corona SDK. Este tutorial irá percorrer o processo de criação de uma tabela de configurações, armazenando e recuperando informações dela.

Tenha em mente que essa técnica pode ir além do armazenamento de configurações baseadas no usuário. Por exemplo, e se você tiver um jogo que pode ser jogado usando diferentes modos de jogo, como o modo "história" e o modo "arcada". Essa tabela de configurações pode ser usada para armazenar o modo atual. Qualquer outro dado que você queira manter persistente mesmo se o usuário sair do jogo e o relançar.

Inicializando o banco de dados e criando a tabela de configurações.

A primeira coisa que precisamos fazer é declarar a biblioteca SQLite e informar ao nosso aplicativo onde encontrar o arquivo do banco de dados. O melhor lugar para colocar esse código está no topo do arquivo main.lua junto com as outras instruções require. O arquivo de banco de dados será criado se nenhum for encontrado, e nós o armazenaremos na pasta Documentos para que possamos ler e escrever nele.

require "sqlite3" local data_path = system.pathForFile ("data.db", system.DocumentsDirectory); db = sqlite3.open (data_path);

Observe como a variável "db" não está localizada. Fizemos isso para garantir que podemos acessar o banco de dados em todo o nosso projeto. Você também pode criar um arquivo .lua específico para todas as funções do banco de dados e manter o banco de dados localizado nesse arquivo.

Em seguida, precisamos criar a tabela de banco de dados que armazenará nossas configurações:

local sql = "CRIAR TABELA SE NÃO EXISTE as configurações (nome, valor);" db: exec (sql);

Esta declaração cria nossa tabela de configurações. Não há problema em executá-lo sempre que o aplicativo for carregado, porque se a tabela já existir, essa instrução não fará nada. Você pode colocar essa declaração diretamente abaixo de onde declaramos o banco de dados ou na função que configura seu aplicativo para ser executado. O principal requisito é (1) executar essas instruções toda vez que o aplicativo é iniciado e (2) executá-lo antes de qualquer chamada para carregar ou salvar configurações.

Salvando configurações no banco de dados.

function setSetting (nome, valor) sql = "DELETE FROM configurações WHERE name = '" .. name .. "'"; db: exec (sql) sql = "Configurações INSERT INTO (nome, valor) VALUES ('" ..name .. "'," .. valor .. ");"; db: exec (sql) end

function setSettingString (nome, valor) setSetting (nome, "'" .. valor .. "'"); end

A função de configuração apaga todas as configurações anteriores salvas na tabela e insere nosso novo valor. Ele funcionará com números inteiros e strings, mas salvar uma string requer aspas simples ao redor do valor, então usamos a função setSettingString para fazer esse trabalho extra para nós.

Carregando configurações do banco de dados.

function getSetting (nome)

local sql = "SELECT * FROM configurações WHERE name = '" .. name .. "'"; valor local = -1;

para linha no db: nrows (sql) do valor = row.value; fim

valor de retorno; fim

function getSettingString (name) local sql = "SELECT * FROM configurações WHERE nome = '" .. nome .. "'"; valor local = '';

para linha no db: nrows (sql) do valor = row.value; fim

valor de retorno; fim

Como acima, nós dividimos as funções em duas versões: uma para inteiros e outra para strings. A principal razão que fizemos isso é para que possamos inicializá-los com valores específicos se não houver nenhuma configuração no banco de dados. A função getSetting retornará -1, o que nos informará que a configuração não foi salva. O getSettingString retornará uma string em branco.

A função getSettingString é completamente opcional. A única diferença entre ele e a função normal getSetting é o que é retornado se nada for encontrado no banco de dados.

Usando nossa tabela de configurações.

Agora que temos o trabalho pesado feito, podemos facilmente carregar e salvar configurações em um banco de dados localizado. Por exemplo, podemos silenciar o som com a seguinte declaração:

setSetting ('som', falso);

E poderíamos utilizar a configuração em uma função global para reproduzir sons:

function playSound (soundID) if (getSetting ('sound')), em seguida, audio.play (soundID) endend

Para reativar o som, simplesmente definimos a configuração do som como true:

setSetting ('som', verdadeiro);

A parte interessante sobre essas funções é que você pode salvar seqüências de caracteres ou números inteiros na tabela de configurações e recuperá-los facilmente. Isso permite que você faça qualquer coisa, desde salvar o nome de um jogador até salvar sua pontuação mais alta.