2.5 KiB
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
-
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
-
Nginx/OpenResty — NPM roda em OpenResty!
- Custom locations com Lua
- Autenticação, rate limiting, caching
- Plugins sem precisar de módulos C
-
Neovim — Configuração e plugins em Lua
- Lua substituiu Vimscript como linguagem primária
-
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