Hem oyun geliştirme hem de programlama konusunda yeni başlıyorum.
Bir oyun motorunun inşasında bazı prensipleri öğrenmeye çalışıyorum.
Basit bir oyun yaratmak istiyorum, oyun motorunu uygulamaya çalıştığım noktadayım.
Bu yüzden oyun motorumun bunları kontrol etmesi gerektiğini düşündüm:
- Moving the objects in the scene
- Checking the collisions
- Adjusting movements based on collisions
- Passing the polygons to the rendering engine
Nesnelerimi şöyle tasarladım:
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
}
ve oyunumda 4 farklı nesne var: uçak, engel, oyuncu, mermi ve bunları şöyle tasarladım:
class Player : public GlObject{
private:
std::string name;
public:
Player();
Bullet fire() const; //this method is unique to the class player
void generate_mesh();
}
Şimdi oyun motorunda, örneğin çarpışma, nesne taşıma vb. İçin kontrol edebileceğim genel bir nesne listesine sahip olmak istiyorum, ancak oyun motorunun oynatıcıyı kontrol etmek için kullanıcı komutlarını almasını istiyorum ...
Bu iyi bir fikir mi?
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 yapıcısı şu şekilde olacaktır:
GameEngine::GameEngine(){
hPlayer = new Player;
objects.push_back(hPlayer);
}
Bir işaretçi kullanıyorum fire()
, Player nesnesine özgü olanı çağırmam gerektiğidir .
Benim sorum şu: bu iyi bir fikir mi? Burada miras kullanımım yanlış mı?