Potrzeba Ci 2 zmiennych które będą to kontrolować.
Pierwsza to będzie pozycja wskaźnika na... nazwijmy to równoważni. Sama równoważnia będzie w zakresie <-100;100>, czyli wskaźnik trzeba utrzymać pomiędzy -100 a 100.
Drugą zmienną będzie siła wskaźnika. Jeżeli wskaźnik zbliża się do końca równoważni to nabiera rozpędu, a jeżeli naciśniemy strzałki w drugą stronę to powoli go wyhamowujemy.
GML
t+=1//Zmienna która stale rośnie, odpowiada za czas
_sila+=sin(t/1000)//Co step dodajemy do siły troszkę sinusa żeby było trochę dynamiki
_sila+min(0.9,abs(_wskaźnik/100))*sign(_wskaźnik)
/*
abs() jest po to aby pozbyć się minusa
mnożenie przez sign() jest po to aby przywrócić minus
Minusa pozbywamy się tylko na chwilę aby móc poprawnie wykonać funkcję min() która zapewnia żeby moc spadania nie była większa od 1.9 (po zsumowaniu z minusem) dzięki temu zawsze będzie można się uratować ruchami klawiatury:
*/
if(keyboard_key(vk_left))
{
_sila-=2
}
if(keyboard_key(vk_right))
{
_sila+=2
}
_wskaznik+=_sila//przesunięcie wskaźnika
if(_wskaznik<-100 or _wskaznik>100)
{
//Skucha
}
Przykładu nie sprawdzałem i pisałem z głowy. Wszystko powinno być ok, ale musisz się pobawić liczbami. Ogółem to wprowadziłbym trzecią zmienną która odpowiadałaby za wzrost trudności.