Usage¶
Manual Setup¶
For full control over which plugins are loaded:
local FeatherDebugger = require "feather"
local FeatherPluginManager = require "feather.plugin_manager"
local ScreenshotPlugin = require "feather.plugins.screenshots"
local debugger = FeatherDebugger({
debug = Config.__IS_DEBUG,
wrapPrint = true,
defaultObservers = true,
autoRegisterErrorHandler = true,
plugins = {
FeatherPluginManager.createPlugin(ScreenshotPlugin, "screenshots", {
screenshotDirectory = "screenshots",
fps = 30,
gifDuration = 5,
}),
},
})
function love.update(dt)
debugger:update(dt)
end
Observers¶
Watch variable values in real-time from the Observability tab:
Logging¶
Feather automatically wraps print() when wrapPrint = true. You can also log manually:
debugger:print("Something happened")
debugger:log({
type = "awesome_log_type",
str = "Something happened",
})
Trace¶
Error logging¶
Console / REPL¶
The Console is an opt-in plugin for evaluating Lua code directly inside the running game. It is not included by default.
require("feather.auto").setup({
include = { "console" },
pluginOptions = { console = { evalEnabled = true } },
})
Once enabled, open the Console tab in the desktop app and type any Lua expression. Return values are shown inline; print() output is captured automatically.
return player.health -- inspect a value
player.speed = 500 -- tweak live
return love.graphics.getStats()
Step Debugger¶
The step debugger pauses game execution at any line and lets you inspect local variables, closure values, and the call stack from the Debugger tab.
Click any line number in the source view to add a breakpoint. While paused, use Continue, Step Over, Step Into, and Step Out to navigate execution.
Assets¶
The Assets tab tracks textures, fonts, and audio sources loaded at runtime. It can preview file-backed images directly from the desktop filesystem, and falls back to game-rendered PNG previews for procedural textures and fonts.
Use Select Folder in the Assets tab to set the session's Game Root when the desktop needs a local copy of the game project.
Time Travel¶
Time Travel records per-frame observer snapshots into a ring buffer and lets you scrub backwards through history to find exactly when a value changed.
Open the Time Travel tab, click Start Recording, reproduce the bug, then click Stop & Load to fetch and scrub through the captured frames.