# Lua — Estudo _Fonte: project-based-learning + BYTEPATH_ --- ## 📚 Recursos Estudados | Tutorial | Stack | Tópicos | |----------|-------|---------| | [BYTEPATH #0-15](https://github.com/SSYGEN/blog/issues/30) | Lua + LÖVE | Game loop, ECS, skills, enemies | | [LÖVE Wiki](https://love2d.org/wiki/Main_Page) | 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 - [x] Lua Core (tabelas, metatables, closures) - [x] LÖVE Framework (game loop, render) - [x] BYTEPATH (arquitetura de jogos) - [x] Redis scripting com Lua - [x] Nginx/OpenResty + Lua