Jump Buffering
Jump Buffering merkt sich einen Sprungdruck für einen Moment, damit ein Druck knapp vor der Landung noch zum Sprung wird, sobald die Figur aufkommt. Starte bei etwa 0,12 Sekunden. Starte erst den Sprung und prüfe dann, ob der Knopf noch gedrückt ist, sonst kann ein kurzer gemerkter Druck einen vollen Sprung ergeben.

Das sagst du deiner KI
Kopiere es in Claude, Cursor oder ChatGPT. Gute Werte und die typischen Fehler stehen schon drin.
Baue „Jump Buffering“ in mein Spiel ein.
Das soll es bewirken: Spieler drücken oft kurz vor der Landung auf Sprung. Buffering merkt sich diesen Druck, sodass die Figur springt, sobald sie kann, und schnelle Bewegung weiterfließt, statt am Boden zu stocken.
Baue es genau nach diesem Automaten. Prüfe zuerst, ob er zu meinem Spiel passt, und bau ihn dann so:
```mermaid
stateDiagram-v2
[*] --> ground
ground: Am Boden
rising: Steigt
grace: Schonfrist
kept: Druck gemerkt
falling: Fällt
ground --> rising: Druck
ground --> grace: läuft über die Kante
grace --> rising: Druck noch rechtzeitig
grace --> falling: Schonfrist läuft ab
grace --> ground: landet
rising --> falling: höchster Punkt
rising --> kept: oben, Druck noch gemerkt
falling --> kept: Druck in der Luft
falling --> ground: landet
kept --> rising: landet, Sprung startet
kept --> falling: gemerkter Druck läuft ab
kept --> ground: läuft ab bei der Landung
```
Nimm diese Startwerte:
- bufferTime: 0.12 s
- coyoteTime: 0.09 s
- jumpSpeed: 12 units/s
- cutSpeed: 4 units/s
- gravity: 32 units/s²
- maxFallSpeed: 20 units/s
Achte auf diese typischen Fehler:
- Ein kurzer Druck ergibt einen vollen Sprung: Sag deiner KI: Prüfe nach dem Start des Sprungs in jedem Moment der Steigphase, ob der Knopf noch gedrückt ist, und kürze den Sprung, wenn nicht. Die Prüfung nur nach hinten zu verschieben reicht nicht: Das fängt ein Antippen genau beim Absprung ab, aber kein Loslassen in der Luft vor der Landung. Unsere Tests zeigen, dass ein gehaltener Sprung mit dieser Korrektur die volle Höhe behält. Soll jeder gemerkte Sprung die volle Höhe haben, mach das zu einer Entscheidung und nicht zu einem Zufall der Reihenfolge.
- Der Druck bleibt zu lange gültig: Sag deiner KI: Halte den Puffer kurz, und leere ihn, sobald etwas anderes die Kontrolle über die Figur übernimmt.
- Puffer und Coyote Time addieren sich: Sag deiner KI: Leere beide Timer genau in dem Moment, in dem ein Sprung startet.
- Rundung macht die Zeit etwas länger: Sag deiner KI: Werte einen winzigen Zeitrest als null, oder zähle ganze Spielschritte bei fester Schrittweite.
- Ein gemerkter Druck direkt an der Kante: Sag deiner KI: Fülle die Coyote Time in dem Schritt auf, in dem die Figur landet, damit ein gemerkter Druck noch springt.
Ändere nichts anderes im Spiel. Behaupte nichts, ohne es zu belegen: Modelliere, was dafür nötig ist, und zeig mir, worauf deine Lösung beruht und woran ich sehe, dass sie klappt. Wenn du etwas nicht zeigen kannst, sag, dass du es nicht weißt. Sag mir danach in einfachen Worten, wie ich es ausprobiere.Oder spar dir das und schließ den MCP an: Dann findet deine KI das alles von selbst.MCP anschließen
Was es bewirkt
Spieler drücken oft kurz vor der Landung auf Sprung. Buffering merkt sich diesen Druck, sodass die Figur springt, sobald sie kann, und schnelle Bewegung weiterfließt, statt am Boden zu stocken.
So läuft es ab, als Diagramm
Alles, was es sein kann, und was es weiterbewegt. Genau danach baut deine KI.
So läuft es ab, als Diagramm
- Am Boden → Steigt: Druck
- Am Boden → Schonfrist: läuft über die Kante
- Schonfrist → Steigt: Druck noch rechtzeitig
- Schonfrist → Fällt: Schonfrist läuft ab
- Schonfrist → Am Boden: landet
- Steigt → Fällt: höchster Punkt
- Steigt → Druck gemerkt: oben, Druck noch gemerkt
- Fällt → Druck gemerkt: Druck in der Luft
- Fällt → Am Boden: landet
- Druck gemerkt → Steigt: landet, Sprung startet
- Druck gemerkt → Fällt: gemerkter Druck läuft ab
- Druck gemerkt → Am Boden: läuft ab bei der Landung
Gute Startwerte
| Wert | Starte mit | Was es ändert |
|---|---|---|
| bufferTime | 0.12 s | Wie lange ein Druck gemerkt wird. Länger ist nachsichtiger, aber die Figur springt dann vielleicht, obwohl der Spieler es sich anders überlegt hat. Null schaltet es ab. |
| coyoteTime | 0.09 s | Wie lange nach dem Verlassen des Bodens ein Sprung noch klappt. |
| jumpSpeed | 12 units/s | Wie kräftig sich die Figur abstößt. Zusammen mit der Schwerkraft bestimmt das die Höhe eines vollen Sprungs. |
| cutSpeed | 4 units/s | Wie schnell ein Sprung noch steigen darf, wenn der Knopf losgelassen ist. Niedriger macht aus einem kurzen Druck einen kleineren Hüpfer. |
| gravity | 32 units/s² | Wie schnell die Figur fällt. Das bestimmt, wie weit über dem Boden ein Druck noch zählt. |
| maxFallSpeed | 20 units/s | Die höchste Geschwindigkeit, mit der die Figur fallen kann. |
Was meistens schiefgeht
Ein kurzer Druck ergibt einen vollen Sprung
Normalerweise ergibt ein kurzer Druck einen kurzen Hüpfer. Mit Buffering kann ein kurzer Druck einen vollen Sprung ergeben. Das passiert, wenn der Knopf vor dem Absprung oder genau beim Absprung losgelassen wurde: Das Spiel achtet nur auf das Loslassen, und das ist schon vorbei. Wird erst nach dem Absprung losgelassen, wird der Sprung weiterhin gekürzt. Es trifft also nicht jeden gemerkten Sprung. Das zeigen unsere Tests.
Lösung: Sag deiner KI: Prüfe nach dem Start des Sprungs in jedem Moment der Steigphase, ob der Knopf noch gedrückt ist, und kürze den Sprung, wenn nicht. Die Prüfung nur nach hinten zu verschieben reicht nicht: Das fängt ein Antippen genau beim Absprung ab, aber kein Loslassen in der Luft vor der Landung. Unsere Tests zeigen, dass ein gehaltener Sprung mit dieser Korrektur die volle Höhe behält. Soll jeder gemerkte Sprung die volle Höhe haben, mach das zu einer Entscheidung und nicht zu einem Zufall der Reihenfolge.
Der Druck bleibt zu lange gültig
Mit einem langen Puffer springt die Figur bei der Landung nach einem hohen Fall, obwohl der Spieler diesen Sprung längst aufgegeben hat.
Lösung: Sag deiner KI: Halte den Puffer kurz, und leere ihn, sobald etwas anderes die Kontrolle über die Figur übernimmt.
Puffer und Coyote Time addieren sich
Leert ein Sprung nur einen der beiden Timer, kann der andere einen zweiten Sprung auslösen.
Lösung: Sag deiner KI: Leere beide Timer genau in dem Moment, in dem ein Sprung startet.
Rundung macht die Zeit etwas länger
Computer addieren kleine Zeitstücke nicht ganz genau, daher kann ein Timer mit einem winzigen Rest enden.
Lösung: Sag deiner KI: Werte einen winzigen Zeitrest als null, oder zähle ganze Spielschritte bei fester Schrittweite.
Ein gemerkter Druck direkt an der Kante
Ein Druck wartet auf die Landung, die Figur landet genau an der Kante einer Plattform und läuft im nächsten Moment herunter. Füllt sich die Coyote Time erst einen Schritt nach der Landung, gibt es weder Boden noch Zeit, und der Druck geht verloren.
Lösung: Sag deiner KI: Fülle die Coyote Time in dem Schritt auf, in dem die Figur landet, damit ein gemerkter Druck noch springt.
So prüfst du, ob es klappt
- Deine Figur fällt, knapp über dem Boden. Drück kurz vor der Landung auf Sprung: Die Figur springt direkt nach der Landung.
- Deine Figur fällt aus großer Höhe. Drück früh auf Sprung, sodass der gemerkte Druck vor der Landung abläuft: Die Figur landet und bleibt am Boden.
- Deine Figur ist in der Luft. Drück kurz vor der Landung auf Sprung und halte den Knopf bis zum höchsten Punkt: Der Sprung erreicht die volle Höhe.
- Deine Figur ist in der Luft. Drück kurz vor der Landung auf Sprung und lass sofort wieder los: Der Sprung bleibt ein kurzer Hüpfer.
- Deine Figur steht auf dem Boden. Tippe so kurz wie möglich auf Sprung: Du bekommst einen kurzen Hüpfer. Ohne die Korrektur wäre es ein voller Sprung.
- Deine Figur ist in der Luft. Drück kurz vor der Landung auf Sprung und halte den Knopf: Die Figur springt genau einmal.
- Deine Figur ist von einer Kante gelaufen und in der Coyote Time gesprungen. Drück noch einmal auf Sprung: Der zweite Druck bewirkt nichts.
- Buffering ist auf null gesetzt. Drück in der Luft knapp über dem Boden auf Sprung: Der Druck wird vergessen, und die Figur bleibt nach der Landung am Boden.
- Du drückst auf Sprung, kurz bevor deine Figur genau an der Kante einer Plattform landet. Sie berührt den Boden und läuft im nächsten Moment herunter: Der Sprung passiert trotzdem.
Passt gut zu
- Variable Sprunghöhe: Andersherum bekommt ein kurzer Druck die volle Höhe. Starte erst den Sprung, und achte dann die ganze Steigphase lang darauf, ob der Knopf noch gedrückt ist.
- Coyote Time: Zusammen dürfen sie nie einen zweiten Sprung ergeben. Triff eine einzige Sprungentscheidung, die beide Timer ansieht, und leere beide, wenn der Sprung startet.
Beißt sich mit Doppelsprung: Ein Druck in der Luft kann einen Luftsprung jetzt oder einen gemerkten Sprung bei der Landung bedeuten. Verbrauche zuerst den Luftsprung, und merke dir den Druck erst, wenn keiner mehr übrig ist. Unser eigener Code hier hat keine Luftsprünge, diese Reihenfolge ist hier also nicht getestet.
Häufige Fragen
was ist jump buffering
Es merkt sich einen Sprungdruck für einen Moment, damit ein Druck knapp vor der Landung zum Sprung wird, sobald die Figur den Boden berührt, statt verloren zu gehen.
wie lang sollte jump buffering sein
Starte bei etwa 0,12 Sekunden, das sind ungefähr sieben Bilder bei 60 Bildern pro Sekunde. Deutlich länger, und die Figur springt, nachdem der Spieler es sich anders überlegt hat.
warum springt meine figur mit jump buffering immer voll hoch
Vermutlich achtet das Spiel nur auf das Loslassen, und das war schon, bevor der Sprung gestartet ist. Sag deiner KI: Prüfe nach dem Start des Sprungs in jedem Moment der Steigphase, ob der Knopf noch gedrückt ist.
wie arbeiten jump buffering und coyote time zusammen
Nutze eine einzige Sprungentscheidung, die beide Timer ansieht, und leere beide, wenn der Sprung startet. Dann ergibt ein Druck einen Sprung, egal wo in den beiden Zeitspannen er liegt.
was sage ich meiner ki um jump buffering einzubauen
Kopier das: Baue Jump Buffering ein: Merke dir einen Sprungdruck für 0,12 Sekunden und springe, sobald die Figur am Boden ist. Prüfe nach dem Start des Sprungs in jedem Moment der Steigphase, ob der Knopf noch gedrückt ist, und kürze den Sprung, wenn nicht.
Woher es kommt
Frühestes Beispiel, das wir finden konnten: Braid (Number None), as described in Fasterholdt, Pichlmair and Holmgard (2016) (2009). Die Arbeit berichtet, dass Braid einen Sprungdruck, der in einigem Abstand über dem Boden erfolgt, speichert und den Sprung bei der Landung ausführt, und zeigt das in einer Abbildung. Das Jahr ist das, das die Arbeit angibt; die Übersichtsarbeit von 2020 nennt für Braid 2008. Die Dokumentation stammt von 2016. Die Arbeit erklärt nicht, woher sie das Detail zu Braid hat, denn Braid gehörte nicht zu den formal vermessenen Spielen, aber nichts darin deutet auf Speicherauslese hin.
- 2009 Braid (Number None), as described in Fasterholdt, Pichlmair and Holmgard (2016): Die Arbeit berichtet, dass Braid einen Sprungdruck, der in einigem Abstand über dem Boden erfolgt, speichert und den Sprung bei der Landung ausführt, und zeigt das in einer Abbildung. Das Jahr ist das, das die Arbeit angibt; die Übersichtsarbeit von 2020 nennt für Braid 2008. Die Dokumentation stammt von 2016. Die Arbeit erklärt nicht, woher sie das Detail zu Braid hat, denn Braid gehörte nicht zu den formal vermessenen Spielen, aber nichts darin deutet auf Speicherauslese hin. [You Say Jump, I Say How High? Operationalising the Game Feel of Jumping (Fasterholdt, Pichlmair, Holmgard, DiGRA/FDG 2016)]
- 2013 Kyle Pulver, 'Jump Input Buffering' (blog post): Frühester gefundener datierter Text zur Technik und das früheste hier gefundene Auftreten des Namens Buffering für Sprünge. Der Beitrag existierte spätestens am 4. April 2013, als eine Mailingliste für Spieleentwicklung von Studierenden ihn empfahl und die Idee zusammenfasste. Das Original ließ sich nicht öffnen. Die Mailingliste ist eine schwache Quelle und dient nur dazu, den Beitrag zu datieren und Titel und Kernaussage zu liefern. [[Sgdc] Platformer Physics: Jump Input Buffering (Kenny Goff, Stevens SGDC mailing list, 2013-04-04)][GameMaker Platformer Jumping Tips (Lisa Brown, Game Developer, 2017-10-05)]
- 2014 Yoann Pignole, 'Platformer controls: how to avoid limpness and rigidity feelings': Ein Blogbeitrag eines Entwicklers erklärt, dass Spieler oft kurz vor dem Bodenkontakt auf Sprung drücken, und schlägt vor, den Druck anzunehmen, wenn die Figur nah am Boden ist. Er nennt das eine Toleranz und verwendet das Wort Buffering nicht. [Platformer controls: how to avoid limpness and rigidity feelings (Yoann Pignole, Game Developer, 2014-01-03)]
- 2016 Fasterholdt, Pichlmair and Holmgard, 'You Say Jump, I Say How High?': Eine begutachtete Arbeit zum Sprunggefühl behandelt das Verhalten als benanntes Umsetzungsdetail und verwendet den Begriff jump cache. [You Say Jump, I Say How High? Operationalising the Game Feel of Jumping (Fasterholdt, Pichlmair, Holmgard, DiGRA/FDG 2016)]
- 2017 Lisa Brown, 'GameMaker Platformer Jumping Tips': Ein Tutorial auf Game Developer stellt Jump Input Buffering als kleine Standardkorrektur vor, empfiehlt Pulvers Artikel und sagt, dass es vielen studentischen Platformern fehlt. [GameMaker Platformer Jumping Tips (Lisa Brown, Game Developer, 2017-10-05)]
- 2020 Celeste; Maddy Thorson's game-feel thread and essay 'Celeste & Forgiveness': Thorson führt Jump Buffering im Thread vom März 2020 und im späteren Essay als Technik von Celeste auf und sagt, diese Techniken seien nicht für das Spiel erfunden worden. Die Übersichtsarbeit von Pichlmair und Johansen vom November 2020 ordnet es unter button caching als gängige Hilfsfunktion für Spieler ein. [Celeste & Forgiveness (Maddy Thorson)][Developer of super-difficult & high-speed masterpiece 2D action game 'Celeste' explains 'points about action' (Gigazine, 2020-03-17)][Designing Game Feel. A Survey (Pichlmair and Johansen, arXiv 2011.09201, 2020-11-18)]
Was geprüft wurde
- 18 Tests bestehen auf dem Referenzcode.
- Das Zustandsdiagramm wurde gegen den Code geprüft, mit den Standardwerten und mit jedem niedrigsten und höchsten Wert der Liste.
- Der Godot-Port besteht dieselben Tests auf der echten Engine.
Deine KI bekommt den Code
Fertiger Beispielcode kommt über die Spielerando-Verbindung, damit deine KI ihn sofort nutzen kann. So verbindest du es