View more

View more

View more

### Image of the Day Submit

IOTD | Top Screenshots

### The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

# Game Timer

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.

### #1Xeno  Members

Posted 08 March 2000 - 09:17 AM

Im Working on a 2D "DeathMatch" Game (My Teachers From School is the characters ) and i want to insert a timer to my game that when the game run on slow computer the game will speed himself up and when its run on fast computer the game will slow himself plz help me , where to begin and how to do it. Thanks a lot roy

### #2Cygon  Members

Posted 08 March 2000 - 11:52 AM

Perhaps this is a programming issue, but anyway

You can calculate the time the computer needed to draw a frame and scale the movement of objects by that value, ex.

If the computer took 2 seconds to draw a frame, your player is moved 2 units forward,
if it took only 1/2 second, your player is moved 0.5 units.

You can use GetTickCount() which returns the number of milliseconds (1/1000th seconds) passed since the computer was turned on. Most games use a timer running at 100 up to 200 Hz (ticks per second). Here''s how to do it:

---------------------------
long LastTickCount, Ticks;

// my main loop
LastTickCount = GetTickCount();
while(game_runs) {
Ticks = (GetTickCount() - LastTickCount) / 10;
LastTickCount += Ticks * 10;
if(Ticks > 100) { // Limit lag to 1 second
Ticks = 100;
// If we were Quake1 display a little turle
}

while(Ticks) {
// Movement code here
}

RenderFrame();
}
---------------------------

There''s one line you may find strange:
LastTickCount += Ticks * 10;
Why not just set it GetTickCount() ? Well, this is a simple way to correct rounding errors, the time rounded away is automatically kept for the next frame. Without this is would run a littlebit faster on fast machines

There''s also another way of doing it, calculate a delta value (just GetTickCount() - LastTickCount) and multiply any movements by this (nearer at the example explained above).
This requires less execution time, but will cause problems on some things (ex. collision detection).

A last word on GetTickCount(), this is not the best function to use, because it can go slower and then get jumpy to balance it out. Search in the VC help for HighPerformanceCounter, that''s what games should use

-Markus-

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.