game = {updates = {}} function game:update () local updated = false for i, v in pairs(self.updates) do updated = true if not coroutine.resume(v) then self.updates[i] = nil end end return updated end function game:run () while self:update() do end end game.updates.example = coroutine.create( function () for i = 1, 10 do print(i) coroutine.yield() end end ) game:run() --[[ 10 9 8 7 6 5 4 3 2 1 ]]