Aus der FAQ: Korrekte Spielgeschwindigkeit
-
Hallo zusammen
In der FAQ hats folgenden Beitrag um die korrekte Spielgeschwindigkeit auf allen Computern zu erhalten:
long position_x = 0; long zeit; float unterschied; float position_x_rechnen = 0; float faktor; for(;;) { zeit = Hole_Millisekunden(); Rendere_das_Bild(); unterschied = Hole_Millisekunden() - zeit; // Beispiel für 10 px/s nach rechts... faktor = 0.001 * unterschied; position_x_rechnen += 10 * faktor; position_x = Runde_auf_oder_ab(position_x_rechnen); }
Meine Frage hierzu:
nehmen wir an, es werden 7ms für einen arbeitsschritt benötigt. unterschied=7. somit ist faktor=0.007. position_x_rechnen wird dann ja immer abgerundet??cu
-
nehmen wir an, es werden 7ms für einen arbeitsschritt benötigt. unterschied=7. somit ist faktor=0.007. position_x_rechnen wird dann ja immer abgerundet??
auf 0 abgerundet hätte ich dazuschreiben sollen...
-
Ich persönlich arbeite dann grundsätzlich immer mit float- oder double-Variablen.
Auf- bzw. Abrunden geschehen dann nur beim Zeichnen, zumindest bei 2D-Grafik mit DirectDraw (bei Direct3D ist das ja was anderes).
-
besten dank, jetzt klappts
nur hab ich irgendwie das gefühl, dass alles nicht mehr ganz so flüssig läuft... so ein enorm leichtes stocken in der bewegung.