Game Feel Library
← До каталогу
ІнпутСередній

Input Buffering

Запам'ятовування трохи раннього натискання і виконання його, щойно дія стане можливою.

inputforgivenesscombatresponsiveness

Приклади

Записано з інтерактивного демо нижче на цій сторінці.

Огляд

Буферизація інпуту зберігає натискання, що прийшло, коли дія ще неможлива — посеред анімації атаки, перед самим приземленням, під час ухилення, — і автоматично виконує його в мить, коли дія стає легальною, замість викидати.

Це працює, бо вмілі гравці тиснуть заздалегідь навмисно: вони ставлять у чергу наступний рух, а не промахуються таймінгом. Викидати ці натискання — карати саме тих, хто намагається грати плавно, а «я натиснув і нічого не сталося» — найруйнівніша фраза в game feel.

Разом із coyote time це ядро пробачливого інпуту — файтинги буферизують інпути з 90-х (без цього складати комбо в ланцюжки було б майже неможливо), і та сама ідея робить стрибок-на-приземленні та черги атак миттєвими в будь-якому жанрі.

Інтерактивне демо

одне натискання посеред замаху для обох бійців — запам'ятає його лише одинбез буфераз буфером
·
·
Вікно буфера150ms
Момент натискання400ms

Де застосовується

Ланцюжки комбо у файтингахСтрибок, натиснутий перед самим приземленнямАтака, поставлена в чергу під час замахуУхиляння під час анімаційного локу

Найкращі практики

Варто

  • ✓Буферизуйте останнє натискання кожної дії з таймстемпом і перевіряйте «натиснуто протягом останніх N мс», коли дія стає доступною.
  • ✓Тримайте окреме вікно для кожної дії: буфер стрибка 100–200 мс чудовий, буфер ланцюжка атак може бути довшим, бо анімація телеграфує очікування.
  • ✓Очищайте буфер після використання — одне натискання ніколи не має спрацювати двічі.

Не варто

  • ✕Не буферизуйте вічно — натискання, збережене на цілу секунду, спрацьовує саме по собі й відчувається як привид, а не чуйність.
  • ✕Не виконуйте буферизовану дію, якщо контекст змінився (атака, буферизована до отримання удару, не має вилітати вже після оглушення).
  • ✕Не поєднуйте буферизацію зі скасуванням анімацій бездумно — вирішіть, що спрацьовує першим, інакше комбо спрацьовуватимуть двічі.

Поширені помилки

Реалізація

Встав це у свого ШІ-асистента (Cursor, Copilot, Claude), щоб додати ефект у проєкт.

Промт
Додай у мій проєкт ефект "Input Buffering": Запам'ятовування трохи раннього натискання і виконання його, щойно дія стане можливою.

Як це працює: Буферизація інпуту зберігає натискання, що прийшло, коли дія ще неможлива — посеред анімації атаки, перед самим приземленням, під час ухилення, — і автоматично виконує його в мить, коли дія стає легальною, замість викидати.

Рекомендації:
- Буферизуйте останнє натискання кожної дії з таймстемпом і перевіряйте «натиснуто протягом останніх N мс», коли дія стає доступною.
- Тримайте окреме вікно для кожної дії: буфер стрибка 100–200 мс чудовий, буфер ланцюжка атак може бути довшим, бо анімація телеграфує очікування.
- Очищайте буфер після використання — одне натискання ніколи не має спрацювати двічі.

Чого уникати:
- Не буферизуйте вічно — натискання, збережене на цілу секунду, спрацьовує саме по собі й відчувається як привид, а не чуйність.
- Не виконуйте буферизовану дію, якщо контекст змінився (атака, буферизована до отримання удару, не має вилітати вже після оглушення).
- Не поєднуйте буферизацію зі скасуванням анімацій бездумно — вирішіть, що спрацьовує першим, інакше комбо спрацьовуватимуть двічі.

Реалізуй ефект у тому рушії/стеку, який уже використовується в проєкті, і дотримуйся наявного стилю коду. Підключи його там, де це доречно.

Джерела

Пов'язані ефекти

Коментарі

…