0Pricing
Lua Academy · Lección

Configuración basada en datos y hot-reload

Cargue datos del juego desde archivos Lua y vuelva a cargar los scripts durante la ejecución.

Configuración basada en datos y hot-reload es una lección gratuita de Lua Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Lua Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Lua Academy incluye 4 lecciones en total.

¿Qué es el diseño basado en datos?

El diseño basado en datos separa el qué (datos: estadísticas, niveles, distribuciones) del cómo (código: lógica del juego). Los cambios en los datos no requieren recompilar.

Cargar la configuración desde un archivo de Lua

Un archivo de configuración es un script de Lua que devuelve una tabla. Cárguelo con dofile o loadfile + pcall.

-- config.lua
return {
  playerSpeed = 200,
  gravity     = 980,
  maxEnemies  = 10,
}

Leer la configuración

En el script anfitrión, cargue y utilice la tabla de configuración.

local config = dofile("config.lua")
print(config.playerSpeed)  -- 200

Carga de configuración en un entorno aislado

Por seguridad, cargue la configuración en un entorno restringido para que el código malicioso no pueda llamar a os.execute ni a otras funciones peligrosas.

local function loadConfig(filename)
  local chunk, err = loadfile(filename)
  if not chunk then error(err) end
  local env = {math = math, table = table}
  setfenv and setfenv(chunk, env) or _ENV  -- 5.1 vs 5.2+
  return chunk()
end

Descripción general de la recarga en caliente

La recarga en caliente permite cambiar los datos (o el código) mientras el juego se está ejecutando. Esto acelera enormemente la iteración: ajuste un valor y vea el resultado de inmediato, sin reiniciar.

Detectar cambios en archivos

Utilice os.difftime(os.time(), lastModified) o consulte periódicamente la hora de modificación de un archivo mediante una extensión de C o un mecanismo de E/S para detectar cuándo ha cambiado un archivo de configuración.

Recargar la configuración

Cuando detecte un cambio, vuelva a cargar el archivo y actualice la tabla de configuración activa en el mismo sitio, para que todas las referencias a la tabla vean los nuevos valores.

local function hotReload(config, filename)
  local ok, newCfg = pcall(dofile, filename)
  if ok and type(newCfg) == "table" then
    for k, v in pairs(newCfg) do config[k] = v end
    print("Config reloaded")
  else
    print("Reload error:", newCfg)
  end
end

Recargar módulos de Lua

Elimine un módulo de package.loaded antes de volver a llamar a require para forzar una carga nueva.

package.loaded["mymodule"] = nil
local mymodule = require("mymodule")

Datos de niveles desde Lua

Defina los niveles como tablas de Lua: distribuciones de habitaciones, posiciones de enemigos y zonas de activación. Cárguelos durante la ejecución con dofile para iterar rápidamente.

-- level1.lua
return {
  name = "Forest",
  enemies = {
    {type="goblin", x=100, y=200},
    {type="troll",  x=300, y=150},
  },
  music = "forest_theme.ogg",
}

Validación

Después de cargar la configuración, valide los campos y tipos requeridos. Proporcione mensajes de error claros para los datos ausentes o con formato incorrecto.

Etiquetas de versión

Incluya un campo version en los archivos de configuración. Rechace los archivos con versiones incompatibles para evitar errores silenciosos causados por datos obsoletos.

Pregunta sobre la recarga en caliente

¿Cómo se fuerza a Lua a recargar un módulo almacenado en caché?

Resumen: configuración basada en datos y recarga en caliente

Cargue los datos del juego desde archivos de Lua con dofile/loadfile. Utilice entornos aislados para configuraciones que no sean de confianza. Implemente la recarga en caliente consultando periódicamente las horas de modificación de los archivos y borrando package.loaded para recargar módulos.

Preguntas frecuentes

¿La lección «Configuración basada en datos y hot-reload» es gratis?

Sí — el texto completo de «Configuración basada en datos y hot-reload» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Lua Academy, actualiza a CoddyKit PRO. El curso de Lua Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Configuración basada en datos y hot-reload»?

Cargue datos del juego desde archivos Lua y vuelva a cargar los scripts durante la ejecución. Practicas Lua Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Lua Academy?

No se requiere experiencia previa. Lua Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Configuración basada en datos y hot-reload»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Lua Academy?

Sí. Cada lección de Lua Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Sistemas de eventos en Lua
  2. Scripting basado en componentes
  3. Comportamiento de IA con máquinas de estados
  4. Configuración basada en datos y hot-reload
← Volver a Lua Academy