base all your movement and angle changes on real values like meters per second.
you have to take system time at the begining of your loop and then at the end of loop. Then compare these two like time#=time_end#-time_begining# and multylpli all your walues by that:
move object x,5*time# where 5 would be 5 m/s
like this your object would move the same speed on any computer.
And dont forget that you get system time in miliseconds so divide it by 1000 to get seconds.
Another thing is that it seems like if DB cant recognize sistem time change smaler than 10 miliseconds so if your loop takes less than 10 you wil get time diference=0
I solved it by taking time only at the end of each 10 or 20 loops and then divide result by 10 or 20
here is example from my code:
do
tk=tk+1
if tk=1 then timer#=timer()
move object x,20*hh#
if tk=10
tk=0
hh#=timer() : hh#=(hh#-timer#)/10 : hh#=hh#/1000
endif
sync
loop
like this of course for first 10 loops hh#=0 so object would not move, but this is normaly not problem because 10 loop should take so less time that player do not notice it.
But if thats problem just set hh# before -do- comand to some general walue you think 10 loops can take at moderate computer.