저는 게임 개발과 프로그래밍 모두에서 초보자입니다.
게임 엔진을 구축 할 때 몇 가지 원칙을 배우려고합니다.
간단한 게임을 만들고 싶습니다. 게임 엔진을 구현하려는 시점에 있습니다.
그래서 나는 내 게임 엔진이 이것을 제어해야한다고 생각했다.
- Moving the objects in the scene
- Checking the collisions
- Adjusting movements based on collisions
- Passing the polygons to the rendering engine
나는 다음과 같이 내 물건을 디자인했다.
class GlObject{
private:
idEnum ObjId;
//other identifiers
public:
void move_obj(); //the movements are the same for all the objects (nextpos = pos + vel)
void rotate_obj(); //rotations are the same for every objects too
virtual Polygon generate_mesh() = 0; // the polygons are different
}
내 게임에는 비행기, 장애물, 플레이어, 총알의 4 가지 다른 개체가 있으며 다음과 같이 디자인했습니다.
class Player : public GlObject{
private:
std::string name;
public:
Player();
Bullet fire() const; //this method is unique to the class player
void generate_mesh();
}
이제 게임 엔진에서 충돌, 객체 이동 등을 확인할 수있는 일반 객체 목록을 원하지만 게임 엔진이 사용자 명령을 사용하여 플레이어를 제어하기를 원합니다 ...
이것이 좋은 생각입니까?
class GameEngine{
private:
std::vector<GlObject*> objects; //an array containg all the object present
Player* hPlayer; //hPlayer is to be read as human player, and is a pointer to hold the reference to an object inside the array
public:
GameEngine();
//other stuff
}
GameEngine 생성자는 다음과 같습니다 :
GameEngine::GameEngine(){
hPlayer = new Player;
objects.push_back(hPlayer);
}
포인터를 사용하고 있다는 사실 fire()
은 Player 객체에 고유 한 것을 호출해야하기 때문 입니다.
그래서 제 질문은 : 좋은 생각입니까? 상속 사용이 여기에서 잘못 되었습니까?