আমি গেম ডেভলপিং এবং প্রোগ্রামিং উভয়ই একজন শিক্ষানবিস।
আমি গেম ইঞ্জিন তৈরিতে কিছু নীতি শিখার চেষ্টা করছি।
আমি একটি সহজ গেম তৈরি করতে চাই, আমি সেই স্থানে রয়েছি যেখানে আমি গেম ইঞ্জিনটি বাস্তবায়নের চেষ্টা করছি।
সুতরাং আমি ভেবেছিলাম আমার গেম ইঞ্জিনের এই বিষয়গুলি নিয়ন্ত্রণ করা উচিত:
- 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(){
hPlayer = new Player;
objects.push_back(hPlayer);
}
আমি যে পয়েন্টারটি ব্যবহার করছি তা হ'ল কারণ আমাকে fire()
প্লেয়ার অবজেক্টের কাছে অনন্য call
সুতরাং আমার প্রশ্ন: এটি একটি ভাল ধারণা? আমার উত্তরাধিকার ব্যবহার কি এখানে ভুল?