Не совсем не пойму, ну возможно необходимо уменьшить шаг приращения attemp что даст более плавные и долгие значения.
А если вам нужно чтобы сначала все быстро шло, а конце более плавно. То в начале делаете шаг большим, а чем ближе к конце тем шаг меньше. Таким образом вначале быстро пойдет набор, а в дальнешем перерастет в более медленный и плавный, в зависимости от того насколько сильно поменяете шаг приращения.
Можно шаг приращение каждый умножать на такую херню
(1 - last_delay/max_delay)
last_delay это предыдущая задержка, первый шагом её можно сделать равно нулю
Но всеравно в таком случае чем ближе к концу тем оно сильнее стремится к бесконечности и крч есть вариант что оно никогда не закончится поэтому нужно немного доработать например так
(0.2 + (1 - last_delay/max_delay) * 0.8)
Как это применять? Шаг приращения вашего attemp умножайте на эту хрень
Например у вас step = 0.5
Значит каждую итерация
step = 0.5 * (0.2 + (1 - last_delay/max_delay) * 0.8)
Крч я не матетематик, думайте пробуйте