refactor PlayerServer - separate playback logic from client commands