W pełni się zgadzam.
Ale niestety nie o to Ci chodziło. GameMakerowa zmienna friction oznacza właśnie tarcie, a tak na prawdę to opór jaki jest przeciwstawiany pędowi.
Są jeszcze ruchy frykcyjne o innym znaczeniu ale nie będę ich przytaczał.
I chyba cały twój problem jest w tym że nie widzisz że jest to tarcie i próbujesz wykorzystywać to w jakiś inny sposób. :)
Jest to wbudowana funkcja która zmniejsza wartość innej wbudowanej zmiennej speed o swoją wartość dążąc w kierunku 0. Coś takiego:
GML
speed=max(0,speed-friction*sign(speed))