Ну, если у вас чисто 2D движок, то, например, как-то так:
Базовый класс для 2D игровых сущностей:
class GameObject2D : public GameObject {
public:
const Sprite& getSprite() const { return sprite; };
private:
Sprite sprite;
}
Игрок:
class Player : public GameObject2D {
// его особенные методы
}
Renderer:
class Renderer {
public:
void drawScene(const Scene& scene)
{
auto& visibleObjects = scene.getVisibleObjects();
for(auto& gameObject : visibleObjects) {
drawSprite(gameObject->getPosition(), gameObject->getSprite());
}
}
}