Frameunabhängieges Programieren???
Übersicht

![]() |
BtbNBetreff: Frameunabhängieges Programieren??? |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie anders? Es geht mit Millisecs(). Wie erklär ich jez net und das müsste hier eh ins beginner forum. | ||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nicht so anders.
Ich möchte es schon noch Frameunabhängig haben, aber nicht so, dass mir meine Figuren alle Kolisionen durchrennen! |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nun, ich brauch das, damit mein Online-Shooter nicht desynct.
Mach das nicht die Synchro kaput? |
||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
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! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group