delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/10/17/12:28:32

From: arg AT whangomatic DOT freeserve DOT co DOT uk (Andrew R. Gillett)
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Game Speed
Date: Sun, 17 Oct 1999 14:32:08 +0100
Organization: www.release-dates.co.uk
Lines: 54
Message-ID: <MPG.1273deccf87c634798b3ff@news.freeserve.net>
References: <H3jO3.7505$Tk DOT 157563 AT news DOT tpnet DOT pl>
NNTP-Posting-Host: modem-131.spotted-trigger.dialup.pol.co.uk
X-Trace: news8.svr.pol.co.uk 940167148 18465 62.137.47.131 (17 Oct 1999 13:32:28 GMT)
NNTP-Posting-Date: 17 Oct 1999 13:32:28 GMT
X-Complaints-To: abuse AT theplanet DOT net
X-Newsreader: MicroPlanet Gravity v2.12
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

In comp.os.msdos.djgpp, Snowman wrote:
> Hello everybody
> 
> I programmed a simple game in C.
> (I used DJGPP and ALLEGRO)
> But the game runs on different Computers with
> a different speed.
> Is it possible, that the game runs on all
> Computers with a similar speed ?
> Please Help me immidiately .

Here is a brief outline of what you need to do:

- Create an interrupt which is called every 60th of a second (or whatever 
you want the frame rate to be).

- In the interrupt, increase a value (I call it timer_value) by 1.

- Set timer_value to 0 before the main game loop starts.

- The main game loop is separated into two parts - one which does the 
calculations (and input), and ones which draws the graphics.

The main game loop should look something like this:

while (not_finished)
{
	if (timer_value)
	{
		// Calculations go here

		if (--timer_value <= 0)
		{
			timer_value = 0;

			// Draw the graphics here
		}
	}
}


You can also add an extra value (which I call time_waiting) which 
prevents the game from locking up on very slow computers. Change the 
relevant line to this:

if ( (--timer_value <= 0) || (++time_waiting == 4) )

and then set time_waiting to 0 inside the loop. This will make it so that 
it never skips more than four frames at once.


-- 
Andrew Gillett      http://argnet.fatal-design.com/     ICQ: See homepage
"I hate society, Stew. I'm like Skeletor in that respect." - Richard Herring

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019