The update function should run a single update tick of game time, given an intermediary lerp value since the last update.
The loop function should be responsible purely for continuously running the game loop at a set interval and giving the lerp value to the update function when called.