Files
project-based-learning/study/lua.md
T
2026-05-30 23:59:33 +00:00

2.5 KiB

Lua — Estudo

Fonte: project-based-learning + BYTEPATH


📚 Recursos Estudados

Tutorial Stack Tópicos
BYTEPATH #0-15 Lua + LÖVE Game loop, ECS, skills, enemies
LÖVE Wiki Lua + LÖVE 2D game engine

🎯 Aplicações no Mundo Telecom

  1. Redis Scripting — Lua embutido no Redis para scripts atômicos

    • EVAL / EVALSHA / SCRIPT LOAD
    • Operações atômicas server-side
    • Nosso cache futuro pode usar Lua
  2. Nginx/OpenResty — NPM roda em OpenResty!

    • Custom locations com Lua
    • Autenticação, rate limiting, caching
    • Plugins sem precisar de módulos C
  3. Neovim — Configuração e plugins em Lua

    • Lua substituiu Vimscript como linguagem primária
  4. Jogos — LÖVE para prototipação rápida de jogos 2D

📝 Conceitos Aprendidos

Lua Core

  • Tudo é tabela: a única estrutura de dados (array + dict)
  • Metatables: __index, __newindex, __call — herança e overload
  • First-class functions: closures, coroutines
  • Nil como delimitador: valores não declarados = nil
  • 1-indexed: arrays começam em 1 (diferente de Python/JS)

LÖVE (Love2D)

Componente Função
love.load() Setup inicial (uma vez)
love.update(dt) Lógica por frame (delta time)
love.draw() Renderização por frame
love.run() Game loop completo (customizável)

BYTEPATH — Arquitetura de Jogo

Sistema principal:
├── love.run()       → game loop
├── Gamestate        → máquina de estados (menu, jogo, pausa)
├── Entity System    → entidades + componentes
├── Rooms/Areas      → fases do jogo
├── Player           → stats, ataques, progressão
└── Enemies          → AI, spawn, balanceamento

Lua vs Python

Aspecto Lua Python
Performance ~2x mais rápido Mais lento
Embedding Excelente (C API) Limitado
Tabelas vs Dicts Tabelas = array+dict Listas e dicts separados
Concorrência Coroutines threading/asyncio
Tipagem Dinâmica Dinâmica
Ecosistema Pequeno (LÖVE, Redis, Nginx) Gigantesco
Ideal para Embedding, scripts leves, jogos Aplicações gerais, data science

Progresso

  • Lua Core (tabelas, metatables, closures)
  • LÖVE Framework (game loop, render)
  • BYTEPATH (arquitetura de jogos)
  • Redis scripting com Lua
  • Nginx/OpenResty + Lua