Was ist ein Tick im Kontext der Spieleentwicklung?

12

Ok, das ist eine Frage für Anfänger, aber ich muss wissen, worauf bezieht sich der Begriff "Tick" im Kontext der Spieleentwicklung? Ist es dasselbe wie FPS? Vielen Dank!

user3843164
quelle
1
Woher haben Sie diese Terminologie übrigens? Einige Leute nennen es einfach ein Häkchen, weil physics engine update framees für Gelegenheitsspieler zu lang ist, um sich zu erinnern / zu verstehen.
Bálint

Antworten:

18

Ein Häkchen ist eine Maßeinheit für die Zeit, insbesondere bezieht es sich auf eine einzelne Instanz einer wiederholten Aktion (normalerweise eine allgemeine Aktion) in einem Spiel oder auf den Zeitraum, den diese Aktion verbraucht.

Zecken wiederholen sich und sind (meistens) regelmäßig; der begriff kommt von einem der töne, die eine uhr macht ("tick" und "tock").

In der Regel ist ein Häkchen eine Iteration einer Schleife, z. B. der Hauptspiel-Logikschleife. Man kann zum Beispiel sagen, dass die Spiellogik einmal pro Frame "tickt" oder dass "während des Ticks die Positionen der Charaktere aktualisiert werden".

Es kann sich jedoch auch auf körnigere Zeiträume beziehen. man kann sagen, dass "der KI-Tick im Spiel auf 5 ms Bearbeitungszeit begrenzt ist".

FPS ist ein Maß dafür, wie viele Frames (normalerweise Render-Frames) ein Spiel in einer Sekunde verarbeitet. Ticks und FPS sind nicht unbedingt miteinander verbunden. Manchmal wird jedoch eine einzelne Ausführung der Spiellogikschleife als "logischer Frame" bezeichnet. In diesem Fall entspricht die (logische) FPS-Rate der Anzahl der pro Sekunde verarbeiteten Ticks. Dies ist besonders häufig bei Spielen der Fall, bei denen aus irgendeinem Grund feste Bildraten für die Spielelogik oder -physik gelten.


quelle
2

Die meisten Spiele werden in einer Schleife implementiert. Etwas wie

def main
 setup(a, bunch, of, stuff)
 load(a, bunch, of, stuff)
 while true do {
   // <- A tick starts here
   read(a, bunch, of, inputs)
   call(a, bunch, of, stuff)
   do(a, bunch, of, stuff)
   update(a, bunch, of, stuff)
   // <- A tick ends here
 }
 clean(a, bunch, of, stuff)
 save(a, bunch, of, stuff)
end

Dies ist eine ziemlich übliche Vorgehensweise, und während Rendering- und UI-Elemente in einem separaten Thread behandelt werden können, geschieht die eigentliche Spiellogik (drücken Sie w, um Ihr Schiff vorwärts zu bewegen) in diesem Häkchen.

Dies wird auch als "Frame" bezeichnet und wird normalerweise als Framerate bezeichnet (nicht zu verwechseln mit dem Grafikmaterial). Tick ​​ist zu einem beliebten Synonym geworden, um die beiden zu unterscheiden.

Als Programmierer ist es Ihr Ziel, eine konstante, stabile Bildrate (Tick) zu haben, egal was passiert. Dadurch bleiben die Reaktionen in Ihrem Spiel reibungslos und rational, und gleichzeitig kann ein Modell (keine Grafik, sondern eine Programmierung) die Dinge auf computerfreundliche Weise verarbeiten. Die Tick-Zeiten sind über Spiele hinweg nicht konstant und es gibt keine magische Zahl. Einige Spiele sind 100 Bilder pro Sekunde, andere sind 1 Tick alle 3 Sekunden.

coteyr
quelle
1
Es ist wichtig zu beachten, dass nicht alle Spiele eine statische Tickrate haben. Screeps und Eve Online unterstützen beide variable Tick-Raten. Minecraft soll eine stabile Tick-Rate sein, erreicht diese aber normalerweise nicht und funktioniert gut. Die Zwergenfestung hat eine statische Framerate und ist mies, wenn sie nicht mithalten kann, funktioniert aber trotzdem.
Coteyr
Ich denke, Sie mischen die Begriffe "Frame" und "Tick" hier etwas zu sehr. Ticks können sich auch über mehrere Frames erstrecken (oder Aktualisierungszyklen).
Tyyppi_77
1

Ein "Häkchen" kann sich auf zwei verschiedene Dinge beziehen. Es könnte sich auf ein Frame-Häkchen beziehen, da Sie sagten, dass alle sichtbaren Grafiken auf dem Bildschirm aktualisiert werden. Der Begriff "Tick" kann sich jedoch auch auf einen Spielschleifen-Tick beziehen. Bei dieser Art von Häkchen wird Ihr Code ausgeführt. Normalerweise befinden sich Ihre Ticks im Kontext einer Schleife mit denselben sich wiederholenden Ticks, die bis zum Ende des Spiels fortgesetzt werden.

Freddy
quelle
1

Ein Tick bezieht sich im Allgemeinen auf eine Iteration der Spielschleife, in der die gesamte Logik berechnet wird, sodass Spiele im Allgemeinen mehrere Ticks pro Sekunde aufweisen.

Bei vielen Spielen werden jedoch sowohl die Grafik als auch die Spieleschleife auf demselben Thread ausgeführt, da die Anzeige der Grafik in der Regel nicht so lange dauert, sodass die Logik unterbrochen wird, oder umgekehrt (obwohl die Entwickler solche Situationen wie diese überprüfen Nehmen Sie die Zeitdifferenz zwischen dem letzten und dem aktuellen Bild und passen Sie die Bewegungsrate entsprechend an.

FPS steht für F rames P er S econd, also ist für viele Spiele, technisch gesehen, jeder Frame ein Tick.

StrongJoshua
quelle
Also kann ich beide Begriffe austauschbar verwenden?
User3843164
2
Würde ich nicht. Ich würde "FPS" verwenden, wenn ich mich auf Grafiken beziehe, und "Ticks", wenn ich mich auf Logik beziehe, weil einige Spiele, insbesondere solche mit intensiven Grafiken, dazu neigen, zwei Schleifen zu haben: eine für die Grafiken und eine für die Logik.
StrongJoshua
Ein Häkchen ist kein Thread.
@JoshPetrie Oooh, ich sehe meinen Fehler, danke, dass du darauf hingewiesen hast. Es ist jetzt behoben.
StrongJoshua
1
Spiele haben in der Regel mehrere Ticks pro Sekunde. "Oft" vielleicht. "Allgemein", nein. Brettspiele oder Strategiespiele können nur ankreuzen, wenn der Benutzer eine Bewegung ausführt, sowohl im "Hauptschleifen-Iterations" -Sinn als auch im "Rendern" -Sinn.
Anko