Optimieren der Framerate

Die Framerate ist die Anzahl der pro Sekunde gerenderten Einzelbilder, der Frames (Frames pro Sekunde - fps). Sie bestimmt, wie flüssig das Spiel läuft, und ist von den folgenden Faktoren abhängig:

Um die Framerate für einen weichen Spieleablauf über 25 fps zu halten, müssen diese Faktoren ausbalanciert sein. Die gute nachricht ist die, dass Sie eine der schnellten Engines am Markt haben. Sie ist in der Lage wirklich große Szenen mit bis zu 100.000 Entities zu managen. Bei einer gegebenen Szene hat die Geschwindigkeit Ihrer Graphikkarte und die Anzahl der per Frame gezeichneten Pixel den größten Einfluß auf die Framerate.Mit dem "grenzenlosen Terrain-Beispiel" (infinite terrain example), das 9 Views mit jeweils etwa 6600 Entities rendert, können Sie die Performance Ihrer Hardware testen. Selbst auf alten PCs sollte die Gesamtsumme von 60.000 Entities mit 20.. 30 fps gerendert werden. Sie können sehen, wie die Framerate nachläßt wenn Sie Reichweite von camera.clip_far erhöhen, so dass in Wirklichkeit mehr Entities gezeichnet werden. Auch wenn Sie die Skalierung der Modelle erhöhen und dadurch mehr Pixel zeichnen, geht die Framerate nach unten. Das sollte Ihnen ein Gefühl dafür geben wie viele Entities Sie bei einer gegebenen Graphik-Hardware in Ihr Game packen können.

Der fps-Anteil bestimmter Elemente lässt sich im [F11]-Panel in ms per Frame einsehen. Manchmal kann dieser grösser sein als die tatsächliche Renderzeit von Engine und Hardware, insbesondere im Fullscreen Modus, in dem die Framerate durch die Bildschirmfrequenz begrenzt wird (meistens 60 Hz bei LCD- und 70..80 Hz bei CRT-Bildschirmen).

Monitorfrequenz und fps

Im Vollbildmodus Modus synchronisiert DirectX die Framerate mit einer Monitorfrequenz zwischen 60 und 80 Hz, um Tearing-Artifakte zu vermeiden. Die Bildwiederholungsrate wird künstlich verzögert, damit sie zeitlich darauf passt wenn der Monitor seinen Videozyklus beendet hat. Diese Verzögerung ist in der "screen refresh"-Zeit im [F11]-Panel zu sehen. Derart werden Sie niemals eine höhere Framerate bekommen als Ihr Monitor darstellen kann. Ihre Framerate ist ein ganzzahliger Teiler der Monitorfrequenz. Liegt die Framerate dicht bei der Monitorfrequenz, kann eine kleine Änderung der Renderzeit dazu führen, dass die Framerate plötzlich von 30 auf 60 fps springt oder umgekehrt.

Enige Tipps zur Verbesserung der Framerate in Ihren Spielen

Einige Tipps, die die Framerate in Ihren Games NICHT erhöhen

Warum in aller Welt sollten Sie die Framerate verringern wollen? Dafür gibt es drei Gründe. Ihre Bewegungsfunktionen könnten nur innerhalb einer bestimmten Framerate korrekt funktionieren und bei 1000 fps danebengehen. Sie wollen nicht, daß Ihre Anwendung sämtliche CPU-Zyklen verbraucht. Und vor allem wollen Sie natürlich ein Ruckeln vermeiden. Ruckeln meint scheinbar 'stotternde' Kamera- und Actorbewegungen trotz bzw. gerade wegen hoher Framerate. Es tritt nicht auf in einem normalen Spiel mit komplexen Leveln und mittlerer Framerate. Jedoch bei Spielen mit fast leeren Leveln und wenig Inhalt wird die Framerate permanent von fps_max begrenzt und führt zu dem berüchtigten Ruckeln.

Der Hauptgrund für das Ruckeln liegt in der geringen Auflösung des Task-Scheduler auf einem PC und daher - vor allem, wenn mehrere Anwendungen gleichzeitig auf einem einzelnen PC laufen - unpräzisen Startzeiten von Tasks. Das Problem läßt sich umgehen, indem man die Framerate nicht nur per fps_max limitiert, was dem Windows Task-Scheduler lediglich Task-Zeit zurückgibt, sondern indem man CPU-Zyklen wirklich auf die eine oder andere Weise 'verbrennt'. Glücklicherweise ist dies einfach zu bewerkstelligen. Falls Ihr Spiel von Ruckeln geplagt wird, setzen Sie einfach ein paar mehr Details in Ihre Level. So vermeiden Sie eine zu hohe Framerate.

► Aktuelle Version Online