9 Stimmen

Der beste Ansatz für Spieleanimation?

Ich habe eine Kursübung in OpenGL, um ein Spiel mit einfachen Animationen von ein paar Objekten zu schreiben

Während der Diskussion mit meinem Partner über unsere Designoptionen haben wir festgestellt, dass wir zwei Hauptoptionen für die Animation haben, entweder

  • Stellen Sie einen Timer für ein konstantes Intervall ein, z. B. 30 ms, und berechnen Sie, wo sich die Objekte befinden sollen, wenn der Timer läuft, und zeichnen Sie den Rahmen. oder -
  • Verwenden Sie keinen Timer, sondern eine normale Schleife, die die ganze Zeit läuft und in jeder Iteration prüft, wie viel Zeit vergangen ist, berechnet, wo sich die Objekte entsprechend dem Intervall befinden sollten, und zeichnet den Rahmen.

Welcher Ansatz sollte generell bevorzugt werden? Hat jemand konkrete Erfahrungen mit einem der beiden Ansätze?

0voto

gnovice Punkte 124264

Ich wäre versucht, die Schleife zu verwenden, da sie so schnell wie möglich gerendert wird (d.h. unmittelbar nachdem Ihre Physikberechnungen abgeschlossen sind). Dies wird wahrscheinlich robuster sein, wenn Sie in eine Verlangsamung der Berechnung laufen, die dazu führen würde, dass Timer Zündungen zu starten Warteschlange. Im Falle einer solchen Verlangsamung müssen Sie jedoch möglicherweise den Zeitschritt zwischen den Aktualisierungen begrenzen, da Ihre Physik-Engine bei zu großen Zeitsprüngen instabil werden könnte.

0voto

Dan Olson Punkte 21991

Ich würde vorschlagen, das System so einzustellen, dass es mit einem "Delta" arbeitet, das von außen zugeführt wird.

Als ich dies tat, habe ich innerhalb des Animationsformats alles auf Echtzeitwerten aufgebaut. Das Delta ich in war 1 / 30 Sekunden übergeben, aber es könnte alles sein. Mit diesem System können Sie entweder Ihre erste oder zweite Option, je nachdem, ob Sie in einem festen Delta übergeben oder wenn Sie in der Menge der Zeit, die seit dem letzten Bild vergangen ist übergeben.

Was besser ist, hängt von Ihrem Spiel und Ihren Anforderungen ab. Idealerweise sollten alle Ihre Systeme auf demselben Delta basieren, damit Ihre Physik mit Ihren Animationen übereinstimmt. Wenn Ihr Spiel überhaupt Frames fallen lässt und alle Ihre Systeme mit einem variablen Delta arbeiten, würde ich vorschlagen, dass das variable Delta die bessere der beiden Lösungen für die Endbenutzererfahrung ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X