Scrappy Time

Scrappy Time is a simple time management library for Solar2D that simplifies time based movement and FPS calculation.

As with all my libraries it is free to use, and available on GitLab, however if you find it useful, and are able to, I’d appreciate a coffee, or if you like you could purchase the plugin.

Image Credit: Time free by ProSymbols from the Noun Project.

Getting Started

In order to use the library you will need to include it in your project, to do so please see this guide.



Initiates the library.


Gets the current time delta for the game.


Gets the fps of the game.


Move a player object using time based velocity.

-- Initiate the time library

-- Create a 'player' object
local player = display.newRect( display.contentCenterX, display.contentCenterY, 10, 10 )

-- Set up a table for the player's velocity
player.velocity = { x = 0, y = 0 }

-- enterFrame handler
function onEnterFrame()

	-- Move the player along the x/y axis using their velocity adjusted by the current delta time
    player.x = player.x + ( player.velocity.x * Scrappy.Time:delta() )
    player.y = player.y + ( player.velocity.y * Scrappy.Time:delta() )

	-- Output the current fps
	print( string.format( "FPS: %d", Scrappy.Time:fps() ) )


-- onKey handler
function onKey( event )

	-- Set the player's velocity depending on the key, making sure to set it to 0 on key release
	-- Please note: This is a terrible way to do this but it's good enough for our purposes
    if event.keyName == "up" then
		player.velocity.y = event.phase == "down" and -1 or 0
	elseif event.keyName == "down" then
		player.velocity.y = event.phase == "down" and 1 or 0
	elseif event.keyName == "left" then
		player.velocity.x = event.phase == "down" and -1 or 0
	elseif event.keyName == "right" then
		player.velocity.x = event.phase == "down" and 1 or 0


-- Register some events
Runtime:addEventListener( "enterFrame", onEnterFrame )
Runtime:addEventListener( "key", onKey )