обычно делают так :
Function povorot()
zs#=MouseZSpeed ()
If MouseDown(3)=True Then zoom#=1
If ZS=-1 Then zoom#=zoom#+0.1
If ZS=1 Then zoom#=zoom#-0.1
If zoom#<0.5 Then zoom#=0.5
If zoom#>1.5 Then zoom#=1.5
CameraZoom cam,zoom#
If MouseDown(2) Then; âðàùåíèå èãðîâîãî ïîëÿ
xs=MouseXSpeed()
rot_y=0
If xs<0 Then rot_y=rot_y+(2-xs/30)
If xs>0 Then rot_y=rot_y-(2+xs/30)
If xs<>0 Then
TurnEntity cam_pivot,0,rot_y,0
End If
End If
MoveMouse 400,300
fps()
UpdateWorld
RenderWorld
shinfo()
Flip 0
End Function
400,300 - ето расширение екрана поделить на два .. просто мне влом было писать graphicswidth()/2 и тд
flip 0 рисует кадр без вертикальной синхронизации
тоесть есть писать flip до количество кадров в секунду ограничится частотой обновления екрана (у меня 100 герц к примеру)