#### Archived

This topic is now archived and is closed to further replies.

# Game Timer

This topic is 6853 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

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

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

1. 1
2. 2
3. 3
Rutin
15
4. 4
5. 5

• 9
• 9
• 11
• 11
• 23
• ### Forum Statistics

• Total Topics
633679
• Total Posts
3013296
×