Frameunabhängig bewegen.

Previous topic - Next topic

D2O

Hi, es ist ja nicht schlecht wenn man die Frames auf 60Hz begrenzt und so seine Spieler bewegung abstimmt,
aber was ist wen bei einem das Spiel nur 30 oder 20 Frames läuft?
Hier muss man die bewegung Frameunabhängig Steuern.

GLBasic hat hierfür eine sehr gute Function, GETTIMER()
Die gibt die zeit an von Showscreen bis zum nächsten und das können wir hierfür sehr gut nutzen.

Hier mal ein Beispiel Code wie es aussehen könnte.
Das Quadrat braucht etwas über 15sec. von einem Bildschirmrand bis zum andern.
Dabei spielt es keine rolle ob mit 20 FPS oder mit 500 FPS.

Code (glbasic) Select
// --------------------------------- //
// Project: Frameunabhängig bewegen
// Start: Sunday, March 04, 2007
// IDE Version: 4.114


LIMITFPS 20  /// hier mal werte ändern, -1 = Vsync Off

WHILE TRUE
move = GETTIMER()
time = GETTIMERALL()
//-------------
IF (time - temp) > 1000
INC a1,1 // Secundenzähler
temp = time
ENDIF
//-------------


//-----------Das ist der interesante Teil
x = x +(0.02 * move ) //<<<< Frameunabhängig bewegen, mal mit dem wert 0.02 rumspielen ;)
FILLRECT x,0,x+10,10,RGB(100,50,200)
IF x > 640
x = 0 // X zurücksetzen
a2 = a1 // Für die zeitmessung
a1 = 0
ENDIF
//---------------------------------------


// Das ist nur für die ausgabe
PRINT getfps()+" Frames",10,100
PRINT move+" millisec." ,10,120
PRINT a2+" Secunden vergangen",10,140
SHOWSCREEN
WEND




FUNCTION getfps:

STATIC fps_time,fps_counter,fps,fps_temp
fps_time = GETTIMERALL()
fps_counter = fps_counter + 1
IF (fps_time-fps_temp)>1000
fps_temp = fps_time
fps = fps_counter
fps_counter = 0
ENDIF

RETURN fps
ENDFUNCTION
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

BumbleBee

Hi

Sehr gut.
Im englischen Forum hab ich auch mal ein paar Timer-Beispiele dazu gemacht.:D
  http://www.glbasic.com/forum/viewtopic.php?id=531

Schreibs halt da auch noch mit rein wenn du willst .
P.s.
Du machst echt gute Beispiele.

Cheers
The day will come...

CPU Intel(R) Core(TM) i5-3570k, 3.4GHz, AMD Radeon 7800 , 8 GB RAM, Windows 10 Home 64Bit

D2O

Quote from: BumbleBeeHi

Sehr gut.
Im englischen Forum hab ich auch mal ein paar Timer-Beispiele dazu gemacht.:D
  http://www.glbasic.com/forum/viewtopic.php?id=531

Schreibs halt da auch noch mit rein wenn du willst .
P.s.
Du machst echt gute Beispiele.

Cheers
Hi, würd ich ansich gern aber, hmmm Englisch?
Das ist fast ein Fremdword für ich :(

Werd das spätermal versuchen das ganze mit einem Tranlator zu übersetzen und dort posten.

Und, Danke. :)
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell