Abstracted player input