| Vollversion | |
|---|---|
| 1.13 (18w16a) |
|
| 1.20 (23w43a) | |
Tick
Minecraft ist ein Tick-basiertes Computerspiel. Im Gegensatz zu einem rundenbasierten Computerspiel, bei dem der Spielverlauf durch das Beenden einer Spielrunde voranschreitet, schreitet er bei einem Tick-basierten Computerspiel in immer gleichen Zeitintervallen voran, den Ticks. Nach jedem Tick werden automatisch bestimmte Aktionen ausgelöst.
Zeitliche Ticks
[Bearbeiten | Quelltext bearbeiten]Spielticks
[Bearbeiten | Quelltext bearbeiten]Jedes Spiel definiert seinen Tick oder Spieltick selbst. Er wird in der Regel von einem Chip-Takt (clock tick) abgeleitet. Im Spiel Minecraft erfolgt ein Spieltick (engl. game tick) alle 1/20 (=0,05) Sekunden = 50 Millisekunden. Ein Tag-Nacht-Rhythmus dauert in Minecraft 20 Minuten. Auf einem Computer mit schnellem Prozessor entspricht das exakt 24000 Ticks. Auf einem langsamen Computer erfolgen in diesem Zeitraum jedoch weniger Ticks, sodass auf einem langsamen Computer Aktionen, die nach einer bestimmten Anzahl von Ticks erfolgen, langsamer ablaufen. Mit dem Befehl /debug kann man ein Debug-Protokoll erzeugen. Darin wird auch die Zeit in Millisekunden und die Anzahl der Ticks gemessen. Als Ergebnis wird angezeigt, wie viele Ticks durchschnittlich pro Sekunde erfolgt sind. Es müssten 20 sein. Beispiel:
Time span: 45146 ms Tick span: 630 ticks // This is approximately 13,95 ticks per second. It should be 20 ticks per second
Nach jedem Tick schreitet das Spiel etwas weiter voran: bewegliche Objekte ändern ihre Position, Kreaturen prüfen ihre Umgebung und passen ihr Verhalten an, Gesundheit und Hunger werden durch die Spieler-Umgebung beeinflusst etc.
Die Bildrate (engl. framerate, gemessen in fps, frames per second) steht in keinem Zusammenhang mit den Ticks. Während die Bildrate durch Einstellungen verändert werden kann, sind die Ticks idealerweise stets gleich lang - niemals schneller als 50 Millisekunden. Daher hat eine Veränderung der Bildrate keinen Einfluss auf die Spielmechanik. Ist der Rechner jedoch allgemein stark ausgelastet, leiden sowohl die Bildrate als auch die Ticks. Das Spiel vergleicht ständig die Systemzeit in Millisekunden mit der Tickzählung. Wenn die Abarbeitung der Aktionen pro Tick zu lange dauert, werden einige Ticks übersprungen. Im "Game Output" des Launchers wird das protokolliert:
[Server thread/WARN]: Can't keep up! Did the system time change, or is the server overloaded? Running 2339ms behind, skipping 46 tick(s)
In der Java Edition lässt sich die Tick-Rate mit dem Befehl /tick steuern.
Redstone-Ticks
[Bearbeiten | Quelltext bearbeiten]Ein Redstone-Tick ist die Zeiteinheit, in der die Verbreitung von Redstone-Signalen gemessen wird. 1 Redstone-Tick = 2 Game-Ticks (also 2/20 = 0.1 Sekunden). Die meisten Redstone-Bauelemente haben eine Verzögerung von einem Redstone-Tick.
Tickphasen
[Bearbeiten | Quelltext bearbeiten]In jedem Spieltick geht Minecraft eine festgelegte Liste von Ereignissen durch, welche in folgender Reihenfolge verarbeitet werden:
- Befehle ausführen (aus Befehlsblöcken oder direkt vom Spieler)
- Dimensionen aktualisieren (zuerst Oberwelt, dann Nether, dann Ende)
- Verarbeitung von Datenpaketen.
Das Aktualisieren der Dimensionen erfolgt dabei ebenfalls nach einer festgelegten Reihenfolge:
- Ausführung von Spieler-Aktionen (Blöcke bauen/abbauen, Hebel umlegen etc.)
- Aktualisieren der Weltgrenze
- Aktualisieren des Wetters
- Erschaffung von Kreaturen
- Aktualisierung der Weltzeit
- Ausführung von tile events (dazu gehört die Ausführung fast aller Block-Ticks, die mit Verzögerung Ereignisse auslösen z. B. Redstone-Verstärker, Redstone-Vergleicher, Werfer, Spender, aber auch Flüssigkeiten wie Wasser, Lava, fallende Blöcke etc.)
- Aktualisierung von Überfällen
- Aktualisierung der einzelnen Chunks (z. B. Lade- und Entladevorgänge von Chunks, Lichtlevel, Verarbeitung von zufälligen Block-Ticks uvm.)
- Verarbeitung von block events (hierzu gehören komplexere Vorgänge wie das Aus- und Einfahren von Kolben oder die Aktualisierung von Trichtern, aber auch Animationen von Kisten. Nicht zu verwechseln mit den tile events.)
- Aktualisierung Drachenkampf (überprüft, ob der Enderdrache besiegt wurde)
- Aktualisierung von Objekten (entities), neben Kreaturen gehören dazu z. B. Pfeile, Bilderrahmen oder gezündetes TNT. "Ältere" Objekte werden zuerst aktualisiert (wichtig u. a. für TNT-Kanonen).
- Aktualisierung von Block-Objekten (block entities)
Bestimmte Ereignisse im Spiel sind instantan und werden von dieser Reihenfolge nicht beeinflusst, sie können jederzeit eingeschoben werden. Dazu gehören das Öffnen und Schließen von Türen, Falltüren und Zauntoren, das Ein- und Ausschalten von Antriebsschienen und Redstone-Leitungen sowie das Sperren und Entsperren von Redstone-Verstärkern.
Ein tile event ist ein Objekt, welches fünf wesentliche Informationen enthält:
- time, die Weltzeit, zu der der Block-Tick ausgeführt werden soll, baut eine Verzögerung für bestimmte Prozesse ein. Für eine Redstone-Fackel zum Beispiel beträgt der Wert 2, was bedeutet, dass sie 2gt benötigt, bis sie von einem Signal deaktiviert wird.
- priority, ein Wert, welcher für alle Blöcke außer den Redstone-Verstärker und den Redstone-Vergleicher 0 ist. Für diese variiert er je nach Verschaltung zwischen -3 und 0, so dass sie vor anderen Blöcken verarbeitet werden.
- id, eine Zahl, die die tile events nach der Reihenfolge sortiert, in der sie erschaffen wurden. Früher erschaffene tile events werden bei gleichen Werten für time und priority zuerst verarbeitet.
- position, legt fest, wo das tile event ausgeführt werden soll.
- block, der Block, der das tile event ausgelöst hat. Sollten sich position und block im Moment der Ausführung unterscheiden, bricht das Spiel die Ausführung ab.
Ein block event dagegen enthält folgende Informationen:
- position, legt fest, wo das block event ausgeführt wird
- block, der Block, der das block event ausgelöst hat. Im Gegensatz zum tile event dürfen sich diese Informationen unterscheiden.
- type ist eine einfache Zahl. Sie ist nur dann weiter relevant, wenn ein Block verschiedene block events durchführen kann.
- data ist eine weitere Zahl, welche nur für Kolben relevant ist.
Örtliche Ticks
[Bearbeiten | Quelltext bearbeiten]Zufällige Block-Ticks
[Bearbeiten | Quelltext bearbeiten]Chunks bestehen aus 16 sogenannten Sektionen. Jede Chunk-Sektion ist ein Würfel aus 16 x 16 x 16 Blöcken. Bei jedem Game-Tick werden - unabhängig von der Sichtweite - in einem Umkreis von 15 Chunks um den Spieler in jeder Chunk-Sektion drei Positionen zufällig ausgewählt und erhalten einen Block-Tick. Luft und die meisten anderen Blöcke ignorieren diesen Tick, aber einige Blöcke können ihn für eine spontane Aktion nutzen:
- Kulturpflanzen wachsen oder entwurzeln.
- Ranken breiten sich aus.
- Feuer brennt oder breitet sich aus.
- Eis und Schnee schmilzt.
- Laub zerfällt.
- Ackerboden wird be- oder entwässert.
- Kaktus, Zuckerrohr, Bambus, Chorusblüte, Seetang und Süßbeeren wachsen.
- Grasblock und Myzel breitet sich aus oder zerfällt.
- Nezel zerfällt.
- Ein Setzling wächst zu einem Baum heran.
- Lava steckt etwas in Brand.
- Leuchtendes Redstone-Erz erlischt.
- Ein Netherportal spawnt einen Zombifizierter Piglin.
- Ein Schildkrötenei springt oder schlüpft.
- Ein Lagerfeuer gibt Rauch ab.
- Auf einem Amethystknospenblock wachsen Amethysthaufen.
- Verschiedene Blöcke aus Kupfer oxidieren weiter.
- Spitzer Tropfstein füllt einen daruterstehenden Kessel.
Im Durchschnitt erhält ein Block alle 68,27 Sekunden einen zufälligen Block-Tick. Es kann aber auch mal fünf Minuten dauern, oder in unter einer Sekunde geschehen.
Mit dem Befehl /gamerule randomTickSpeed kann man die Anzahl der betroffenen Blöcke pro Tick erhöhen, wodurch pro Game-Tick mehr als drei Blöcke einen Block-Tick erhalten. Dadurch passieren die genannten Zufallsereignisse schneller, weil die Wahrscheinlichkeit steigt, dass ein bestimmter Block getroffen wird.
Angeforderte Block-Ticks
[Bearbeiten | Quelltext bearbeiten]Doch nicht alle Block-Ticks werden dem Zufall überlassen. Blöcke können auch einen Block-Tick anfordern, wenn Aktionen nicht zufällig, sondern in festen Zeitabständen geschehen sollen. Block-Ticks werden von den Blöcken z.B. in Redstone-Schaltkreisen angefordert, deren Signalverarbeitung weiter laufen soll, von gedrückten Knöpfen, die zurückspringen wollen, von fallenden Blöcken, die fallen wollen, von Feuer, das ständig seine Form verändern will oder von Korallenblöcken, die absterben wollen.
Angeforderte Flüssigkeit-Ticks
[Bearbeiten | Quelltext bearbeiten]Wenn Wasser oder Lava einen Block-Tick anfordert, wird das als Flüssigkeit-Tick behandelt und getrennt von den Block-Ticks in den Chunkdaten gespeichert, wenn das Spiel während der Abarbeitung unterbrochen wird. Flüssigkeiten fordern einen Flüssigkeit-Tick an, wenn sie fließen wollen.
Geschichte
[Bearbeiten | Quelltext bearbeiten]| Versionen der Java Edition |
|---|