Skip to main content

Cómo cargar y guardar datos de juegos en el Corona SDK (LUA / SQLite)

234 - Aplicación Comercial: Pedidos Android Xamarin - Parte I (Junio 2026)

234 - Aplicación Comercial: Pedidos Android Xamarin - Parte I (Junio 2026)
Anonim

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 usar para asegurar la compatibilidad al realizar actualizaciones, o configuraciones simples como encender o apagar el sonido del juego.

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

Tenga en cuenta que esta técnica puede ir más allá de almacenar configuraciones basadas en el usuario. Por ejemplo, qué pasa si tienes un juego que se puede jugar con 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 sale del juego y lo reinicia.

Inicializando la base de datos y creando la tabla de configuraciones.

Lo primero que debemos hacer es declarar la biblioteca SQLite e indicar 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 de requisitos. El archivo de la base de datos se creará si no se encuentra ninguno, y lo guardaremos 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 en todo 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.

A continuación, debemos crear la tabla de 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 poner esta declaración justo donde hemos declarado 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 inicie la aplicación y (2) ejecutarla antes de cualquier llamada para cargar o guardar configuraciones.

Guardando configuraciones en la base de datos.

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

función setSettingString (nombre, valor) setSetting (nombre, "'" … valor .. "'"); final

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

Cargando configuraciones desde la base de datos.

función getSetting (nombre)

local sql = "SELECT * FROM settings WHERE name = '" .. name .. "'"; valor local = -1;

para la fila en db: nrows (sql) do value = row.value; fin

valor de retorno; final

function getSettingString (name) local sql = "SELECT * FROM settings DONDE name = '" .. name .. "'"; valor local = '';

para la fila en db: nrows (sql) do value = row.value; fin

valor de retorno; final

Como anteriormente, 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 que podamos 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. El getSettingString devolverá una cadena en blanco.

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

Usando nuestra tabla de ajustes.

Ahora que hemos terminado el trabajo duro, podemos cargar y guardar configuraciones fácilmente 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')) entonces audio.play (soundID) finaliza

Para volver a activar el sonido, simplemente configuramos el ajuste 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 puntuación más alta.