Files
2026-05-30 23:59:33 +00:00

81 lines
2.5 KiB
Markdown

# 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