Die beste Antwort ist: Es kommt darauf an .
Sie müssen keine einschränken
Updates : Wenn Ihre Updates nicht an eine Obergrenze gebunden sind, sollte die Spielelogik von einem Delta- Zeitbetrag abhängen , um zu vermeiden, dass das Spiel je nach Computer, auf dem es ausgeführt wird, schneller oder langsamer ausgeführt wird. Dies ist ein sehr verbreiteter Ansatz, der von vielen Spielen verwendet wird, aber nicht der einzige.
Rendern : Wenn das Rendern nicht an eine Obergrenze gebunden ist, wird der Framebuffer möglicherweise in einem unvollständigen oder fehlerhaften Zustand dargestellt, was zu Zerreißartefakten führt . Aus diesem Grund verwenden viele Spiele die vertikale Synchronisation (V-Sync).
Sie können beide einschränken
Updates : Einige Spiele verwenden feste Zeitschritte für einige oder alle Gameplay-Systeme. Dieser Ansatz funktioniert genau so, wie Sie es beschrieben haben. Die Anzahl der Updates pro Sekunde ist auf eine Obergrenze begrenzt, um sicherzustellen, dass sich die Dinge auf einem erstklassigen Computer nicht zu schnell bewegen. Dadurch entfällt die Notwendigkeit eines Delta-Timings. Einige Anwendungen sind mit festen Zeitschritten besser, andere mit Delta-Timing. Die Wahl des Ansatzes hängt ganz davon ab, was genau Sie erreichen möchten. Das Online - Buch GameProgrammingPatterns hat ein eigenes Kapitel gewidmet Spiel Schleifen , dass Berührungen auf beiden Architekturen.
Rendern : Frames Per Second sollten auf eine Obergrenze eingestellt werden, um das oben erwähnte Rissproblem zu vermeiden. Ihre Anwendung sollte dies jedoch nicht manuell mit einer CPU-Sperre versuchen. Aktivieren Sie stattdessen die V-Synchronisierung und lassen Sie die zugrunde liegende Hardware mit der Aktualisierungsrate des Monitors synchronisieren. Auf diese Weise ist Ihr Spiel vorwärtskompatibel mit zukünftigen Monitoren, die möglicherweise auf einer viel höheren Frequenz als den derzeit üblichen 60 Hz arbeiten. Es ist auch erwähnenswert, dass viele Spieler, insbesondere diejenigen, die sich mit Benchmarking beschäftigen, es immer noch vorziehen, ohne V-Sync zu laufen, um die höchstmögliche Bildrate zu ermöglichen. Es ist daher sinnvoll, die Funktion zur Laufzeit zu aktivieren oder zu deaktivieren.
Was Sie nicht einschränken sollten
Wenn Ihr Spiel einen auf Abfragen basierenden Ansatz für Benutzereingaben verwendet, z. B.: Ruft eine getInput()
Art auf, um die Controller-Zustände während des Aktualisierungsschritts zu aktualisieren, ist dies besser, wenn nicht eingeschränkt. Oder wenn begrenzt, dann auf eine sehr hohe Obergrenze setzen. Je öfter Sie Benutzereingaben abfragen und darauf reagieren, desto reaktionsschneller und flüssiger wird sich das Spiel "anfühlen". Die sogenannten 60-Hz-Spiele, von denen wir heutzutage hören, aktualisieren nicht die KI und alle Weltzustände mit dieser Geschwindigkeit, einige rendern nicht einmal so schnell, aber sie fragen die Controller-Eingabe mindestens 60 Mal pro Sekunde ab und aktualisieren den Spieler-Avatar entsprechend. Zugegeben, dies ist nur für schnelllebige Actionspiele wirklich relevant.