Para a apresentação institucional da empresa, consulte LEMON-ENTERPRISE-README.md.
Framework modular para jogos em Lua com LÖVE 11.5. Todo símbolo público criado pelo framework usa o prefixo LS (Lemon Studio): LSGame, LSInput, LSCamera, LSWorld, LSAnimation e assim por diante. Os únicos nomes sem esse padrão são os callbacks obrigatórios da própria API do LÖVE (love.load, love.update, etc.).
Instale o LÖVE 11.5 ou superior e abra esta pasta com ele:
love .
No Windows, use o atalho local para abrir a demo ou criar outro projeto:
.\lemon help
.\lemon run
.\lemon new meu-jogo
Para usar somente lemon, adicione esta pasta ao PATH do sistema.
O projeto traz uma cena demonstrativa: mova o quadrado com WASD ou setas; F3 mostra métricas; Esc fecha o jogo.
| Módulo | Símbolo público | Responsabilidade |
|---|---|---|
lemon/init.lua |
LS.LSNew / LSGame |
Inicialização e ciclo de vida |
lemon/core/scenes.lua |
LSSceneManager |
Registro e troca de cenas |
lemon/core/state.lua |
LSStateMachine |
Estados reutilizaveis para personagens, IA e menus |
lemon/entity.lua |
LSEntityManager |
Entidades por componentes e sistemas |
lemon/input.lua |
LSInput |
Teclado, mouse, roda e texto |
lemon/camera.lua |
LSCamera |
Câmera 2D com zoom, rotação e suavização |
lemon/assets.lua |
LSAssets |
Cache de imagens, fontes, sons e quads |
lemon/animation.lua |
LSAnimation |
Animações por sprite sheet |
lemon/physics/world.lua |
LSWorld |
Corpos AABB, movimento e consultas |
lemon/ui.lua |
LSUI |
Painéis e botões imediatos |
lemon/audio.lua |
LSAudio |
Mixagem master, música e efeitos |
lemon/save.lua |
LSSave |
Persistência de tabelas Lua |
lemon/core/timer.lua |
LSTimer |
Tarefas únicas e repetidas |
lemon/core/signal.lua |
LSSignal |
Eventos desacoplados |
lemon/math/* |
LSVector, LSColor |
Vetores e cores |
local LS = require("lemon")
local LSGame = LS.LSNew({ debug = true })
local LSPlayScene = {}
function LSPlayScene:LSUpdate(dt)
if LSGame.LSInput:LSPressed("space") then
LSGame.LSTimer:LSAfter(0.2, function() print("acao atrasada") end)
end
end
function LSPlayScene:LSDraw()
love.graphics.print("Ola, Lemon Studio!", 32, 32)
end
LSGame.LSScenes:LSRegister("LSPlay", function() return LSPlayScene end)
LSGame.LSScenes:LSSwitch("LSPlay")Encaminhe os callbacks LÖVE para a instância, como mostrado em main.lua. Cenas podem implementar LSEnter, LSLeave, LSUpdate, LSDraw, LSKeyPressed, LSMousePressed, LSWheelMoved e LSTextInput.
- Classes/construtores:
LSNome.LSNew(...). - Métodos públicos:
LSNome:LSAcao(...). - Propriedades expostas no jogo:
LSGame.LSCamera,LSGame.LSInput,LSGame.LSScenes,LSGame.LSWorld,LSGame.LSAssets,LSGame.LSAudio,LSGame.LSUI,LSGame.LSTimereLSGame.LSEvents. - A configuração é passada a
LS.LSNew:virtualWidth,virtualHeight,clearColor,maxDeltaedebug.
Apache-2.0. Consulte LICENSE.