Saya seorang pemula baik dalam pengembangan game dan pemrograman.
Saya mencoba mempelajari beberapa prinsip dalam membangun mesin game.
Saya ingin membuat game sederhana, saya pada titik di mana saya mencoba menerapkan mesin game.
Jadi saya pikir mesin permainan saya harus mengontrol hal-hal ini:
- Moving the objects in the scene
- Checking the collisions
- Adjusting movements based on collisions
- Passing the polygons to the rendering engine
Saya merancang objek saya seperti ini:
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
}
dan saya memiliki 4 objek berbeda dalam permainan saya: pesawat, penghalang, pemain, peluru dan saya mendesainnya seperti ini:
class Player : public GlObject{
private:
std::string name;
public:
Player();
Bullet fire() const; //this method is unique to the class player
void generate_mesh();
}
Sekarang di mesin permainan saya ingin memiliki daftar objek umum di mana saya dapat memeriksa misalnya untuk tabrakan, memindahkan objek, dan sebagainya, tetapi saya ingin juga bahwa mesin permainan akan mengambil perintah pengguna untuk mengontrol pemain ...
Apakah ini Ide yang bagus?
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
}
konstruktor GameEngine akan seperti ini:
GameEngine::GameEngine(){
hPlayer = new Player;
objects.push_back(hPlayer);
}
Fakta bahwa saya menggunakan pointer adalah karena saya perlu memanggil fire()
yang unik untuk objek Player.
Jadi pertanyaan saya adalah: apakah itu ide yang bagus? Apakah penggunaan warisan saya salah di sini?