-- tick -- https://github.com/bjornbytes/tick -- MIT License local tick = { framerate = nil, rate = .03, timescale = 1, sleep = .001, dt = 0, accum = 0, tick = 1, frame = 1 } local timer = love.timer local graphics = love.graphics love.run = function() if not timer then error('love.timer is required for tick') end if love.load then love.load(love.arg.parseGameArguments(arg), arg) end timer.step() local lastframe = 0 love.update(0) return function() tick.dt = timer.step() * tick.timescale tick.accum = tick.accum + tick.dt while tick.accum >= tick.rate do tick.accum = tick.accum - tick.rate if love.event then love.event.pump() for name, a, b, c, d, e, f in love.event.poll() do if name == 'quit' then if not love.quit or not love.quit() then return a or 0 end end love.handlers[name](a, b, c, d, e, f) end end tick.tick = tick.tick + 1 if love.update then love.update(tick.rate) end end while tick.framerate and timer.getTime() - lastframe < 1 / tick.framerate do timer.sleep(.0005) end lastframe = timer.getTime() if graphics and graphics.isActive() then graphics.origin() graphics.clear(graphics.getBackgroundColor()) tick.frame = tick.frame + 1 if love.draw then love.draw() end graphics.present() end timer.sleep(tick.sleep) end end return tick