Also consider InPlace changes your applied vector, in this case player.forward. I am not sure if you intend to do so. It would add up like acceleration.
I expanded your playground by engine.getDeltaTime, which is the time between now and last rendered frame, correct me if I’m wrong here, and smaller velocity vector:
I see you’ve just scaled down the forward speed that’s why it has stopped from shaking. But what if we need to deal with faster speed? Like this one: https://playground.babylonjs.com/#6EU8HW#5