Game Timer

Started by
0 comments, last by Xeno 24 years, 2 months ago
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

------------------------------- Goblineye Entertainment------------------------------

Advertisement
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-
Professional C++ and .NET developer trying to break into indie game development.
Follow my progress: http://blog.nuclex-games.com/ or Twitter - Topics: Ogre3D, Blender, game architecture tips & code snippets.

This topic is closed to new replies.

Advertisement