Jump to content

  • Log In with Google      Sign In   
  • Create Account


Game timer dilema


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
6 replies to this topic

#1 Sollum   Members   -  Reputation: 655

Like
1Likes
Like

Posted 30 October 2013 - 02:55 PM

Good evening,

 

I have a simple dilemma, i cannot solve myself. Or rather, make up my mind.

I am making a game for both desktop and android devices. In my first game i was using "fps based movement". Which resulted game to run faster on some devices, due to the fact that not every device was running it on 60 fps.

 

I don't want to make same mistake, because this time it's not a puzzle game and its more action orientated.

But "distance traveled per time" is double edged sword. If device lags for 3 seconds, i might get dead.

 

Other option i thought of, hardcap FPS to 30. But then... how do i manage stuff like "buffs" and etc?... base them on time or frames passed?

 

Anyone could give me advice?



Sponsor:

#2 fastcall22   Crossbones+   -  Reputation: 3996

Like
0Likes
Like

Posted 30 October 2013 - 03:08 PM

Take a look at Gaffer's Fix Your Timestep. He recommends you update your game at a fixed rate and render as fast as possible interpolating between updates:
updates_per_second = 40
ticks_per_update = ticks_per_second / updates_per_second
time_per_update = 1 / updates_per_second 
accumulator = 0

while window_opened():
    accumulator += elapsed_ticks()

    while accumulator > ticks_per_update:
        game.update(time_per_update)
        accumulator -= ticks_per_update
    
    # interpolation is between 0 (previous state) and 1 (current state)
    interpolation = accumulator / ticks_per_update  

    game.render( interpolation )

# Somewhere in the game:
function object.draw(interp):
    interp_pos = (current_position - previous_position) * interp + previous_position

    draw(this, interp_pos)

But "distance traveled per time" is double edged sword. If device lags for 3 seconds, i might get dead.

You can add some logic to prevent the game loop from locking up on itself by detecting and discarding multiple updates:
    # if updating falls behind, sacrifice a few updates and accept lag
    if accumulator / ticks_per_update > 3:
        accumulator %= ticks_per_update

Other option i thought of, hardcap FPS to 30. But then... how do i manage stuff like "buffs" and etc?... base them on time or frames passed?

Either approach will work; just keep updates_per_second in mind if you use frames to keep track of timing.

Edited by fastcall22, 30 October 2013 - 03:33 PM.

WW91J3ZlIGdvdCBhIHNlY3JldCBib251cyBwb2ludCE=


#3 L. Spiro   Crossbones+   -  Reputation: 12299

Like
1Likes
Like

Posted 31 October 2013 - 12:40 AM

To avoid lag that causes undesired over-running of player movements, see this.


L. Spiro


It is amazing how often people try to be unique, and yet they are always trying to make others be like them. - L. Spiro 2011
I spent most of my life learning the courage it takes to go out and get what I want. Now that I have it, I am not sure exactly what it is that I want. - L. Spiro 2013
I went to my local Subway once to find some guy yelling at the staff. When someone finally came to take my order and asked, “May I help you?”, I replied, “Yeah, I’ll have one asshole to go.”
L. Spiro Engine: http://lspiroengine.com
L. Spiro Engine Forums: http://lspiroengine.com/forums

#4 Strewya   Members   -  Reputation: 1167

Like
0Likes
Like

Posted 31 October 2013 - 01:56 AM

Spiro, have you written the article you mention in your linked post? :)


devstropo.blogspot.com - Random stuff about my gamedev hobby


#5 L. Spiro   Crossbones+   -  Reputation: 12299

Like
0Likes
Like

Posted 31 October 2013 - 02:18 AM

No; I am holding off on articles and even my engine until my book is done.

 

 

L. Spiro


It is amazing how often people try to be unique, and yet they are always trying to make others be like them. - L. Spiro 2011
I spent most of my life learning the courage it takes to go out and get what I want. Now that I have it, I am not sure exactly what it is that I want. - L. Spiro 2013
I went to my local Subway once to find some guy yelling at the staff. When someone finally came to take my order and asked, “May I help you?”, I replied, “Yeah, I’ll have one asshole to go.”
L. Spiro Engine: http://lspiroengine.com
L. Spiro Engine Forums: http://lspiroengine.com/forums

#6 ProgrammerDX   Members   -  Reputation: 149

Like
1Likes
Like

Posted 31 October 2013 - 06:11 AM

http://gamedev.stackexchange.com/questions/1589/fixed-time-step-vs-variable-time-step

use fixed timesteps for collision detection and physics (the bigger time interval your timestep is, the more prone to weird errors like objects flying thru walls is. The smaller your timestep is, the more CPU it costs because more steps... find your holy grail in your game...)

use variable timesteps for everything that doesn't interact with other stuff in your game, because it is FASTER (like for example a UI text clock that just needs updated to the latest value)

PS: this forum is bugged as hell my posts gets half-deleted alot.... wtf

#7 Sollum   Members   -  Reputation: 655

Like
0Likes
Like

Posted 31 October 2013 - 03:56 PM

Cheers and thanks!






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS