Probleme durch schlechte Performance
Wenn die Framerate unter ein kritisches Level sinkt, ist das kein schönes Spielerlebnis. Abgesehen von unschönen Rucklern und Ladezeiten können aber auch schwerwiegendere Fehler auftreten. In unserem Fall war die Kollisionsberechnung bei niedrigeren Framerates sehr anfällig für Fehler. In der Skizze sind zwei aufeinander folgende Frames dargestellt. In beiden Frames wird der durch den Pfeil angedeutete Ray keine Kollision feststellen und die Bewegung dadurch nicht stoppen.
Dies kommt daher, dass die Geschwindigkeit, mit der sich die Kugel bewegt, nicht von der Framerate, sondern von der tatsächlich verstrichenen Zeit abhängen soll. Dadurch kann es passieren, dass die Kugel zwischen zwei Frames ein größeres Stück springt. Wenn dieser Sprung größer als das angegebene Delta ist, kann es passieren, dass die Kugel nie in einer Position ist, in der sie mit dem Boden kollidieren würde.
Abgesehen von Performanceverbesserungen war unsere Lösung zu diesem Problem die Folgende: Wir legten eine maximale "Sprungweite" fest die kürzer als die Länge des Kollisions-Rays war. So ist sichergestellt, dass der Ray alle Objekte früh genug erkennt. Dies führte allerdings dazu, dass die Bewegungs- und Fallgeschwindigkeit bei niedrigen Framerates gesunken ist.