Cómo cargar y guardar datos del juego en Corona SDK

Una cosa que casi todas las aplicaciones y juegos tienen en común es la necesidad de almacenar y recuperar datos. Incluso el juego más simple puede utilizar SQLite para guardar el número de versión de la aplicación, que se puede utilizar para garantizar la compatibilidad al realizar actualizaciones o configuraciones simples como activar o desactivar el sonido del juego.

Una cosa que casi todas las aplicaciones y juegos tienen en común es la necesidad de almacenar y recuperar datos. Incluso el juego más simple puede utilizar SQLite para guardar el número de versión de la aplicación, que se puede utilizar para garantizar la compatibilidad al realizar actualizaciones o configuraciones simples como activar o desactivar el sonido del juego.

Si nunca ha trabajado mucho con las bases de datos o ha utilizado las funciones de la base de datos en Corona SDK, no se preocupe. Es un proceso relativamente sencillo gracias a la potencia de LUA y al motor de base de datos SQLite utilizado en el Corona SDK. Este tutorial explicará el proceso de creación de una tabla de configuración y el almacenamiento y la recuperación de información.

Tenga en cuenta que esta técnica puede ir más allá del almacenamiento de configuraciones basadas en el usuario. Por ejemplo, ¿qué pasa si tienes un juego que se puede jugar usando diferentes modos de juego, como el modo «historia» y el modo «arcade». Esta tabla de configuración se puede utilizar para almacenar el modo actual. Cualquier otro dato que desee que permanezca persistente incluso si el usuario abandona el juego y lo reinicia.

Inicializar la base de datos y crear la tabla de configuración

Lo primero que debemos hacer es declarar la biblioteca SQLite y decirle a nuestra aplicación dónde encontrar el archivo de la base de datos. El mejor lugar para colocar este código es justo en la parte superior del archivo main.lua junto con las otras declaraciones requeridas. El archivo de la base de datos se creará si no se encuentra ninguno, y lo almacenaremos en la carpeta Documentos para que podamos leerlo y escribir en él.

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

Observe cómo la variable «db» no está localizada. Hemos hecho esto para asegurarnos de que podemos acceder a la base de datos a lo largo de nuestro proyecto. También puede crear un archivo .lua específico para todas las funciones de la base de datos y mantener la base de datos localizada en ese archivo.

Luego, necesitamos crear la tabla de la base de datos que almacenará nuestra configuración:

 local sql = "CREAR TABLA SI NO EXISTE la configuración (nombre, valor);" db: exec (sql); 

Esta declaración crea nuestra tabla de configuración. Está bien ejecutarlo cada vez que se carga la aplicación porque si la tabla ya existe, esta declaración no hará nada. Puede colocar esta declaración justo donde declaramos la base de datos o en la función que configura su aplicación para que se ejecute. El requisito principal es (1) ejecutar esas declaraciones cada vez que se inicia la aplicación y (2) ejecutarla antes de cualquier llamada para cargar o guardar configuraciones.

Guardar configuración en la base de datos

 function setSetting (name, value) sql = "DELETE FROM settings WHERE name = '" .. name .. "'"; db: exec (sql) sql = "INSERT INTO settings (name, value) VALUES ('" ..name .. "'," .. value .. ");"; db: exec (sql) end 
function setSettingString (nombre, valor) setSetting (name, "'" .. value .. "'"); end

La función de configuración elimina cualquier configuración anterior guardada en la tabla e inserta nuestro nuevo valor. Funcionará tanto con enteros como con cadenas, pero guardar una cadena requiere comillas simples alrededor del valor, por lo que hemos utilizado la función setSettingString para hacer ese trabajo extra para nosotros.

Cargando configuraciones desde la base de datos

 function getSetting (name) 
local sql = "SELECT * FROM settings WHERE name = '" .. name .. "'"; valor local = -1;
para fila en db: nrows (sql) do value = row.value; end
valor de retorno; end
función getSettingString (name) local sql = "SELECT * FROM settings WHERE name = '" .. name .. "'"; valor local = '';
para fila en db: nrows (sql) do value = row.value; fin
valor de retorno; fin

Como arriba, hemos dividido las funciones en dos versiones: una para enteros y otra para cadenas. La razón principal por la que hemos hecho esto es para poder inicializarlos con valores específicos si no existe una configuración en la base de datos. La función getSetting devolverá un -1, lo que nos permitirá saber que la configuración no se ha guardado. GetSettingString devolverá una cadena en blanco.

La función getSettingString es completamente opcional. La única diferencia entre ella y la función getSetting normal es lo que se devuelve si no se encuentra nada en la base de datos.

Usando nuestra tabla de configuraciones

Ahora que tenemos el arduo trabajo realizado, podemos cargar y guardar fácilmente la configuración en una base de datos localizada. Por ejemplo, podríamos silenciar el sonido con la siguiente declaración:

 setSetting ('sonido', falso); 

Y podríamos utilizar la configuración en una función global para reproducir sonidos:

 función playSound (soundID) if (getSetting ('sound')) luego audio.play (soundID) endend 

Para volver a activar el sonido, simplemente establecemos la configuración de sonido en verdadero:

 setSetting ('sonido', verdadero); 

Lo bueno de estas funciones es que puede guardar cadenas o enteros en la tabla de configuración y recuperarlos fácilmente.Esto le permite hacer cualquier cosa, desde guardar el nombre de un jugador hasta guardar su puntaje más alto.

Rate article
labsfabs.com
Add a comment