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

Input Buffering

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

inputforgivenesscombatresponsiveness

Приклади

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

Огляд

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

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

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

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

PRESS LANDS MID-SWING
Вікно буфера150ms
Момент натискання400ms

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

ФайтингиПлатформерЕкшнБій

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

Варто

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

Не варто

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

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

Реалізація

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

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

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

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

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

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

Джерела

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

Коментарі