feel.lua is a tiny LOVE2D-first feedback sequencing library for making actions feel good.
- Defines reusable named feedback sequences with
feel.define. - Plays named or inline sequences with
feel.play. - Animates lightweight target values.
- Emits host-owned events for particles, camera shake, flashes, sounds, haptics, shaders, and more.
- Runs steps in order, including waits, nested sequences, repeats, random branches, and parallel groups.
feel.lua.mp4
Install with Feather:
feather package install feelFeather installs the package under lib/feel:
local feel = require("lib.feel")local feel = require("lib.feel")
local button = feel.target({
values = { scale = 1, y = 0 },
})
feel.define("button.press", {
{ kind = "animate", duration = 0.06, to = { scale = 0.92, y = 3 }, ease = "quadout" },
{ kind = "wait", duration = 0.03 },
{ kind = "animate", duration = 0.16, to = { scale = 1, y = 0 }, ease = "backout" },
})
function love.update(dt)
feel.update(dt)
end
function love.mousepressed()
feel.play("button.press", button, { restart = true })
endIt wraps a vendored copy of flux by rxi so you can describe game feel as small Lua recipes: animation, timing, emitted effects, audio cues, callbacks, random choices, loops, and grouped steps.
The core stays small and table-driven. LOVE-specific work lives in optional adapters or user callbacks.
busted spec