Recorrido
Aprende Lua
Un curso de Lua online, gratis e interactivo. Escribes Lua en cada lección — sintaxis, tablas, funciones, metatables y las bases que necesitas para scripting en Roblox y motores de juegos — con pistas de IA cuando algo te devuelve nil, y un certificado gratis al terminar.
52,312+ codders inscritos
- Apto para principiantes
Ayuda de codificación con IA
Lecciones interactivas prácticas
Narración de audio en cada lección
Cuestionarios para poner a prueba tu conocimiento
Certificado gratuito de finalización
Programa
Sección 1
Fundamentals
Empezar secciónEmpezarExpandirContraerThe first section in Lua for absolute beginners.Introducción
3 lecciones216- 01El lenguajeReto
- 02¡Hola mundo!RetoQuizAudio
- 03ComentariosQuizAudio
Variables y tipos de datos
8 lecciones754- 01¿Qué es una variable?RetoQuizAudio
- 02NúmerosRetoQuizAudio
- 03StringsRetoQuizAudio
- 04BooleanosRetoQuizAudio
- 05El valor 'nil'RetoQuizAudio
- 06La función type()RetoQuizAudio
- 07Convenciones de nomenclaturaQuizAudio
- 08Resumen - Perfil de personajeReto
Operadores 1: Aritmética y Concatenación
6 lecciones636- 01Operadores aritméticosRetoQuizAudio
- 02Operador de móduloRetoQuizAudio
- 03Operador de exponenciaciónRetoQuizAudio
- 04Concatenación de stringsRetoQuizAudio
- 05Precedencia de operadoresRetoQuizAudio
- 06Resumen: Cálculos sencillosReto
Operadores 2 Relacionales y Lógicos
8 lecciones651- 01Operadores de IgualdadRetoQuizAudio
- 02Operadores RelacionalesRetoQuizAudio
- 03El Operador 'and'RetoQuizAudio
- 04El Operador 'or'RetoQuizAudio
- 05El Operador 'not'RetoQuizAudio
- 06Evaluación de CortocircuitoQuizAudio
- 07Valores Truthy y FalsyQuizAudio
- 08Resumen - Lógica SimpleReto
Salida básica
9 lecciones954- 01Imprimir literalesRetoQuizAudio
- 02Imprimir variablesRetoQuizAudio
- 03Imprimir múltiples valoresRetoQuizAudio
- 04Combinar cadenas y variablesRetoQuizAudio
- 05La función tostring()RetoQuizAudio
- 06EntradaRetoQuizAudio
- 07Conversión de tipos (Cast)RetoQuizAudio
- 08Resumen - Informe de estadoReto
- 09Resumen - Hasta 120Reto
Proyecto: Mostrar estadísticas del personaje
Proyecto5 lecciones1- 01Mensaje de bienvenidaReto
- 02Declarar estadísticas del personajeProyecto
- 03Mostrar estadísticas básicasProyecto
- 04Añadir un flag booleanoProyecto
- 05Resumen finalProyecto
Lógica condicional básica
4 lecciones423- 01La sentencia if-thenRetoQuizAudio
- 02La sentencia if-then-elseRetoQuizAudio
- 03La sentencia elseifRetoQuizAudio
- 04Resumen - Cofre del tesoroReto
Fundamentos de manipulación de strings
6 lecciones638- 01string.len()RetoQuizAudio
- 02string.upper & string.lowerRetoQuizAudio
- 03string.sub()RetoQuizAudio
- 04string.rep()RetoQuizAudio
- 05string.find()RetoQuizAudio
- 06Repaso - Formatear nombre de usuarioReto
Fundamentos de las funciones
6 lecciones636- 01Declarar una funciónRetoQuizAudio
- 02Llamar a una funciónRetoQuizAudio
- 03Funciones con parámetrosRetoQuizAudio
- 04Funciones con múltiples parámetrosRetoQuizAudio
- 05La sentencia 'return'RetoQuizAudio
- 06Repaso - Calculadora de áreaReto
Tablas Parte 1: Estilo de lista
8 lecciones752- 01¿Qué es una tabla?QuizAudio
- 02Crear una tablaRetoQuizAudio
- 03Acceder a elementos por índiceRetoQuizAudio
- 04Modificar elementos por índiceRetoQuizAudio
- 05El operador de longitud '#'RetoQuizAudio
- 06table.insert()RetoQuizAudio
- 07table.remove()RetoQuizAudio
- 08Resumen - Gestionar miembros del grupoReto
Tablas 2: Estilo Diccionario
7 lecciones648- 01Pares Clave-ValorQuizAudio
- 02Creación de Tablas Estilo DiccionarioRetoQuizAudio
- 03Acceso - Notación de CorchetesRetoQuizAudio
- 04Acceso con Notación de PuntoRetoQuizAudio
- 05Añadir y Modificar ParesRetoQuizAudio
- 06Eliminar Pares con nilRetoQuizAudio
- 07Resumen - Propiedades de ElementosReto
Conceptos básicos de bucles
6 lecciones636- 01El bucle whileRetoQuizAudio
- 02El bucle repeat-untilRetoQuizAudio
- 03El bucle for numéricoRetoQuizAudio
- 04Bucle for con pasoRetoQuizAudio
- 05La sentencia 'break'RetoQuizAudio
- 06Resumen - Cuenta regresivaReto
Proyecto: Tienda de pociones sencilla
Proyecto6 lecciones1- 01Configuración del proyectoReto
- 02Añadir una pociónProyecto
- 03Mostrar el inventarioProyecto
- 04Calcular el valor total del stockProyecto
- 05Buscar una poción específicaProyecto
- 06Vender una pociónProyecto
Ámbito de las variables
5 lecciones330- 01Variables globalesQuizAudio
- 02Variables localesRetoQuizAudio
- 03¿Por qué usar variables locales?QuizAudio
- 04Ámbito y bloquesRetoQuizAudio
- 05Repaso - El acertijo del ámbitoReto
Desafíos finales
3 lecciones3- 01Repaso - Turno del jugadorReto
- 02Repaso - Base de datos simpleReto
- 03Repaso - Suma de números paresReto
Sección 2
Logic & Flow
Empezar secciónEmpezarExpandirContraerDevelop problem-solving skills and create dynamic, interactive programsIteración avanzada de tablas
4 lecciones423- 01Iterar con pairs()RetoQuiz
- 02Iterar con ipairs()RetoQuiz
- 03pairs() vs. ipairs()RetoQuiz
- 04Resumen - Ficha de personajeReto
Más funciones de la librería table
5 lecciones430- 01table.concat()RetoQuiz
- 02Construcción de tablas y unpack()RetoQuiz
- 03table.sort()RetoQuiz
- 04Ordenamiento personalizado con funcionesQuiz
- 05Repaso - Tabla de puntuaciones altasReto
Conceptos avanzados de funciones
6 lecciones539- 01Retorno de múltiples valoresQuiz
- 02Funciones variádicas (...)RetoQuiz
- 03Funciones como valores de primera claseRetoQuiz
- 04Funciones anónimasRetoQuiz
- 05¿Qué es un Closure?RetoQuiz
- 06Resumen - Manejador de eventos simpleReto
Introducción a las Metatablas
8 lecciones757- 01¿Qué es una Metatabla?Quiz
- 02setmetatable y getmetatableRetoQuiz
- 03El metamétodo __indexRetoQuiz
- 04El metamétodo __newindexRetoQuiz
- 05El metamétodo __tostringRetoQuiz
- 06Metamétodos aritméticos - Parte 1RetoQuiz
- 07Metamétodos aritméticos - Parte 2RetoQuiz
- 08Resumen - Tablas de solo lecturaReto
Proyecto: Motor de aventura de texto
Proyecto8 lecciones1- 01Configuración del proyecto: La habitaciónReto
- 02Conectar habitacionesProyecto
- 03Estado del jugadorProyecto
- 04El bucle del juegoProyecto
- 05Manejo de la entrada del usuarioProyecto
- 06Mover al jugadorProyecto
- 07Manejo de movimientos no válidosProyecto
- 08Mostrar las salidasProyecto
Manejo de errores
3 lecciones216- 01La función error()Quiz
- 02Llamadas protegidas con pcall()RetoQuiz
- 03Resumen - División seguraReto
Manipulación avanzada de cadenas
6 lecciones641- 01string.gsub() para sustituciónRetoQuiz
- 02Introducción a patrones de cadenasRetoQuiz
- 03string.find()RetoQuiz
- 04string.match()RetoQuiz
- 05Iteración con string.gmatch()RetoQuiz
- 06Resumen - Analizador de archivos LogReto
Proyecto: Lista de contactos
Proyecto7 lecciones1- 01Configuración del proyectoReto
- 02El bucle principalProyecto
- 03Añadir un contactoProyecto
- 04Listar todos los contactosProyecto
- 05Buscar un contactoProyecto
- 06Eliminar un contactoProyecto
- 07Manejo de entradas no válidasProyecto
Corrutinas para principiantes
7 lecciones638- 01¿Qué es una corrutina?Quiz
- 02coroutine create y resumeRetoQuiz
- 03Pausar con coroutine.yield()RetoQuiz
- 04resume y yieldRetoQuiz
- 05Comprobar el estado de la corrutinaRetoQuiz
- 06Resumen - Generador de númerosReto
- 07Resumen - Matemática de vectoresReto
Sección 3
Object Oriented Programming
Empezar secciónEmpezarExpandirContraerDiscover how to organize code with classes, objects, and reusable structuresEl concepto de 'self'
5 lecciones532- 01Tablas con funcionesRetoQuiz
- 02'self' explícitoRetoQuiz
- 03La sintaxis de dos puntosRetoQuiz
- 04Punto vs. dos puntosRetoQuiz
- 05Resumen - Punto en movimientoReto
Patrón de prototipo de clase
6 lecciones641- 01El concepto de prototipoRetoQuiz
- 02Vinculación con __indexRetoQuiz
- 03El constructor :new()RetoQuiz
- 04Inicialización de atributosRetoQuiz
- 05Instancias independientesRetoQuiz
- 06Resumen - Fábrica de cochesReto
Estado y Comportamiento de los Objetos
7 lecciones748- 01Variables de InstanciaRetoQuiz
- 02Métodos GetterRetoQuiz
- 03Métodos SetterRetoQuiz
- 04Propiedades CalculadasRetoQuiz
- 05Formateo de StringsRetoQuiz
- 06Comprobaciones de IgualdadRetoQuiz
- 07Resumen - Calificación del EstudianteReto
Proyecto: Banco Digital
Proyecto7 lecciones1- 01Configuración del proyectoReto
- 02Método de depósitoProyecto
- 03Método de retiroProyecto
- 04Obtener saldoProyecto
- 05Información de la cuentaProyecto
- 06Transferir fondosProyecto
- 07Prueba bancaria finalProyecto
Sobrecarga de operadores en POO
5 lecciones531- 01Sumar objetosRetoQuiz
- 02Restar objetosRetoQuiz
- 03Concatenar objetosRetoQuiz
- 04Comparar objetos (<, >)RetoQuiz
- 05Resumen - Matemáticas de la billeteraReto
Fundamentos de la herencia
6 lecciones643- 01Configuración de la herenciaRetoQuiz
- 02Herencia de métodosRetoQuiz
- 03Extender el constructorRetoQuiz
- 04Añadir métodos hijosRetoQuiz
- 05Compartido vs. ÚnicoRetoQuiz
- 06Resumen: Jerarquía de formasReto
Polimorfismo y Sobrescritura
6 lecciones640- 01Sobrescritura de métodosRetoQuiz
- 02Llamar a métodos del padreRetoQuiz
- 03Duck TypingRetoQuiz
- 04Interfaz comúnRetoQuiz
- 05Comprobación de tiposRetoQuiz
- 06Repaso - Roles de empleadosReto
Encapsulamiento
6 lecciones644- 01Convenciones de nomenclaturaRetoQuiz
- 02Closures para privacidadRetoQuiz
- 03Acceso mediante ClosuresRetoQuiz
- 04Tablas de solo lecturaRetoQuiz
- 05Lógica de validaciónRetoQuiz
- 06Resumen - Bóveda seguraReto
Composición y Mixins
6 lecciones642- 01Relación "Tiene-Un"RetoQuiz
- 02DelegaciónRetoQuiz
- 03Mixins simplesRetoQuiz
- 04Aplicación de múltiples MixinsRetoQuiz
- 05Mixins vs. HerenciaRetoQuiz
- 06Resumen - Ensamblaje de robotsReto
Proyecto: Gestor de formas
Proyecto7 lecciones1- 01Configuración del proyectoReto
- 02Clase RectánguloProyecto
- 03Clase CírculoProyecto
- 04Método de perímetroProyecto
- 05Colección de formasProyecto
- 06Área totalProyecto
- 07Filtrar formasProyecto
Patrones de diseño (Lite)
5 lecciones532- 01Funciones FactoryRetoQuiz
- 02Tabla SingletonRetoQuiz
- 03Patrón IteradorRetoQuiz
- 04Observer (Listener)RetoQuiz
- 05Resumen - Logger FactoryReto
Desafíos finales
4 lecciones4- 01Repaso - Sistema de inventarioReto
- 02Repaso - Gestor de usuariosReto
- 03Repaso - Seguimiento de puntuaciónReto
- 04Verificación final de OOPReto
Por qué aprender Lua con Coddy
- Ejecuta código Lua real en tu navegador. Sin intérprete de Lua que instalar, sin configurar toolchain. Cada lección corre tu script de Lua del lado del servidor y te muestra la salida al instante.
- Lua como se usa en la realidad: variables, control de flujo, funciones, tablas (la única estructura de datos real de Lua), manipulación de strings, metatables y patrones de OOP, manejo de errores. Las bases de Lua que necesitas para Roblox, Love2D o scripting embebido.
- Las pistas de IA te ayudan a depurar tus scripts de Lua y a leer los errores sin arruinarte la respuesta, así tropiezos comunes como el nil indexing o los arreglos que empiezan en 1 se vuelven oportunidades para aprender.
- Certificado gratis de Lua al terminar el curso. Una señal creíble que acompaña los juegos de Roblox, mods o proyectos de scripting embebido que hayas construido.
Preguntas frecuentes sobre aprender Lua
¿Para qué se usa Lua?
Lua se usa principalmente como lenguaje de scripting embebido dentro de aplicaciones más grandes, sobre todo motores de juegos. El scripting de Roblox (Luau es un dialecto de Lua específico de Roblox), Love2D, los addons de World of Warcraft, Defold y Garry's Mod usan Lua. Fuera de los juegos, Lua también se usa para configuración, automatización y sistemas embebidos.
¿Lua es fácil de aprender?
Lua es uno de los lenguajes de programación más pequeños y simples — el manual de referencia completo cabe en un PDF corto, y básicamente hay una sola estructura de datos principal (la tabla). La mayoría de los principiantes logra su primer programa funcional en Lua dentro de la primera hora. Las partes más complicadas (metatables, closures, coroutines) llegan después y se introducen poco a poco.
¿Debería aprender Lua para Roblox?
Sí. Lua (específicamente el dialecto Luau que usa Roblox) es el único lenguaje de scripting para los juegos de Roblox. El curso de Lua cubre el mismo lenguaje base en el que se apoya Luau (variables, tablas, funciones, metatables, patrones de OOP), así que terminarlo te da una ventaja real para empezar a hacer scripting en Roblox.
¿Cuánto se tarda en aprender Lua?
Los fundamentos de Lua —variables, condicionales, bucles, funciones, tablas— toman de una a dos semanas de práctica diaria. Sentirte cómodo con metatables, closures y patrones de OOP en Lua suele llevar otras dos a cuatro semanas. A partir de ahí, aplicar Lua dentro de Roblox o de otro motor de juegos es una curva de aprendizaje aparte, encima del lenguaje.
¿Puedo aprender Lua online gratis?
Sí. El curso interactivo de Lua es gratis: lecciones, ejercicios de código, cuestionarios y un certificado. Lua se ejecuta del lado del servidor, así que no necesitas instalar Lua ni ningún motor de juegos en tu computadora para empezar a escribir código.
¿Recibo un certificado al terminar el curso de Lua?
Sí. Al terminar el curso de Lua obtienes un certificado de finalización gratuito que puedes agregar a tu currículum o compartir en LinkedIn junto con los juegos de Roblox, mods o proyectos de scripting que hayas hecho.