Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Game Loop: die Spielschleife erklärt

Nach dieser Lektion: Ich kann erklären, was eine Game Loop in jedem Bild tut: erst Update, dann Draw.

Lektion, 55 Min.2 BefehleSpieleentwicklungs-Lab: Spielschleife, Schwerkraft und Kollisionen im Browser

Was ist eine Game Loop?

Eine Game Loop (Spielschleife) ist der Code, der in einem Spiel immer wieder läuft. Er rechnet aus, was sich geändert hat, und zeichnet dann ein neues Bild. Wer sie versteht, versteht, warum sich in jedem Spiel etwas bewegt, auch wenn niemand eine Taste drückt.

Denken Sie an ein Daumenkino. Jede Seite ist ein Bild, und schnelles Blättern erzeugt Bewegung. Ein Spiel blättert etwa sechzigmal pro Sekunde.

Am Ende dieser Lektion

Notiz

Ich kann erklären, was eine Game Loop in jedem Bild tut: erst Update, dann Draw.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Bild (Frame)ein einzelnes Bild des Spiels, das viele Male pro Sekunde gezeichnet wird
Game Loopder Code, der für jedes Bild einmal läuft: erst Update, dann Draw
Updateder Schritt, der rechnet: Positionen, Punkte und Leben ändern sich
Drawder Schritt, der zeichnet: Er malt das Ergebnis des Updates, rechnet aber nichts
Konstanteeine benannte Zahl am Anfang des Codes, die Sie an einer Stelle ändernPLAYER_SPEED = 6
Bildratewie viele Bilder pro Sekunde gezeichnet werden60 Bilder pro Sekunde

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Jedes Bild hat zwei Schritte

Im Update rechnet das Spiel: Es bewegt Figuren, prüft Treffer und zählt Punkte. Im Draw zeichnet es das Ergebnis auf die Leinwand.

Die Reihenfolge zählt. Würde das Spiel zuerst zeichnen, sähen Spielende immer den Stand von vor einem Bild. Danach beginnt das nächste Bild, und alles läuft von vorn.

Eine eigene Game Loop im Browser

Code: web
<canvas id="bild" width="300" height="60"></canvas>

Der Browser ruft die Schleife immer wieder auf

Die Funktion requestAnimationFrame bittet den Browser um einen Aufruf vor dem nächsten Bild. Am Ende der Schleife ruft sich die Funktion so selbst wieder auf. Das ist der ganze Trick.

Der Browser wählt den Takt passend zum Bildschirm. Bei 60 Bildern pro Sekunde bleiben jedem Bild gut 16 Millisekunden für Update und Draw.

Wie viel Zeit hat ein Bild?

Bilder pro SekundeRechnungZeit pro Bild
301000 ms geteilt durch 30etwa 33 ms
601000 ms geteilt durch 60etwa 17 ms
1201000 ms geteilt durch 120etwa 8 ms

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Die Position nach n Bildern

Bewegt sich eine Figur in jedem Bild um denselben Schritt, ist ihre Position leicht zu berechnen: Startwert plus Schritt mal Anzahl der Bilder. Im Spiel kommt eine Grenze dazu, damit die Figur nicht aus der Leinwand läuft.

Die Tabelle zeigt ein Beispiel mit Start 10 und Schritt 6. Dieselbe Rechnung machen Sie gleich in der Aufgabe.

Ein Beispiel: Start 10, Schritt 6

Nach BildRechnungPosition x
110 + 616
216 + 622
322 + 628
428 + 634

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Das Lab liest die Game Loop

Das Lab enthält das kleine Spiel "Catch the stars" in drei Dateien. Sie spielen es im Browser über den Link Preview. Das Skript loop.py liest nur den Code der Datei game.js.

Es gibt englische Wörter aus: die Konstanten, ob requestAnimationFrame vorkommt, und die Namen der Funktionen. Danach zeigt sizes.py, wie groß die drei Dateien sind.

Die Konstanten und Funktionen auflisten

Befehl
docker exec jupyter python3 steps/loop.py

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Was die Ausgabe über das Spiel verrät

Das Skript nennt neun Konstanten, darunter GRAVITY = 0.15, PLAYER_SPEED = 6 und SPAWN_EVERY = 50. Dann folgt uses requestAnimationFrame: True.

Zuletzt kommt die Liste der Funktionen mit update, draw und loop. Die Schleife ruft also erst update, dann draw und dann wieder sich selbst.

Ein häufiger Fehler

Warnung

Viele rechnen im Draw: Sie ändern dort die Position und wundern sich über wirre Ergebnisse. Draw malt nur. Alles, was sich ändert, gehört ins Update.

Die Größe der drei Dateien messen

Befehl
docker exec jupyter python3 steps/sizes.py

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Über dieses Lab und seinen Quellcode: Spieleentwicklungs-Lab: Spielschleife, Schwerkraft und Kollisionen im Browser

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.