frametimer

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

mabox

Betreff: frametimer

BeitragMi, März 28, 2007 13:06
Antworten mit Zitat
Benutzer-Profile anzeigen
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

aMul

Sieger des Minimalist Compo 01/13

BeitragMi, März 28, 2007 13:18
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, März 28, 2007 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, also wenn ich deinen Code teste, ruckelt die Bewegung des Würfels immer...
°_° °.° °~° °v° .. -.-

aMul

Sieger des Minimalist Compo 01/13

BeitragMi, März 28, 2007 13:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, wegen dem Delay. Rolling Eyes
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 Wink
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

mabox

Betreff: Danke

BeitragMi, März 28, 2007 14:00
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group