frametimer
Übersicht

![]() |
maboxBetreff: frametimer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo ich hab ein Problem mit einem kleinen Spiel. Und zwar läuft es auf manchen Rechnern viel zu schnell. Muss ich da einen eine Framebegrenzung oder so was einbauen?
Wenn ja wie geht das? |
||
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl Dönerfresser Homepage |
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, das Problem ließe sich mit Frame-Begrenzung teilweise beheben. Das Programm würde dann auf schnellen Rechnern nicht zu schnell laufen. Dafür aber auch langsamen zu langsam. Viel mehr ist hier die Frameunabhänige Programierung geeignet, sie gewährleistet auf alles PCs gleich schnelle Bewegungen. Der Trick ist, das man auf schnellen, PCs(=wenn ein Schleifendurchlauf sehr kurz ist) pro Frame kleinere Bewegungen ausführt als auf langsameren.
Das ganze funktioniert indem man alle Bewegungen mit der Zeit multipliziert, die der letzte Frame in Anspruch nahm. Beispiel-Code: [AUSKLAPPEN] Graphics 640,480,0,2
SetBuffer BackBuffer() Ms = Millisecs() Repeat Timescale = Millisecs() - Ms Ms = Millisecs() X# = (X# + 0.1 * Timescale) Mod 640 Rect X, 100, 10, 10 Flip 0 Cls Delay rand(200) ; Mit dieser Zeile wird getestet, ; ob das Rechteck sich bei unterschiedlich ; langen Frames trotzdem gleichmäßig bewegt Until KeyHit(1) Wenn sich nach dieser Änderung alle zu schnell bewegt, musst du folgende Zeile ändern: Code: [AUSKLAPPEN] Timescale = Millisecs() - Ms
Wird zu: Code: [AUSKLAPPEN] Timescale# = (Millisecs() - Ms) * Factor#
Den Faktor hierbei durch eine beliebige Zahl kleiner als 1 ersetzen um die Bewegungen zu verlangsamen(funktioniert natürlich auch anders rum, bei Zahlen größer als 1 wird alles schneller). Ich arbeite normalerweise mit dem Faktor 0.001, was es mir ermöglicht alle Bewegungswerte in Bewegung/Sekunde anzugeben, womit man viel besser klar kommt als mit Bewegung/Millisekunde(imho). |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
- Zuletzt bearbeitet von aMul am Mi, März 28, 2007 13:58, insgesamt einmal bearbeitet
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja, also wenn ich deinen Code teste, ruckelt die Bewegung des Würfels immer... | ||
°_° °.° °~° °v° .. -.- |
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, wegen dem Delay. ![]() Das hab ich extra rein genommen, damit man sieht das trotz ruckeln der Würfel in gleicher Zeit die gleiche Entfernung zurücklegt(ich dachte der Kommentar wäre eindeutig, wahrscheinlich gar nicht gelesen, was?). Teste mal ohne Delay, dann ruckelt es garantiert nicht ![]() |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
![]() |
maboxBetreff: Danke |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke für die ausführliche Erklärung. Ich werde Versuchen etwas daraus zu machen! | ||
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl Dönerfresser Homepage |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group