Spielerando

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.

Auch genannt: Sprungpuffer, Sprungspeicher, Früher Tastendruck, Sprung vor der Landung.

In einer violetten Pixel-Höhle fällt ein grüner Axolotl im orangen Raumanzug auf eine schwebende Plattform zu, während eine durchscheinende Kopie von ihm schon vom leuchtenden Landepunkt aufsteigt und daneben ein runder Knopf leuchtet.
Gillnaut, ein erfundenes Pixel-Plattformspiel in Alien-Höhlen. Erfundenes Spiel, Bild mit KI erzeugt.

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.

Druckläuft über die KanteDruck noch rechtzeitigSchonfrist läuft ablandethöchster Punktoben, Druck noch gemerktDruck in der Luftlandetlandet, Sprung startetgemerkter Druck läuft abläuft ab bei der LandungAm BodenSteigtSchonfristDruck gemerktFällt
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

WertStarte mitWas es ändert
bufferTime0.12 sWie 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.
coyoteTime0.09 sWie lange nach dem Verlassen des Bodens ein Sprung noch klappt.
jumpSpeed12 units/sWie kräftig sich die Figur abstößt. Zusammen mit der Schwerkraft bestimmt das die Höhe eines vollen Sprungs.
cutSpeed4 units/sWie schnell ein Sprung noch steigen darf, wenn der Knopf losgelassen ist. Niedriger macht aus einem kurzen Druck einen kleineren Hüpfer.
gravity32 units/s²Wie schnell die Figur fällt. Das bestimmt, wie weit über dem Boden ein Druck noch zählt.
maxFallSpeed20 units/sDie 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

Passt gut zu

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.

  1. 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)]
  2. 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)]
  3. 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)]
  4. 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)]
  5. 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)]
  6. 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)]

Die schwächste Quellenlage der vier Bewegungsmechaniken. Zu keinem Spiel vor 2013 wurde eine Aussage von Entwicklern gefunden, und der Punkt zu Braid beruht auf einem Satz und einer Abbildung in einer akademischen Arbeit, die Jahre nach dem Spiel entstand. Verworfene Behauptung, zur Beurteilung durch Prüfende: Dieselbe Arbeit von 2016 sagt, das von ihr untersuchte Mario-Spiel, Super Mario Bros. 3, habe einen jump cache, was den Punkt auf 1988 zurückverlegen würde. Sie wird nicht verwendet, weil die Arbeit angibt, ihre Mario-Daten aus Aldrichs Tabellen zu haben, und diese Tabellen als durch Untersuchung des Spielspeichers entstanden beschreibt. Das fällt unter das Verbot des Projekts für ausgelesene Tabellen. Abweichung in der Zitierung der Übersichtsarbeit: Die Übersichtsarbeit von 2020 führt das Mario-Detail auf eine Referenz zurück, die Super Mario Bros. 2 nennt, während die von ihr zitierte Arbeit Super Mario Bros. 3 nennt. Das Datum von Braid unterscheidet sich je nach Quelle, 2009 in der Arbeit und 2008 in der Übersichtsarbeit; Plattformversionen wurden nicht geprüft. Pulvers Beitrag ist nur indirekt datiert, durch die Nachricht auf der Mailingliste vom 4. April 2013; das echte Veröffentlichungsdatum ist unbekannt, liegt aber nicht später. Pulvers Titel ist vielleicht nicht die früheste Verwendung des Worts für Sprünge: Das Puffern von Eingaben in anderen Genres, etwa in Kampfspielen, wurde hier nicht recherchiert. Saltsmans Canabalt-Artikel von 2010 wurde geprüft und beschreibt nicht, dass ein Druck vor der Landung angenommen wird. Gefundene Begriffe: jump input buffering, jump buffering, jump cache, button caching, tolerance. Thorson verneint die Erfindung, ohne ein früheres Spiel zu nennen.

Spiele nennen wir nur als Verweis. Namen und Marken gehören ihren Inhabern, und nichts hier ist von ihnen unterstützt.

Was geprüft wurde

Das unterscheidet den Blueprint von einem Katalogeintrag: Die Werte auf dieser Seite kommen aus Code, der läuft.

Deine KI bekommt den Code

Fertiger Beispielcode kommt über die Spielerando-Verbindung, damit deine KI ihn sofort nutzen kann. So verbindest du es