# Game timer dilema

## Recommended Posts

FuraProject    1145

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?

##### Share on other sites
fastcall22    10846
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
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 [tt]updates_per_second[/tt] in mind if you use frames to keep track of timing. Edited by fastcall22

##### Share on other sites
L. Spiro    25638

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

L. Spiro

##### Share on other sites
Strewya    2798

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

##### Share on other sites
L. Spiro    25638

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

L. Spiro

##### Share on other sites
ProgrammerDX    395
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

##### Share on other sites
FuraProject    1145

Cheers and thanks!