Frameunabhängieges Programieren???

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

BtbN

Betreff: Frameunabhängieges Programieren???

BeitragSa, Jul 23, 2005 10:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ersma.
Ich habe versucht, das Frameunabhängige Programieren, wie ich es hier bei den Tutorials gefunden habe, in mein Game einzubauen.
Aber seit dem rast die Figur wie bescheurt über den Screen, und durchbricht sämtliche Grenzen(sogar die map-außen-Grenzen, was zu nem Absturz führt)!
Meine Frage nun:
Geht das auch anders?

Lord_Vader

BeitragSa, Jul 23, 2005 10:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie anders? Es geht mit Millisecs(). Wie erklär ich jez net und das müsste hier eh ins beginner forum.

BtbN

BeitragSa, Jul 23, 2005 10:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicht so anders.
Ich möchte es schon noch Frameunabhängig haben, aber nicht so, dass mir meine Figuren alle Kolisionen durchrennen!

Jolinah

BeitragSa, Jul 23, 2005 12:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Eigentlich musst du nur bei jedem Schleifendurchgang berechnen wie lange der letzte Durchgang gebraucht hat und dann jede Bewegung mit diesem Faktor multiplizieren.

Code: [AUSKLAPPEN]

timer = millisecs()
zeit# = 0.0

Repeat
zeit# = (millisecs() - timer) / 1000.0
timer = millisecs()
Cls


Flip
Until ...


Damit es am Anfang nicht zu schnell ist muss man den timer auf die aktuelle Zeit setzen, denn wenn er 0 wäre (millisecs() - 0 / 1000.0) würde eine recht grosse Zahl herauskommen. Dann wird die Zeit halt berechnet, und danach setzt man den timer neu, damit die Zeit auch das nächste mal richtig berechnet wird.

Das teilen durch 1000 bewirkt dass du die Geschwindigkeit nun in Pixel/Sekunde angeben kannst. Mit anderen Worten sind dann 50 Pixel pro Sekunde:

Code: [AUSKLAPPEN]
50 * zeit#


Und da die Geschwindigkeit nun Zeitbasiert ist, kann die Framerate 1000Fps betragen, oder 2 Fps und die Geschwindigkeit bleibt immer gleich schnell, nur dass es bei 2 Fps halt eine ruckelnde Bewegung ist.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Jul 23, 2005 14:01
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn die fps unter eine bestimmte Grenze fällt und die Bewegungen sehr groß werden kann es vorkommen das das Programm nicht mehr richtig funktioniert!
Bei einer Kugel zB kann es passieren das keine Kollision erfolgt weil sie um zuviele Pixel versetzt wird und einfach durchfliegt!

das läßt sich aber einfach umgehen mit einer If Abfrage
BlitzBasic: [AUSKLAPPEN]
If Multiplikator > 5 Then Multiplikator = 5 

5 ist relativ, da kommt es auf das Progamm an!
[BB2D | BB3D | BB+]

BtbN

BeitragSa, Jul 23, 2005 14:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun, ich brauch das, damit mein Online-Shooter nicht desynct.
Mach das nicht die Synchro kaput?

BtbN

BeitragSa, Jul 23, 2005 17:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir läuft das spiel jetzt mit ca 50FPS recht gut und flüssig.
Doch ich hab es wem gegeben, bei dem es mit 450 FPS lief, und total um rumruckeln war!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group