Computer Speeds

BlitzPlus Forums/BlitzPlus Beginners Area/Computer Speeds

Sauer(Posted 2007) [#1]
I'm having issues with the speeds that my games play at... I program on an old, slow computer, and they test fine. When I play on a better computer, however, the game runs too fast and they are unplayable. Do I need to do my work on a better computer, or are there other solutions to this problem?


Abrexxes(Posted 2007) [#2]
First (simple) way:
Graphics 640,480,0,2
mytimer = CreateTimer(60)
Bild = CreateImage (160,120)
SetBuffer ImageBuffer (Bild)

Color 0,0,255
For a = 0 To 119
   Color a*2,a*2,255
   Line 0,a,159,a
Next
SetBuffer BackBuffer()
Global move = 240

While Not KeyHit (1)
Cls
DrawImage Bild,move,180
move=move+1
If move >600 move = 100
WaitTimer mytimer
Flip 0
Wend
End


This runs with 60 frames on every machine.

The second way is to make your own timer with millisecs() .

bye


Yeshu777(Posted 2007) [#3]
Use delta timing.


Function	DeltaTiming(period)

	If (MilliSecs() > (delta_timer + period)) Then 

		delta_timer=MilliSecs() ; 'reset' the timer 

		Return(True);
			
	End If 
	
	Return(False);

End Function


In your main loop put something like..

Global delta_timer = MilliSecs();

While( Not KeyHit(1))

   If(DeltaTiming(25)) Then

        UpdateControl();

        UpdateGraphics();

   End If

Wend



Just as an example but you should be able to get the idea.


Sauer(Posted 2007) [#4]
Thank you very much this information is extremely helpful... except Waittimer doesn't seem to work properly. When I use the command, it does not turn its usual yellow color and it claims that "Function waittimer not found." Not sure what that's all about.


Adam Novagen(Posted 2007) [#5]
I dunno Sauer; I just typed it in the B+ demo & it was recognized normally. Maybe you're using an older version of Plus; have you checked for product updates?


Sauer(Posted 2007) [#6]
I'll try and see what happens... Hopefully that is all that needs resolving.

Update: The product update proved effective. Thanks to everyone for all the advice.


Sauer(Posted 2007) [#7]
On a similar note, is there anyway to speed up a game for slower computers (I'm assuming there isn't)?


Matty(Posted 2007) [#8]
Graphics 800,600,0,2
SpeedFactor#=1.0
GameTime=10
FrameTime=MilliSecs()
d=1
SetBuffer BackBuffer()
Repeat

;imagine this is your main loop
Cls

If KeyDown(203) Then d=d-1
If KeyDown(205) Then d=d+1
If d<1 Then d=1
Delay d

;ie do all your stuff you would normally do in the game...

;Example of how to apply the 'SpeedFactor' to make the game run smoothly...

;Whenever you perform an addition or subtraction multiply the amount which is added/subtracted by SpeedFactor

x#=x#+1.0*SpeedFactor#
Rect x,100,20,20,1
If x>GraphicsWidth() Then x=0





Text 0,0,speedfactor
Text 0,15,"Delay:"+d+" (simulate a slower pc by making this larger
Text 0,30," by pressing Right arrow, Left arrow decreases it)
Flip False 
SpeedFactor#=Float(MilliSecs()-FrameTime)/Float(GameTime)

FrameTime=MilliSecs()


Until GameOver<>0 Or KeyDown(1)



Hold down the right arrow key to see how it would look on slower computers.