Zittern und stottern beheben

Was ist zittern und stottern?

Zittern und Stottern sind zwei verschiedene Änderungen der sichtbaren Bewegung von Objekten auf dem Bildschirm, die sich auf ein Spiel auswirken können, selbst wenn sie mit voller Geschwindigkeit laufen. Diese Effekte sind vor allem in Spielen sichtbar, in denen sich die Welt mit konstanter Geschwindigkeit in eine feste Richtung bewegt, wie Laufspiele oder Plattformer.

Unterscheiden zwischen beiden

Ein Spiel, das mit einer normalen Framerate läuft, ohne einen Effekt zu zeigen, erscheint flüssig:

../../_images/motion_normal.gif

Ein Spiel mit zittern wird sich ständig auf sehr subtile Weise minimal bewegen:

../../_images/motion_jitter.gif

Schließlich erscheint ein Spiel mit stottern flüssig, scheint jedoch alle paar Sekunden anzuhalten oder einen Frame zurückzusetzen:

../../_images/motion_stutter.gif

Zittern

Es kann viele Ursachen für zittern geben. Die typischste tritt auf, wenn die Physikfrequenz des Spiels (normalerweise 60 Hz) mit einer anderen Auflösung als die Monitor-Aktualisierungsrate läuft. Überprüfen Sie, ob die Aktualisierungsrate Ihres Monitors eine andere als 60 Hz ist.

Das ist normalerweise kein Problem, da die meisten Monitore 60Hz unterstützen und Godot ab Version 3.1 einen Timer besitzt, der so gut es geht einen Refresh zu synchronisieren versucht .

Manchmal scheinen nur einige Objekte zu zittern (Charakter oder Hintergrund). Dies geschieht, wenn sie in verschiedenen Zeitquellen verarbeitet werden (eine wird im Physikschritt verarbeitet, während eine andere im Leerlaufschritt verarbeitet wird). Godot 3.1 verbessert dies, angefangen von der Animation von kinematischen Körpern in der regulären _process-Schleife bis hin zu weiteren Korrekturen im Frame-Timer.

Bemerkung

Sie können die Physikinterpolation verwenden, um physikbedingtes Zittern zu verringern. Ein Add-On, das in jedes Projekt eingefügt werden kann um die Interpolation der Physik zu ermöglichen, finden Sie unter Lawnjelly's Glättungs-Addon.

Stottern

Stottern kann aus zwei verschiedenen Gründen auftreten. Das erste und offensichtlichste ist, dass das Spiel nicht in der Lage ist, die volle Framerate-Leistung aufrechtzuerhalten. Die Lösung hierfür ist abhängig vom Spiel und erfordert eine Optimierung.

Die zweite ist komplizierter, da sie häufig nicht der Engine oder dem Spiel, sondern dem zugrunde liegenden Betriebssystem zugeordnet ist. Hier finden Sie einige Informationen zum Stottern auf verschiedenen Betriebssystemen.

Windows

Es ist bekannt, dass Windows beim spielen im Fenstermodus Stottern verursacht. Dies hängt hauptsächlich von der installierten Hardware, der Treiberversion und den parallel ausgeführten Prozessen ab (z.B. kann das Öffnen vieler Browser-Registerkarten in einem laufenden Spiel zu Ruckeln führen). Um dies zu vermeiden erhöht Godot ab 3.1 die Spielpriorität auf "Über Normal". Dies hilft erheblich, kann jedoch das Stottern nicht vollständig beseitigen.

Um dies vollständig zu beseitigen, müssen Sie Ihrem Spiel die vollen Berechtigungen geben, um "zeitkritisch" zu werden, was nicht empfohlen wird. Einige Spiele können dies tun, es wird jedoch empfohlen mit diesem Problem zu leben, da dies bei Windows-Spielen üblich ist und die meisten Benutzer keine Spiele im Fenstermodus spielen (Spiele, die in einem Fenster gespielt werden, z.B. Puzzlespiele, zeigen normalerweise nicht dieses Problem).

Für den Vollbildmodus legt Windows besonderen Wert auf das Spiel, sodass Stottern nicht mehr sichtbar und sehr selten ist. So werden die meisten Spiele gespielt.

Linux (X11)

Unter Desktop Linux kann Stottern sichtbar sein, dies ist jedoch normalerweise mit verschiedenen Grafiktreibern und Compositors verbunden. Nouveau-Treiber weisen dies häufig auf, AMD- oder NVidia-eigene nicht. Einige Compositors können dieses Problem auch auslösen (z.B. KWin). Es wird daher empfohlen einen anderen zu verwenden, um dies als Ursache auszuschließen.

Es gibt keine andere Problemumgehung für das Stottern von Treibern oder Compositors, als es den Treiber- oder Compositor-Entwicklern als Problem zu melden.

macOS

Im Allgemeinen ist MacOS ruckelfrei, obwohl kürzlich einige Fehler beim Ausführen im Vollbildmodus gemeldet wurden (dies ist ein MacOS-Fehler). Wenn Sie eine Maschine haben die dieses Verhalten zeigt, teilen Sie uns dies bitte mit.

Android

Im Allgemeinen ist Android frei von stottern und zittern, da die laufende Aktivität Vorrang hat. Es kann jedoch problematische Geräte geben (z.B. ältere Kindle Fire). Wenn Sie dieses Problem auf Android sehen, lassen Sie es uns bitte wissen.

iOS

iOS-Geräte sind im Allgemeinen ruckelfrei, ältere Geräte auf denen neuere Versionen des Betriebssystems ausgeführt werden, können jedoch Probleme aufweisen. Dies ist in der Regel unvermeidlich.

Probleme mit stotter oder zittern melden

Wenn Sie ein Stottern oder Zittern melden (ein Problem eröffnen), das nicht aus einem der oben genannten Gründe verursacht wurde, geben Sie bitte alle möglichen Informationen zu Gerät, Betriebssystem, Treiberversionen usw. sehr detailliert an. Dies kann zur besseren Fehlerbehebung beitragen.

Stellen Sie außerdem sicher, dass Sie den richtigen Begriff (Zittern/Jitter oder Stottern/Stutter) verwenden, der auf dem gezeigten Verhalten basiert. Dies hilft uns Ihr Problem viel schneller zu verstehen. Stellen Sie ein Projekt bereit, mit dem das Problem reproduziert werden kann und wenn möglich einen Screenshot der den Fehler demonstriert.