Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос Valorant Python ColorBot — Как пофиксить тряску (Rubberband Aim)?

Sloppy
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Фев 2026
Сообщения
538
Реакции
14
Здарова, кодеры и те, кто еще пытается переиграть Vanguard на Python. Столкнулся с классической проблемой при написании своего колорбота: когда пытаюсь накрутить скорость наводки, аим начинает вести себя как бешеная собака — постоянные перелеты, дерганья туда-сюда (тот самый Rubberband Aim).

Суть в том, что при низком смуче и высокой скорости захвата лок становится слишком агрессивным. Если таргет смещается хоть немного, аим пролетает мимо, пытается вернуться и получается бесконечный цикл осцилляции.

Сам кусок логики, на котором это все крутится:

Код:
Expand Collapse Copy
def smooth_movement(target_dx, target_dy):
    """
    Экспоненциальное сглаживание с джиттером для беспалевности.
    MAX_DELTA ограничивает движение за один кадр.
    """
    global smoothed_dx, smoothed_dy
    jitter_x = random.uniform(-0.1, 0.1)
    jitter_y = random.uniform(-0.1, 0.1)
        
    if SMOOTHING_ALPHA == 0:
        final_dx = target_dx + jitter_x
        final_dy = target_dy + jitter_y
        delta = math.hypot(final_dx, final_dy)
        if delta > MAX_DELTA:
            scale = MAX_DELTA / delta
            return int(final_dx * scale), int(final_dy * scale)
        return int(final_dx), int(final_dy)

    current_alpha = SMOOTHING_ALPHA * random.uniform(0.9, 1.1)
    smoothed_dx = current_alpha * (target_dx + jitter_x) + (1 - current_alpha) * smoothed_dx
    smoothed_dy = current_alpha * (target_dy + jitter_y) + (1 - current_alpha) * smoothed_dy

    if abs(smoothed_dx) < DEADZONE:
         smoothed_dx = 0
    if abs(smoothed_dy) < DEADZONE:
         smoothed_dy = 0
             
    delta = math.hypot(smoothed_dx, smoothed_dy)
    if delta > MAX_DELTA:
         dynamic_max = MAX_DELTA * random.uniform(0.95, 1.05)
         scale = dynamic_max / delta
         smoothed_dx *= scale
         smoothed_dy *= scale
             
    return int(smoothed_dx), int(smoothed_dy)

Какие есть мысли по фиксу:
  1. Поиграться с DEADZONE. Если она слишком маленькая, аим будет пытаться корректировать микро-отклонения, что и вызывает дрожь.
  2. Динамический ALPHA. Смысл в том, чтобы замедлять наводку по мере приближения к центру хитбокса (FOV-based smoothing).
  3. Ограничение ускорения. Vanguard палит неестественные рывки мыши, так что просто зарезать MAX_DELTA недостаточно, нужно более плавное нарастание.
  4. Проверить саму логику сглаживания. Сейчас это по сути простая паста экспоненциального фильтра, которая плохо дружит с резкими перемещениями цели.

Кто уже собаку съел на внутренних колорботах под Валик, подскажите — как вы боретесь с перелетами на высоких скоростях? Использовал кто-нибудь PID-регуляторы или в этом сегменте это оверкилл и хватит обычного lerp?

Жду дельных советов от тех, кто реально сидел в реверсе и дебаге подобных вещей.
 
Назад
Сверху Снизу