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?
Computer Speeds
BlitzPlus Forums/BlitzPlus Beginners Area/Computer Speeds First (simple) way:
This runs with 60 frames on every machine.
The second way is to make your own timer with millisecs() .
bye
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
Use delta timing.
In your main loop put something like..
Just as an example but you should be able to get the idea.
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.
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.
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?
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.
Update: The product update proved effective. Thanks to everyone for all the advice.
On a similar note, is there anyway to speed up a game for slower computers (I'm assuming there isn't)?
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.