@Edlmann: Also meine CPU ist ein Dualcore@2.66GHZ. Davon ausgehend dass du eine Singlethread Applikation hast bleibt noch immer ein kern mit ca 2.66GHZ übrig. Das sollte schon machbar sein
.
Zeitlimitierung ist relativ einfach:
Definiere eine Double namens TimeStep.
pseudocode:
Delphi-Quellcode:
OptMS = 1000 / 60;//davon ausgehend das 60fps volle geschwindigkeit bedeutet, errechnen wir die zeit
//bei optimaler geschwindigkeit bzw wieviel ms optimal pro frame gebraucht werden.
TimeStep = UsedMS / OptMs;//UsedMS ist die zeit die wir für unseren letzten framezyklus gebraucht
//haben
Braucht ein Frame die optimale anzahl MS, ist TimeStep 1. Braucht ein FrameZyklus mehr ist TimeStep > 1. Braucht ein FrameZyklus weniger ist TimeStep < 1.
Alle kalkulationen laufen dann z.B. so:
[pseudocode]
MeinePosition.X := MeinePosition.X + Speed*TimeStep;
Speed währe hier unsere geschwindigkeit die wir auf eine position dazu rechnen wollen(im optimalen FPS fall), der wert wird automatisch mit TimeStep skaliert und an die FPS angepasst.
Das bedeutet aber natürlich dass du(wenn du es nicht eh schon tust) öfters mit Extended rechnen und das aufrufen von Round() zu einem minimum reduzieren musst. Ka wie du da verfährst in deinem Game^^.
MFG
Memnarch