Вот как надо писать игровой код. Учитывать множество факторов и делать сложные алгоритмы, которые делают геймплей понятным и удобным прежде всего для игрока. Чтобы, если он нажал на нужные кнопки, он получил желаемое действие, даже если при этом он чуть-чуть не успел попасть в нужный фрейм из-за инпут лага. Такой дотошный подход с кучей проверок хоть и выглядит костылем с точки зрения программиста, но в то же время это является важной чертой геймдизайна, продумав которую, и получают приятный отзывчивый геймплей.
Большинство игр делаются с такими механиками, это абсолютная норма уже (исключение это лютые инди, которые просто в силу опыта не знают о таких вещах). Почти в каждой игре есть и правило койота(персонаж может прыгнуть, хоть по идее уже должен свалиться с платформы) и возможность сделать действие, хотя формально ещё не закончилось предыдущее(мгновенная атака из любого состояния), и враги любят оставлять 1 хп, или не атакуют за экраном, смиренно ожидая.
Вот как надо писать игровой код. Учитывать множество факторов и делать сложные алгоритмы, которые делают геймплей понятным и удобным прежде всего для игрока. Чтобы, если он нажал на нужные кнопки, он получил желаемое действие, даже если при этом он чуть-чуть не успел попасть в нужный фрейм из-за инпут лага. Такой дотошный подход с кучей проверок хоть и выглядит костылем с точки зрения программиста, но в то же время это является важной чертой геймдизайна, продумав которую, и получают приятный отзывчивый геймплей.
Большинство игр делаются с такими механиками, это абсолютная норма уже (исключение это лютые инди, которые просто в силу опыта не знают о таких вещах). Почти в каждой игре есть и правило койота(персонаж может прыгнуть, хоть по идее уже должен свалиться с платформы) и возможность сделать действие, хотя формально ещё не закончилось предыдущее(мгновенная атака из любого состояния), и враги любят оставлять 1 хп, или не атакуют за экраном, смиренно ожидая.