update player logic