High FPS

General discussion about LÖVE, Lua, game development, puns, and unicorns.
Post Reply
User avatar
megalukes
Citizen
Posts: 94
Joined: Fri Jun 27, 2014 11:29 pm
Location: Brazil

High FPS

Post by megalukes »

I'm not sure if anyone else has this problem, but in some computers LOVE fps seems to be too high, even with vsync on. I made a small game for a friend here and the games runs at 600 fps in his PC, even though it runs smoothly at 60fps in mine. Is there a reason for that? I tried to fix this problem using a rewrite of lua.run() function but I'm unsure whether this is the best solution or not.

Code: Select all

maxfps = 60

function love.run()

    if love.math then
        love.math.setRandomSeed(os.time())
        for i=1,3 do love.math.random() end
    end

    if love.event then
        love.event.pump()
    end

    if love.load then love.load(arg) end

    -- We don't want the first frame's dt to include time taken by love.load.
    if love.timer then love.timer.step() end

    local dt = 0

    -- Main loop time.
    while true do
        -- Process events.
        local frametimestart = love.timer.getTime()
        if love.event then
            love.event.pump()
            for e,a,b,c,d in love.event.poll() do
                if e == "quit" then
                    if not love.quit or not love.quit() then
                        if love.audio then
                            love.audio.stop()
                        end
                        return
                    end
                end
                love.handlers[e](a,b,c,d)
            end
        end

        -- Update dt, as we'll be passing it to update
        if love.timer then
            love.timer.step()
            dt = love.timer.getDelta()
        end

        -- Call update and draw
        if love.update then love.update(dt) end -- will pass 0 if love.timer is disabled

        if love.window and love.graphics and love.window.isCreated() then
            love.graphics.clear()
            love.graphics.origin()
            if love.draw then love.draw() end
            love.graphics.present()
        end

        local frametimeend = love.timer.getTime()
	    local framedelta = frametimeend - frametimestart
	      
	    if maxfps and maxfps > 0 then -- 0 is unlimited
	    	local max_dt = 1/maxfps
	        local sleeptime = max_dt - framedelta
	         
	        if sleeptime >= 0.001 then -- love will truncate anything less than 1ms down to 0 internally
	            love.timer.sleep(sleeptime)
	        end
	    else
	      if love.timer then love.timer.sleep(0.001) end
	    end
    end

end
User avatar
slime
Solid Snayke
Posts: 3172
Joined: Mon Aug 23, 2010 6:45 am
Location: Nova Scotia, Canada
Contact:

Re: High FPS

Post by slime »

megalukes wrote:I'm not sure if anyone else has this problem, but in some computers LOVE fps seems to be too high, even with vsync on. I made a small game for a friend here and the games runs at 600 fps in his PC, even though it runs smoothly at 60fps in mine. Is there a reason for that?
Maybe his video driver is forcing vsync off? There might be an option for that in his driver settings.

If his system is using a really old Intel integrated GPU, its drivers might just not support vsync in OpenGL programs.
User avatar
s-ol
Party member
Posts: 1077
Joined: Mon Sep 15, 2014 7:41 pm
Location: Cologne, Germany
Contact:

Re: High FPS

Post by s-ol »

slime wrote:
megalukes wrote:I'm not sure if anyone else has this problem, but in some computers LOVE fps seems to be too high, even with vsync on. I made a small game for a friend here and the games runs at 600 fps in his PC, even though it runs smoothly at 60fps in mine. Is there a reason for that?
Maybe his video driver is forcing vsync off? There might be an option for that in his driver settings.

If his system is using a really old Intel integrated GPU, its drivers might just not support vsync in OpenGL programs.
Either way, unless you are doing some tricky graphics stuff more fps shouldn't do anything (if you use dt correctly)

s-ol.nu /blog  -  p.s-ol.be /st8.lua  -  g.s-ol.be /gtglg /curcur

Code: Select all

print( type(love) )
if false then
  baby:hurt(me)
end
User avatar
megalukes
Citizen
Posts: 94
Joined: Fri Jun 27, 2014 11:29 pm
Location: Brazil

Re: High FPS

Post by megalukes »

slime wrote:
megalukes wrote:I'm not sure if anyone else has this problem, but in some computers LOVE fps seems to be too high, even with vsync on. I made a small game for a friend here and the games runs at 600 fps in his PC, even though it runs smoothly at 60fps in mine. Is there a reason for that?
Maybe his video driver is forcing vsync off? There might be an option for that in his driver settings.

If his system is using a really old Intel integrated GPU, its drivers might just not support vsync in OpenGL programs.
Oh, that was the problem. Thank you so much, slime!
User avatar
Jeeper
Party member
Posts: 611
Joined: Tue Mar 12, 2013 7:11 pm
Contact:

Re: High FPS

Post by Jeeper »

S0lll0s wrote:
slime wrote:
megalukes wrote:I'm not sure if anyone else has this problem, but in some computers LOVE fps seems to be too high, even with vsync on. I made a small game for a friend here and the games runs at 600 fps in his PC, even though it runs smoothly at 60fps in mine. Is there a reason for that?
Maybe his video driver is forcing vsync off? There might be an option for that in his driver settings.

If his system is using a really old Intel integrated GPU, its drivers might just not support vsync in OpenGL programs.
Either way, unless you are doing some tricky graphics stuff more fps shouldn't do anything (if you use dt correctly)
Yeah I have seen a lot of people on the forums who want to cap the fps by using love.sleep and other odd solutions. It is the other way around, come for help when your fps is too low! :D
Post Reply

Who is online

Users browsing this forum: Google [Bot] and 5 guests