1
| speed = (forwardSpeed * GameLoop.delta) / 1000f; |
if you want the speed to be constant, than you shouldn't be multiplying it's value like that. Regardless of how much time goes by, the speed shouldn't change in your case. The position does. Which brings me to my next point, that speed*time = distance, not speed again. so if you replace the speed there with your position variable like so,
1
| position += (forwardSpeed * GameLoop.delta) / 1000f; |
you would get your proper position even if your delta fluctuates from lag.