Gleichbleibende Bewegung

Previous topic - Next topic

WPShadow

Hi!

Äh, Gernot? Könntest du mir vielleicht einen Gefallen tun?

Wie ging nochmal das Beispiel, das du mir einmal gezeigt hast, in dem sich ein "X" mit gleicher Geschwindigkeit trotz verschiedener FPS bewegt?

Könntest du mir vielleicht sagen, wo das schnell war?

Danke...

W.
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

BumbleBee

Hallo

Meinst du das Timer Beispiel von mir?


Cheers
The day will come...

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

WPShadow

War das von dir?

Ich meine das Beispiel, das einen Timer erstellt und bei verschiedener FPS immer gleich schnell läuft...

So, oder so ähnlich...

GLG

W.
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

BumbleBee

Hi WPShadow

Das mit dem Echtzeittimer?

http://www.glbasic.com/forum/viewtopic.php?id=292

Hoffe das war der. Wie steht's denn um deinen PC?  Der war doch zerstört.
Hast du schon wieder einen neuen?

Schönen Abend noch.

Cheers
The day will come...

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

WPShadow

Hi!

Da hat mir Gernot mal ein Beispiel gezeigt, mit dem man eine gleichbleibende Bewegung simulieren kann, egal mit welcher Frame - Rate...

Ist der "Echtzeittimer" aus dem Beispiel nicht FPS - abhängig?

'--

Anbei ist mein Rechner noch immer KO...

Ich habe zwar versucht mir aus Deutschland eine Graphikkarte zu bestellen, aber keine Chance. Jetzt habe ich eine aus Graz bestellt, die vermutlich um den 26.09.2006 herum kommen sollte. Problematischerweise bin ich mir nicht sicher, wann die Karte dann tatsächlich ankommen wird. Habe mich im Endeffekt nämlich für eine ASUS X1950XTX entschieden. Riesen leistung und unglaubliche UNVERFÜGBARKEIT... :-/

Aber eines schönen Tages wird das schon...

Soweit der aktuelle Stand...

GLG

W.
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Kitty Hello

BumbleBee hat daas mal gut erklärt: http://www.glbasic.com/forum/viewtopic.php?id=292. Ich kann mich erinnern, dass ich mal sowas gemacht hab' aber evtl. war das nicht im Forum, sondern im Chat?

WPShadow

Ja, genau! Da hast du mir mal einen Link geschickt, im Chat!!!

Aber mehr kann ich da auch nicht mehr dazu sagen...
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

BumbleBee

Hallo

Quote from: WPShadowIst der "Echtzeittimer" aus dem Beispiel nicht FPS - abhängig?
Das Beispiel von mir ist FRAME UNABHÄNGIG
Darum LIMITFPS -1.  -> Maximal. Full Speed

Aber wenn man eben Frameunabhängig programmieren möchte, muß man auch einen
Timer einbauen, sonst läuft das Spiel auf verschieden PCs unterschiedlich schnell.

Denn LIMITFPS -1, und in der Schleife z.B.  nur X = X + 1 für die Bewegung, ohne
irgendeinen Timer das kann böse Überaschungen geben wenn man sein
Programm weitergibt. Bei einem läufts noch annehmbar, beim nächsten ist es unspielbar.

Wollt noch eins dazu sagen.
So ein Timer hat natürlich seine Vorteile. Man kann gezielt einzelne Bewegungen abbremsen
und nicht gleich das ganze Programm wie  z.B.. auch ein Delay oder Sleep am Ende der Schleife.


Cheers
The day will come...

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

WPShadow

Hi!

Genau darum geht es mir!

Eine Frame - unabhängige Schleife mit einem Timer, bei dem die Frames rauf oder runter gehen können und die Bewegung sich entsprächend in die Richtung "fortpflanzt"...

Ca so:
FPS 30
Schritt ~ 10

FPS 60
Schritt ~ 5

Auf jeden Fall je schneller die Frame - Rate, desto genauer die Schritte und umgekehrt. Wenn nur 5 Frames sind, auch dann soll die Bewegung halbwegs flüssig aussehen, weil die Schritte eben entsprechend errechnet werden...

Gernot hatte da ein super Beispiel...

GLG

W.
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

WPShadow

Habe es nach 2 Stunden suche endlich gefunden! Hatte es doch noch auf der Festplatte...

Code (glbasic) Select
     FOR fps = 30 TO 120 STEP 30

              LIMITFPS fps
                x=0

              WHILE x<640

                      PRINT "FPS: "+fps, 0,0

                      INC x, GETTIMER()/10

                      PRINT "X", x,20

                      SHOWSCREEN

              WEND



      NEXT
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

WPShadow

Code (glbasic) Select
LIMITFPS -1

              WHILE TRUE

                      PRINT "FPS: "+fps, 0,0

                      INC x, GETTIMER()/100

                      IF x > 500 THEN x = 500
                      IF x < 0 THEN x = 0

                      PRINT x, 50, 50

MOUSESTATE mx, my, b1, b2

IF b1 = 1 THEN x = x - 50


dtime = GETTIMER()
 fps = ((1000/dtime)+fps)/2
 delay=delay+dtime
 IF delay>500 // 1/2 sec
  delay=0
  showfps=fps
 ENDIF
 PRINT "FPS: "+showfps+" dtime:"+dtime, 0,0



                      SHOWSCREEN

              WEND
Ich komme da auf ca. 30 Frames pro Sekunde. Ist der Code so richtig? Habe es aus einem anderen Test rauskopiert!!!

GLG

W.
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

BumbleBee

Hallo WPShadow

5 Frames die dann noch flüssig laufen? Wie geht das?
Also 1 Frame heißt 1 Bild pro Sekunde. Das kann schon mal gar nicht flüssig laufen.
Und bei 5 Frames siehst du auch die einzelnen Schritte. Das menschliche Auge
nimmt doch erst ab 18-24 Bildern pro Sekunde das ganze als flüssige Bewegung auf.

Bei Zeichentrickfilmen werden soviel ich weiß für 1 Sekunde 18 Bilder gezeichnet.
Warum? Na weil man sonst ja mehr oder weniger die einzelnen Schritte sehen würde.
Die Zeichner bräuchten dann ja bloß 1 Bild  für jede Sekunde zeichnen.

Auf jeden Fall wenn du LIMITFPS 30 machst, dann läuft dein Programm nie schneller als
mit 30 Frames.
Ich dachte ja du wolltest das so NICHT. Du willst es ja nach oben hin offen. So hab ich
das damals verstanden.

Das Beispiel von mir zeigt auf meinem PC 100 FPS an. (Ist halt nicht der Neueste und Beste):(
Auf dem PC von meinem Sohn sind es 560 FPS. Der hat auch eine Radeon X800 GT drin.:good:
Aber trotzdem Konstante Geschwindigkeit der Vierecke.

Ich hab ein paar ganz gute Bücher über Spieleprogrammierung zuhause. Es steht in jedem
man sollte die Bewegung  der Sprites oder was weiß ich in Abhängigkeit der verstrichenen
Zeit und nicht in Abhängigkeit der Framerate berechnen.

Tut mir leid. Vielleicht bin ich ja gerade verwirrt und verstehs nicht.

By the way
Im zweiten Beispiel stimmt die Frameanzeige nicht. :D Die zeigt immer nur die Hälfte an.
Mach mal LIMITFPS 30 dann steht bei der Ausführung oben im Screen 15 usw.


Cheers
The day will come...

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

Kitty Hello

...damit die anderen BASICs nicht so blaß daneben aussehen :D

WPShadow

Ok!

Ich habe wiedermal Blödsinn gebaut! Jetzt haut alles hin! Habe das Problem (glaube ich) wiedermal durch viel Schwachsinn schreiben übersehen! Wald und Bäume und so... :/

Hiermit möchte ich mich entschuldigen und verspreche, daß ich dieses Thema nie wieder angehen werde! SORRY...

GLG

W.

PS.: Auf dem Laptop meiner Freundin komme ich zwar nur auf 60 FPS, aber jetzt ist dafür alles klar! Und danke für die Hilfe...
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Kitty Hello

Die 60 FPS scheinen mir die Refresh-Rate vom Monitor zu sein. Bei den OpenGL Treiber Einstellungen kann man angeben, ob er sync mit dem Monitor machen soll.