| dynamic frames per second adjustment 
 
	 
	
		| Author | Message |   
		| frank26080115 
 
 
 
 
 | 
			
				|  Posted: Wed Dec 27, 2006 8:07 pm    Post subject: dynamic frames per second adjustment |  |   
				| 
 |  
				| this demo uses "Time.Elapsed" to calculate the real fps and compares it with the desired fps and adjusts the delay before a clearing of the screen accordingly. the number of dots drawn will be raised and lowered to generate different amount of lag. if the delay between frames is 0 or lower, it means the computer and the adjustment can no longer keep up, so i made sure that  "framesdelay" can't go below -10 (or else, it actually makes it go too fast after a recovery) 
 i think this will be useful for people making games like shoobyman's lord of the ring game and such
 
 if you get rid of the useless stuff (for demo only stuff) you can add this into your program
 
 
 	  | code: |  	  | 
% variables
 %%% important part %%%
 var framespersecond : int := 20 % change me, this is the desired frames per second
 var framesdelay : int := 1000 div framespersecond
 var timer1, timer2, timer3, fps : int := 0
 %%% / important part %%%
 
 var numofdots : int := 10
 var upordown : int := 1
 
 var xpos : int := 0
 
 setscreen ("offscreenonly") % flicker free
 
 % main loop
 loop
 % draws some random dots
 for i : 1 .. numofdots
 Draw.Dot (Rand.Int (1, 300), Rand.Int (1, 300), Rand.Int (1, 100))
 end for
 if upordown = 1 then
 numofdots += 60
 elsif upordown = 2 then
 numofdots -= 60
 end if
 if numofdots > 20000 or fps < 6 then
 upordown := 2
 elsif numofdots < 70 then
 upordown := 1
 end if
 Draw.FillOval (xpos, 150, 20, 20, brightred)
 xpos += 10
 if xpos > 300 then
 xpos := 0
 end if
 %%% important part %%%
 % finds actual frames per second
 timer2 := timer1
 timer1 := Time.Elapsed
 timer3 := timer1 - timer2
 fps := 1000 div timer3
 % calculates lag and adjust rate accordingly
 if fps > framespersecond then
 framesdelay += 2
 elsif fps < framespersecond and framesdelay > - 10 then
 framesdelay -= 2
 end if
 Text.Locate (1, 1)
 put "number of dots: ", numofdots
 put "current frames per second: ", fps
 put "current frame delay (in ms): ", framesdelay
 if framesdelay < 1 then
 put "LAG!!!"
 end if
 if upordown = 1 then
 put "slower..."
 else
 put "faster..."
 end if
 delay (framesdelay) % delay
 View.Update % displays all graphics
 cls % clears the screen
 %%% / important part %%%
 end loop
 
 | 
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| Sponsor Sponsor
 
  
   |  |   
		|  |   
		| zylum 
 
  
 
 
 | 
			
				|  Posted: Thu Dec 28, 2006 1:25 am    Post subject: (No subject) |  |   
				| 
 |  
				| you can do this simply by using Time.DelaySinceLast |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| frank26080115 
 
 
 
 
 | 
			
				|  Posted: Thu Dec 28, 2006 2:49 am    Post subject: (No subject) |  |   
				| 
 |  
				| i believe you are living under the impression that my school has money, sure it can afford useless $3000 pan and tilt cameras to see who started a fire, but... this is what i had to work with lol (actually we have the new one but its not available for download) 
 
   (i still press f10 a lot)
 
 damn it i can't even use math.distance so most of the codes you guys post won't work on my computer
 
 so use Time.DelaySinceLast if you can
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| BenLi 
 
  
 
 
 | 
			
				|  Posted: Thu Dec 28, 2006 11:21 am    Post subject: (No subject) |  |   
				| 
 |  
				| 	  | code: |  	  | 
fcn Distance (x, y, x2, y2 : int) : real
 result sqrt ((x2 - x ** 2 +  (y2 - y) ** 2))
 end Distance
 
 | 
 
 
 ... Merry Christmas
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| shoobyman 
 
  
 
 
 | 
			
				|  Posted: Fri Dec 29, 2006 2:42 pm    Post subject: (No subject) |  |   
				| 
 |  
				| that is a cool idea. 
 but...
 
 our school version does have Time.DelaySinceLast.  if your home one doesn't have it, i think the school version updated theirs so you can get it again.  All i know is my home version has it and so does the schools.
 
 cool program though.
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| ericfourfour 
 
 
 
 
 | 
			
				|  Posted: Fri Dec 29, 2006 4:20 pm    Post subject: (No subject) |  |   
				| 
 |  
				| How about frame rate independent gameplay. The code is in c++ but the tutorial is pretty much universal to all languages. |  
				|  |  |   
		|  |  |  
	  
		|  |   
		|  |  
 |