81 lines
2.5 KiB
Markdown
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
|