Перейти к основному содержимому

Throttle и Debounce

Наш плагин предоставляет вам доступ к двум особым условиям: "Не чаще чем раз в Х секунд" и "Отложить на Х секунд".

Throttle and Debounce Showcase
к сведению

Из-за ограничений визуального программирования в Construct 3 - данные условия реализованы через "ложные циклы", поэтому вы можете заметить логотип цикла слева от названия.

Однако, это именно условия, а не циклы.

Если вы предпочитаете использовать JavaScript, то вы можете ознакомиться со статьями: Debounce на примере формы поиска и Throttle на примере изменения страницы при прокрутке.

Throttle, чтобы спрятать медленный код

Иногда бывает, что какая-то часть игры может сильно влиять на общую производительность. Например, обработка физики или искусственного интеллекта.

Из-за сложности подобных вычислений, лучше избегать их использования слишком часто. Для таких случаев обычно используют Timer, чтобы запускать код раз в некоторое, но это не всегда возможно.

Вдруг у нас есть какая-то сложная игровая механика, которая выполняется при нажатии на экран? В таких ситуациях, когда надо ограничить частоту выполнения кода, но вы не можете использовать таймер, вы можете воспользоваться особым условием Throttle.

предупреждение

Не рекомендуется использовать Throttle каждый тик, это не повлечёт за собой никаких последствий, но вместо этого лучше использовать Timer.

Throttle and Timer comparison

Debounce, чтобы не стать DDoS'ером

Некоторые методы SDK Яндекс.Игр имеют ограничение на количество запросов в определённое время. Если вы будете пренебрегать этими ограничениями, то ваша игра может не пройти модерацию.

Например, если вы слишком часто обновляете счёт в таблице лидеров, то вам стоит использовать особое условие Debounce.

Однако, его можно спутать с предыдущим условием Throttle, ведь мы его тоже использовали, чтобы спрятать код, который не должен вызываться слишком часто, так в чём же разница?

Основное их различие в том, что Throttle ограничивает частоту вызова, а Debounce откладывает вызов функции на определённое время, а это именно то, что нам нужно, ведь нам, в случае с отправкой счёта в таблицу, не обязательно выполнять функцию в слишком часто, нам лишь нужно не превышать ограничение.

Визуализация разницы между Throttle и Debounce: