Skip to content

Repository files navigation

Lemon Studio Framework

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.).

Executar

Instale o LÖVE 11.5 ou superior e abra esta pasta com ele:

love .

Comando lemon

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.

Arquitetura

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

Uso básico

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.

Convenções

  • 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.LSTimer e LSGame.LSEvents.
  • A configuração é passada a LS.LSNew: virtualWidth, virtualHeight, clearColor, maxDelta e debug.

Licenca

Apache-2.0. Consulte LICENSE.

About

Lemon Studio Framework é um framework modular para jogos 2D em Lua com LÖVE. Inclui cenas, câmera, entrada, física, animações, áudio, interface e persistência, com API pública padronizada pelo prefixo `LS`.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages