গেম আর্কিটেকচার সম্পর্কে আমার একটি প্রশ্ন ছিল: বিভিন্ন উপাদান একে অপরের সাথে যোগাযোগ করার সর্বোত্তম উপায় কী?
যদি এই প্রশ্নটি ইতিমধ্যে এক মিলিয়নবার জিজ্ঞাসা করা হয়েছে তবে আমি সত্যিই ক্ষমা চাইছি, তবে আমি ঠিক ঠিক কী ধরণের তথ্য খুঁজছি তার সাথে কিছুই পাই না।
আমি স্ক্র্যাচ থেকে গেমটি তৈরির চেষ্টা করছি (সি ++ যদি এটি গুরুত্বপূর্ণ হয়) এবং অনুপ্রেরণার জন্য কিছু মুক্ত উত্স গেম সফটওয়্যার পর্যবেক্ষণ করেছি (সুপার মেরিও ক্রনিকলস, ওপেনটিটিডি এবং অন্যান্য)। আমি লক্ষ্য করেছি যে এই গেম ডিজাইনের অনেকগুলি জায়গা জুড়ে বিশ্বব্যাপী দৃষ্টান্ত এবং / অথবা সিলেটলেট ব্যবহার করে (সারি সরবরাহকারী সারি, সত্তা পরিচালক, ভিডিও পরিচালক এবং আরও কিছু হিসাবে)। আমি বিশ্বব্যাপী দৃষ্টান্তগুলি এবং এককজনকে এড়াতে চেষ্টা করছি এবং এমন একটি ইঞ্জিন তৈরি করতে চাই যা যতটা সম্ভব স্বচ্ছলভাবে মিলিত হয় তবে কার্যকর ডিজাইনে আমার অনভিজ্ঞতার জন্য owণী এমন কিছু বাধা আমি আঘাত করছি। (এই প্রকল্পের প্রেরণার অংশ হ'ল এটি সম্বোধন করা :))
আমি এমন একটি নকশা তৈরি করেছি যেখানে আমার একটি প্রধান GameCore
অবজেক্ট রয়েছে যার অন্যান্য সদস্য রয়েছে যা আমি অন্যান্য প্রকল্পগুলিতে দেখতে পাই বিশ্বব্যাপী দৃষ্টান্তের সাথে সাদৃশ্যপূর্ণ (যেমন, এটিতে একটি ইনপুট ম্যানেজার, একটি ভিডিও পরিচালক, একটি GameStage
উপাদান যা সমস্ত সত্ত্বা এবং গেম প্লে নিয়ন্ত্রণ করে বর্তমানে যে কোনও পর্যায়ে লোড রয়েছে ইত্যাদি)। সমস্যাটি হ'ল যেহেতু সবকিছুতে GameCore
বস্তুটি কেন্দ্রীভূত , তাই বিভিন্ন উপাদানগুলির একে অপরের সাথে যোগাযোগ করার আমার কাছে সহজ উপায় নেই।
সুপার মেরিও ক্রনিকলস, উদাহরণস্বরূপ, যখনই গেমের কোনও উপাদানকে অন্য উপাদানগুলির সাথে যোগাযোগের প্রয়োজন হয় (অর্থাত, শত্রু অবজেক্ট রেন্ডার কাতারে রেন্ডার পর্যায়ে আঁকতে নিজেকে যুক্ত করতে চায়), এটি কেবল সাথে কথা বলে বিশ্বব্যাপী উদাহরণ।
আমার জন্য, আমার গেমের অবজেক্টগুলি প্রাসঙ্গিক তথ্যটি GameCore
বস্তুর কাছে ফেরত দিতে হবে , যাতে GameCore
অবজেক্টটি সেই তথ্যটি সিস্টেমের অন্যান্য উপাদান (গুলি) এর কাছে প্রেরণ করতে পারে যার প্রয়োজন হয় (যেমন: উপরের পরিস্থিতির জন্য, প্রতিটি শত্রু অবজেক্ট) তাদের রেন্ডার তথ্যগুলি সেই GameStage
বস্তুটিতে ফিরিয়ে দেয় , যা এগুলি সমস্ত সংগ্রহ করে তা আবার জমা করে দেবে GameCore
, যার ফলে এটি ভিডিও পরিচালকের কাছে রেন্ডারিংয়ের জন্য প্রেরণ করবে)। এটি দেখতে যেমন সত্যই এক ভয়ঙ্কর নকশার মতো মনে হয় এবং আমি এটির একটি রেজোলিউশন ভাবার চেষ্টা করছিলাম। সম্ভাব্য নকশাগুলির বিষয়ে আমার মতামত:
- গ্লোবাল দৃষ্টান্ত (সুপার মেরিও ক্রনিকলসের নকশা, ওপেনটিটিডি, ইত্যাদি)
- রয়ে
GameCore
একটি ফড়িয়া, যার মাধ্যমে সমস্ত বস্তু যোগাযোগ যেমন বস্তুর অ্যাক্ট (বর্তমান নকশা উপরে বর্ণিত) - অন্যান্য যে সমস্ত উপাদানগুলির সাথে তাদের কথা বলার প্রয়োজন হবে তাদের উপাদানগুলি পয়েন্টার দিন (উদাহরণস্বরূপ, উপরের মেরিও উদাহরণে শত্রু শ্রেণীর সাথে যে ভিডিওর সাথে কথা বলতে হবে তার পয়েন্টার থাকবে)
- গেমটি সাবসিস্টেমগুলিতে ভাঙ্গুন - উদাহরণস্বরূপ, অবজেক্টে ম্যানেজার অবজেক্ট রয়েছে যা
GameCore
তাদের সাবসিস্টেমের মধ্যে অবজেক্টের মধ্যে যোগাযোগ পরিচালনা করে - (অন্যান্য অপশন? ....)
আমি সর্বোত্তম সমাধান হিসাবে উপরের 4 বিকল্পটি কল্পনা করেছি, তবে এটির ডিজাইন করতে আমার কিছুটা সমস্যা হচ্ছে ... সম্ভবত যে কারণে আমি যে ডিজাইনগুলি দেখেছি সেগুলি বিবেচনা করে বিশ্বব্যাপী ব্যবহার করে। মনে হচ্ছে আমি আমার বর্তমান ডিজাইনে বিদ্যমান একই সমস্যাটি নিচ্ছি এবং প্রতিটি উপ-সিস্টেমে এটির তুলনা করছি, কেবলমাত্র একটি ছোট স্কেলে। উদাহরণস্বরূপ, GameStage
উপরে বর্ণিত অবজেক্টটি এটির কিছুটা চেষ্টা হলেও GameCore
অবজেক্টটি এখনও প্রক্রিয়াতে জড়িত।
এখানে কেউ ডিজাইনের পরামর্শ দিতে পারেন?
ধন্যবাদ!