Luango Engine is a lightweight, modular game engine written in Go with built-in scripting support using Lua. It is designed to be simple, flexible, and powerful — ideal for game developers who want performance and modding capabilities without the complexity.
- 🔄 Written in Go for performance and concurrency
- 🧠 Embedded Lua scripting with Gopher-Lua
- 🧩 Modular architecture for flexibility and expansion
- 🎮 Custom mod loading system
- 🧱 ECS-friendly foundation (coming soon)
luango/
├── engine/ # Core engine modules (graphics, input, audio, etc.)
├── core/ # Game loop, scene management, ECS (planned)
├── mod/ # Lua scripts and mods
│ └── main.lua # Entry Lua script
├── assets/ # Game assets (images, audio, etc.)
├── main.go # Entry point of the engine
└── README.md # You're here 😄
Make sure you have Go installed.
git clone https://github.com/yourname/luango.git
cd luango
go run main.go
log("Hello from Lua!")
- ECS system for entities and components
- Input and audio modules
- Sprite rendering with OpenGL or Ebiten
- Lua sandboxing for secure modding
- Debug console (in-Lua or Go-based)
Nombre del proyecto: Luango Engine
Core Language: Go
Scripting: Lua (Gopher-Lua)
Rendering: Ebiten
Audio: Beep
Input Handling: Ebiten
Arquitectura: Modular, event-driven, ECS-ready
Licencia: MIT (Open Source)
- Entity System – Con soporte para entidades con ID, nombre, posición, sprite.
- Audio Module – Soporte para reproducir sonidos
.wav
desde Lua (play_sound
). - Input Module – Teclado integrado (WASD, Arrows), uso desde Lua (
is_key_pressed
). - Rendering – Motor 2D con Ebiten, renderiza sprites por coordenadas.
- Mod Loader – Carga automática de todos los
.lua
enmod/
y subdirectorios. - Game Loop – Soporte para
on_start()
yon_update()
desde Lua. - Debug Tools – Consola visual (F3), comando
debug()
, FPS & posición. - Technical Documentation – Documento
TECHNICAL.md
con todo lo necesario pa’ devs.
luaCopyEditlog("msg") -- Mensaje normal debug("msg") -- Mensaje de depuración emit("event", "data") -- Emitir eventos personalizados play_sound("ruta.wav") -- Reproducir audio is_key_pressed("W") -- Verifica si tecla está presionada move_player(dx, dy) -- Mueve al jugador -- Hooks del juego: functionon_start()end-- Se llama una vez al iniciar functionon_update()end-- Se llama cada frame (~60 FPS)
bashCopyEditmod/ ├── player/init.lua ├── enemy/slime.lua ├── items/potions.lua ├── world.lua └── game/init.lua ← aquí van on_start y on_update
A crazy paisa who codes with café in hand ☕🎮
¡Gracias por usar Luango Engine , mi amor!