Jornada
Aprenda Lua
Um curso de Lua online, interativo e gratuito. Você escreve Lua em cada lição — sintaxe, tables, funções, metatables e a base que você precisa para scripting no Roblox e trabalho com game engines — com dicas de IA quando algo dá nil, e um certificado gratuito ao concluir.
52,312+ codders inscritos
- Ideal para iniciantes
Ajuda de codificação com IA
Lições interativas e práticas
Narração em áudio em todas as lições
Questionários para testar seu conhecimento
Certificado grátis de conclusão
Programa
Seção 1
Fundamentals
Começar seçãoIniciarExpandirRecolherThe first section in Lua for absolute beginners.Introdução
3 lições216- 01A LinguagemDesafio
- 02Olá Mundo!DesafioQuizÁudio
- 03ComentáriosQuizÁudio
Variáveis e Tipos de Dados
8 lições754- 01O que é uma Variável?DesafioQuizÁudio
- 02NúmerosDesafioQuizÁudio
- 03StringsDesafioQuizÁudio
- 04BooleanosDesafioQuizÁudio
- 05O Valor 'nil'DesafioQuizÁudio
- 06A Função type()DesafioQuizÁudio
- 07Convenções de NomenclaturaQuizÁudio
- 08Recapitulação - Perfil de PersonagemDesafio
Operadores 1: Aritmética e Concatenação
6 lições636- 01Operadores AritméticosDesafioQuizÁudio
- 02Operador de MóduloDesafioQuizÁudio
- 03Operador de ExponenciaçãoDesafioQuizÁudio
- 04Concatenação de StringsDesafioQuizÁudio
- 05Precedência de OperadoresDesafioQuizÁudio
- 06Recapitulação - Cálculos SimplesDesafio
Operadores 2 Relacionais e Lógicos
8 lições651- 01Operadores de IgualdadeDesafioQuizÁudio
- 02Operadores RelacionaisDesafioQuizÁudio
- 03O Operador 'and'DesafioQuizÁudio
- 04O Operador 'or'DesafioQuizÁudio
- 05O Operador 'not'DesafioQuizÁudio
- 06Avaliação de Curto-CircuitoQuizÁudio
- 07Valores Truthy e FalsyQuizÁudio
- 08Recapitulação - Lógica SimplesDesafio
Saída Básica
9 lições954- 01Imprimindo LiteraisDesafioQuizÁudio
- 02Imprimindo VariáveisDesafioQuizÁudio
- 03Imprimindo Múltiplos ValoresDesafioQuizÁudio
- 04Combinando Strings e VariáveisDesafioQuizÁudio
- 05A Função tostring()DesafioQuizÁudio
- 06EntradaDesafioQuizÁudio
- 07CastDesafioQuizÁudio
- 08Recapitulação - Relatório de StatusDesafio
- 09Recapitulação - Até 120Desafio
Projeto: Exibição de Atributos do Personagem
Projeto5 lições1- 01Mensagem de Boas-vindasDesafio
- 02Declarar Atributos do PersonagemProjeto
- 03Exibir Atributos BásicosProjeto
- 04Adicionar uma Flag BooleanaProjeto
- 05Resumo FinalProjeto
Lógica Condicional Básica
4 lições423- 01A instrução if-thenDesafioQuizÁudio
- 02A instrução if-then-elseDesafioQuizÁudio
- 03A instrução elseifDesafioQuizÁudio
- 04Recapitulação - Baú do TesouroDesafio
Fundamentos de Manipulação de Strings
6 lições638- 01string.len()DesafioQuizÁudio
- 02string.upper & string.lowerDesafioQuizÁudio
- 03string.sub()DesafioQuizÁudio
- 04string.rep()DesafioQuizÁudio
- 05string.find()DesafioQuizÁudio
- 06Revisão - Formatar Nome de UsuárioDesafio
Fundamentos de Funções
6 lições636- 01Declarando uma FunçãoDesafioQuizÁudio
- 02Chamando uma FunçãoDesafioQuizÁudio
- 03Funções com ParâmetrosDesafioQuizÁudio
- 04Funções com Múltiplos ParâmetrosDesafioQuizÁudio
- 05A Instrução 'return'DesafioQuizÁudio
- 06Recapitulação - Calculadora de ÁreaDesafio
Tabelas Parte 1: Estilo de Lista
8 lições752- 01O que é uma Tabela?QuizÁudio
- 02Criando uma TabelaDesafioQuizÁudio
- 03Acessando Elementos por ÍndiceDesafioQuizÁudio
- 04Modificando Elementos por ÍndiceDesafioQuizÁudio
- 05O Operador de Comprimento '#'DesafioQuizÁudio
- 06table.insert()DesafioQuizÁudio
- 07table.remove()DesafioQuizÁudio
- 08Recapitulação - Gerenciar Membros do GrupoDesafio
Tabelas 2: Estilo Dicionário
7 lições648- 01Pares Chave-ValorQuizÁudio
- 02Criando Tabelas Estilo DicionárioDesafioQuizÁudio
- 03Acessando - Notação de ColchetesDesafioQuizÁudio
- 04Acessando com Notação de PontoDesafioQuizÁudio
- 05Adicionando e Modificando ParesDesafioQuizÁudio
- 06Removendo Pares com nilDesafioQuizÁudio
- 07Recapitulação - Propriedades de ItensDesafio
Fundamentos de Loops
6 lições636- 01O Loop whileDesafioQuizÁudio
- 02O Loop repeat-untilDesafioQuizÁudio
- 03O Loop for NuméricoDesafioQuizÁudio
- 04Loop for com PassoDesafioQuizÁudio
- 05A Instrução 'break'DesafioQuizÁudio
- 06Recapitulação - Contagem RegressivaDesafio
Projeto: Loja de Poções Simples
Projeto6 lições1- 01Configuração do ProjetoDesafio
- 02Adicionando uma PoçãoProjeto
- 03Exibindo o InventárioProjeto
- 04Calculando o Valor Total do EstoqueProjeto
- 05Buscando uma Poção EspecíficaProjeto
- 06Vendendo uma PoçãoProjeto
Escopo de Variáveis
5 lições330- 01Variáveis GlobaisQuizÁudio
- 02Variáveis LocaisDesafioQuizÁudio
- 03Por que usar variáveis locais?QuizÁudio
- 04Escopo e BlocosDesafioQuizÁudio
- 05Recapitulação - Desafio de EscopoDesafio
Desafios Finais
3 lições3- 01Revisão - Turno do JogadorDesafio
- 02Revisão - Banco de Dados SimplesDesafio
- 03Revisão - Soma de Números ParesDesafio
Seção 2
Logic & Flow
Começar seçãoIniciarExpandirRecolherDevelop problem-solving skills and create dynamic, interactive programsIteração Avançada de Tabelas
4 lições423- 01Iterando com pairs()DesafioQuiz
- 02Iterando com ipairs()DesafioQuiz
- 03pairs() vs. ipairs()DesafioQuiz
- 04Revisão - Ficha de PersonagemDesafio
Mais Funções da Biblioteca Table
5 lições430- 01table.concat()DesafioQuiz
- 02Construção de tabelas e unpack()DesafioQuiz
- 03table.sort()DesafioQuiz
- 04Ordenação personalizada com funçõesQuiz
- 05Recapitulação - Placar de recordesDesafio
Conceitos Avançados de Funções
6 lições539- 01Retornando Múltiplos ValoresQuiz
- 02Funções Variádicas (...)DesafioQuiz
- 03Funções como Valores de Primeira ClasseDesafioQuiz
- 04Funções AnônimasDesafioQuiz
- 05O que é uma Closure?DesafioQuiz
- 06Recapitulação - Manipulador de Eventos SimplesDesafio
Introdução às Metatabelas
8 lições757- 01O que é uma Metatabela?Quiz
- 02setmetatable & getmetatableDesafioQuiz
- 03O Metamétodo __indexDesafioQuiz
- 04O Metamétodo __newindexDesafioQuiz
- 05O Metamétodo __tostringDesafioQuiz
- 06Metamétodos Aritméticos Parte 1DesafioQuiz
- 07Metamétodos Aritméticos Parte 2DesafioQuiz
- 08Recapitulação - Tabela Somente LeituraDesafio
Projeto: Engine de Aventura de Texto
Projeto8 lições1- 01Configuração do Projeto: A SalaDesafio
- 02Conectando as SalasProjeto
- 03Estado do JogadorProjeto
- 04O Game LoopProjeto
- 05Processando a Entrada do UsuárioProjeto
- 06Movendo o JogadorProjeto
- 07Tratando Movimentos InválidosProjeto
- 08Exibindo as SaídasProjeto
Tratamento de Erros
3 lições216- 01A Função error()Quiz
- 02Chamadas Protegidas com pcall()DesafioQuiz
- 03Recapitulação - Divisão SeguraDesafio
Manipulação Avançada de Strings
6 lições641- 01string.gsub() para SubstituiçãoDesafioQuiz
- 02Introdução a Padrões de StringDesafioQuiz
- 03string.find()DesafioQuiz
- 04string.match()DesafioQuiz
- 05Iteração com string.gmatch()DesafioQuiz
- 06Recapitulação - Parser de Arquivos de LogDesafio
Projeto: Lista de Contatos
Projeto7 lições1- 01Configuração do ProjetoDesafio
- 02O Loop PrincipalProjeto
- 03Adicionando um ContatoProjeto
- 04Listando Todos os ContatosProjeto
- 05Buscando um ContatoProjeto
- 06Excluindo um ContatoProjeto
- 07Tratando Entradas InválidasProjeto
Coroutines para Iniciantes
7 lições638- 01O que é uma Coroutine?Quiz
- 02coroutine create & resumeDesafioQuiz
- 03Pausando com coroutine.yield()DesafioQuiz
- 04resume & yieldDesafioQuiz
- 05Verificando o Status da CoroutineDesafioQuiz
- 06Recapitulação - Gerador de NúmerosDesafio
- 07Recapitulação - Matemática de VetoresDesafio
Seção 3
Object Oriented Programming
Começar seçãoIniciarExpandirRecolherDiscover how to organize code with classes, objects, and reusable structuresO Conceito 'Self'
5 lições532- 01Tabelas com FunçõesDesafioQuiz
- 02'self' ExplícitoDesafioQuiz
- 03A Sintaxe de Dois-pontosDesafioQuiz
- 04Ponto vs Dois-pontosDesafioQuiz
- 05Recapitulação - Movendo o PontoDesafio
Padrão de Protótipo de Classe
6 lições641- 01O Conceito de ProtótipoDesafioQuiz
- 02Vinculando com __indexDesafioQuiz
- 03O Construtor :new()DesafioQuiz
- 04Inicializando AtributosDesafioQuiz
- 05Instâncias IndependentesDesafioQuiz
- 06Recapitulação - Fábrica de CarrosDesafio
Estado e Comportamento do Objeto
7 lições748- 01Variáveis de InstânciaDesafioQuiz
- 02Métodos GetterDesafioQuiz
- 03Métodos SetterDesafioQuiz
- 04Propriedades CalculadasDesafioQuiz
- 05Formatação de StringsDesafioQuiz
- 06Verificações de IgualdadeDesafioQuiz
- 07Recapitulação - Nota do AlunoDesafio
Projeto: Banco Digital
Projeto7 lições1- 01Configuração do ProjetoDesafio
- 02Método de DepósitoProjeto
- 03Método de SaqueProjeto
- 04Obter SaldoProjeto
- 05Informações da ContaProjeto
- 06Transferir FundosProjeto
- 07Teste Final do BancoProjeto
Sobrecarga de Operadores em POO
5 lições531- 01Somando ObjetosDesafioQuiz
- 02Subtraindo ObjetosDesafioQuiz
- 03Concatenando ObjetosDesafioQuiz
- 04Comparando Objetos (<, >)DesafioQuiz
- 05Recapitulação - Matemática de CarteiraDesafio
Fundamentos de Herança
6 lições643- 01Configurando a HerançaDesafioQuiz
- 02Herdando MétodosDesafioQuiz
- 03Estendendo o ConstrutorDesafioQuiz
- 04Adicionando Métodos FilhosDesafioQuiz
- 05Compartilhado vs ÚnicoDesafioQuiz
- 06Recapitulação - Hierarquia de FormasDesafio
Polimorfismo e Sobrescrita
6 lições640- 01Sobrescrita de MétodosDesafioQuiz
- 02Chamando Métodos da Classe PaiDesafioQuiz
- 03Duck TypingDesafioQuiz
- 04Interface ComumDesafioQuiz
- 05Verificando o TipoDesafioQuiz
- 06Recapitulação - Papéis de FuncionáriosDesafio
Encapsulamento
6 lições644- 01Convenções de NomenclaturaDesafioQuiz
- 02Closures para PrivacidadeDesafioQuiz
- 03Acesso via ClosuresDesafioQuiz
- 04Tabelas Somente LeituraDesafioQuiz
- 05Lógica de ValidaçãoDesafioQuiz
- 06Recapitulação - Cofre SeguroDesafio
Composição e Mixins
6 lições642- 01Relacionamento Tem-UmDesafioQuiz
- 02DelegaçãoDesafioQuiz
- 03Mixins SimplesDesafioQuiz
- 04Aplicando Múltiplos MixinsDesafioQuiz
- 05Mixins vs HerançaDesafioQuiz
- 06Recapitulação - Montagem de RobôDesafio
Projeto: Gerenciador de Formas
Projeto7 lições1- 01Configuração do ProjetoDesafio
- 02Classe RetânguloProjeto
- 03Classe CírculoProjeto
- 04Método PerímetroProjeto
- 05Coleção de FormasProjeto
- 06Área TotalProjeto
- 07Filtrar FormasProjeto
Padrões de Projeto (Lite)
5 lições532- 01Funções FactoryDesafioQuiz
- 02Tabela SingletonDesafioQuiz
- 03Padrão IteratorDesafioQuiz
- 04Observer (Listener)DesafioQuiz
- 05Recapitulação - Logger FactoryDesafio
Desafios Finais
4 lições4- 01Revisão - Sistema de InventárioDesafio
- 02Revisão - Gerenciador de UsuáriosDesafio
- 03Revisão - Rastreador de PontuaçãoDesafio
- 04Verificação Final de POODesafio
Por que aprender Lua com a Coddy
- Rode código Lua de verdade no navegador. Sem interpretador Lua para instalar, sem configurar toolchain. Cada aula executa seu script Lua no servidor e mostra a saída na hora.
- Lua como ele é usado de verdade: variáveis, controle de fluxo, funções, tables (a única estrutura de dados de Lua), manipulação de strings, metatables e padrões de OOP, tratamento de erros. As bases de Lua que você precisa para Roblox, Love2D ou scripting embutido.
- As dicas de IA te ajudam a depurar scripts de Lua e a entender erros sem entregar a resposta, então tropeços clássicos como indexar um nil ou esquecer que arrays começam em 1 viram momentos de aprendizado.
- Certificado grátis de Lua quando você termina o curso. Um sinal confiável ao lado de jogos no Roblox, mods ou projetos de scripting embarcado que você já construiu.
Perguntas frequentes sobre aprender Lua
Para que serve Lua?
Lua é usada principalmente como linguagem de scripting embutida dentro de aplicações maiores, especialmente em game engines. Scripting no Roblox (Luau é um dialeto de Lua específico do Roblox), Love2D, addons de World of Warcraft, Defold e Garry's Mod, todos usam Lua. Fora dos jogos, Lua também é usada para configuração, automação e sistemas embarcados.
Lua é fácil de aprender?
Lua é uma das linguagens de programação menores e mais simples — o manual de referência inteiro cabe em um PDF curto, e basicamente existe uma estrutura de dados principal (a table). A maioria dos iniciantes chega ao primeiro programa Lua funcionando ainda na primeira hora. As partes mais complicadas (metatables, closures, coroutines) vêm depois e são introduzidas aos poucos.
Devo aprender Lua para Roblox?
Sim. Lua (mais especificamente o dialeto Luau, que o Roblox usa) é a única linguagem de scripting para jogos no Roblox. O curso de Lua cobre a mesma base da linguagem em que o Luau se apoia (variáveis, tables, funções, metatables, padrões de OOP), então terminá-lo te dá uma vantagem real para começar a escrever scripts no Roblox.
Quanto tempo leva para aprender Lua?
O básico de Lua — variáveis, condicionais, loops, funções, tabelas — leva uma a duas semanas de prática diária. Pegar o jeito de metatables, closures e padrões de OOP em Lua geralmente toma mais duas a quatro semanas. A partir daí, aplicar Lua dentro do Roblox ou de outra game engine é uma curva de aprendizado à parte, somada à linguagem em si.
Posso aprender Lua online de graça?
Sim. O curso interativo de Lua é gratuito — aulas, exercícios de código, quizzes e um certificado. O Lua roda no servidor, então você não precisa instalar Lua nem nenhuma game engine localmente para começar a programar.
Recebo um certificado ao concluir o curso de Lua?
Sim. Ao concluir o curso de Lua você recebe um certificado de conclusão gratuito, que pode adicionar ao seu currículo ou compartilhar no LinkedIn junto com os jogos no Roblox, mods ou projetos de scripting que você tiver feito.