derived player3d and player2d. see comment

will probably need to handle the abstraction better in future.