কোনও সত্তা উপাদান সিস্টেমে কীভাবে বিশ্বব্যাপী প্রসঙ্গ ডেটা সঞ্চয় করা যায়?


10

আমার প্রশ্নটি হ'ল:

কীভাবে একজন বিশ্বব্যাপী প্রসঙ্গের ডেটা সঞ্চয় করবে। একটি সত্তা উপাদান সিস্টেমে বিশ্বের ডেটা তথ্য, বর্তমান বিশ্বের সময়, ইত্যাদি?

আমি সি ++ তে বামন দুর্গ-স্টাইলের ওপেন এন্ডেড ওয়ার্ল্ড সিমুলেশন গেম তৈরির দিকে কাজ করার কথা ভাবছি। আমি কেবল মজাদার জন্য একটি সত্তা উপাদান শৈলীর গেম ইঞ্জিন তৈরি করেছি এবং আমি বর্তমানে যা চাই তার সমস্ত বৈশিষ্ট্যগুলিতে আমি কীভাবে কাজ করব তা নির্ধারণ করার চেষ্টা করছি trying স্ট্যান্ডার্ড গেম প্লে (রেন্ডারিং, ফিজিক্স, সত্তা-নির্দিষ্ট উপাদান ডেটা, ইত্যাদি) ছাড়াও, আমি কিছু বৈশ্বিক প্রাসঙ্গিক ডেটাও রাখতে চাই যে সমস্ত প্রাসঙ্গিক সিস্টেমে অ্যাক্সেস থাকবে (যেমন, বিশ্বের ডেটা বর্তমানে এটি কোন বছরের মতো রয়েছে , বিশ্ব উষ্ণায়নের ঘটনা ঘটছে কিনা, যে কোনও ধরণের জিনিস যা বিশ্বের অনুকরণের জন্য প্রাসঙ্গিক)) আমি প্রথমে একটি "ওয়ার্ল্ড" উপাদান তৈরি করার কথা ভেবেছিলাম, তবে অনেকগুলি সিস্টেমের এই যৌক্তিকভাবে "গ্লোবাল" ডেটা অ্যাক্সেসের প্রয়োজন হলে এটি অর্থহীন এবং কঠিন বলে মনে হয়।

"ওয়ার্ল্ড" উপাদান থাকা কি বোধগম্য হবে বা এই ডেটাটি অন্য কোনও উপায়ে সঞ্চয় করা উচিত?

আমি কেবল এই ডেটাটিকে বিশ্বব্যাপী তৈরি করার কথা ভেবেছিলাম, এভাবে যে কোনও সিস্টেমে এটি ব্যবহার করতে চাইবে তা অ্যাক্সেস দেওয়া; এটি সাধারণভাবে সত্তা-উপাদান নীতিগুলির লঙ্ঘনের মতো বলে মনে হচ্ছে এবং অন্যান্য কারণে অগোছালো হতে পারে তবে আমি ভেবেছিলাম এটি সম্ভবত কার্যকর হবে।

অন্য যে জিনিসটি আমি ভেবেছিলাম তা হ'ল প্রকৃত প্রাসঙ্গিক ডেটাগুলি সরাসরি সিস্টেমে এম্বেড করা। উদাহরণস্বরূপ, যদি আমার কাছে AgeSystemসেই "বয়স্ক" সমস্ত সত্ত্বা থাকে যার একটি getsWeakerAsTimePassesউপাদান বা কী থাকে না, তবে সম্ভবত এই সিস্টেমটি বিশ্বের জন্য প্রাসঙ্গিক সময় সম্পর্কিত ডেটা সরাসরি সদস্য ডেটা হিসাবে সংরক্ষণ করতে পারে যা এটি সময়ের সাথে সাথে কত পরিমাণে গণনা করতে ব্যবহার করবে বয়স এবং মানুষকে দুর্বল করা ইত্যাদি This এই তৃতীয় বিকল্পটি আমার সবচেয়ে প্রিয় ছিল, তবে আমার মনে কিছু ছিল যা মস্তিষ্কে জ্বলে উঠেছিল।

কেউ পরামর্শ দিতে পারেন?


3
ডাউনভোটদের জন্য যৌক্তিকতা কেবল নমুনা এবং কেবল ওপি নয়, অন্যান্য ব্যবহারকারীদের জন্য দরকারী।
MichaelHouse

2
আপনি একটি হাতুড়ি তৈরি করেছেন এবং এখন সবকিছুই পেরেকের মতো দেখাচ্ছে। আমি আপনাকে আপনার প্রোগ্রামে ডেটা ধরে রাখতে এবং পরিচালনা করার জন্য কেবল ইসিএসের চেয়ে বেশি ব্যবহারের অনুমতি দেব কারণ সবকিছুই পেরেক নয়।
প্যাট্রিক হিউজেস

উত্তর:


10

যে কোনও উপায়ে কাজ করা একটি উপায় যা কাজ করে। এটিকে ভীতিজনক শোনায় তবে সত্যই, আপনার গেমটি আপনার আর্কিটেকচারের চেয়ে 1000x বেশি গুরুত্বপূর্ণ। আপনার পছন্দ মতো যে কোনও পদ্ধতির চয়ন করুন এবং সহজেই ব্যবহার করুন।

আমি প্রকৃত শিপিং গেমগুলিতে দেখেছি (উপাদানগুলি ভিত্তিক নকশা ব্যবহার করে, বিশেষ করে ইসিএস নয়; আমি কখনই খাঁটি ইসিএস "বুনো" দেখিনি, যদিও অনেক উপাদান ডিজাইনে তাদের মধ্যে ইসিএস-জাতীয় উপাদান রয়েছে) অন্তর্ভুক্ত:

  • Singletons
  • "প্রসঙ্গ" অবজেক্টগুলি উপাদান / সিস্টেমে পাস করা হয়েছে যা অন্যান্য অন্যান্য প্রাসঙ্গিক সিস্টেমগুলির রেফারেন্স ধারণ করে
  • উপাদানগুলির কারখানাগুলি যা সিস্টেমটি পৃথক উপাদানগুলিতে হ্যান্ডেল করে
  • উপাদানগুলি যে কোনও বস্তু শ্রেণিবিন্যাসের মূলের সিস্টেমে রেফারেন্সগুলি সঞ্চয় করে (কেবলমাত্র কিছু অডব্লাল ইউনিটি গেমগুলিতে)
  • একক "ইঞ্জিন" অবজেক্টগুলি সিস্টেম বা উপাদানগুলিতে পাস হয়েছে যা অন্যান্য সমস্ত সিস্টেমে রেফারেন্স রাখে
  • স্ট্রিং-ভিত্তিক রিসোর্স লুচিং সিস্টেমগুলি (আপনাকে সি ++ এ handle<PhysicsSystem> = GetResource<PhysicsSystem>("/systems/physics")হ্যাঁ, সত্যই কিছু করার অনুমতি দেয় )
  • গ্লোবাল ডেটা এবং সি-স্টাইলের ফ্রি ফাংশনগুলির পাইলস যা সেগুলি পরিচালনা করে
  • স্পেসস / সাবস্পেস এবং সহকারী ভিডিও

তারা সব কাজ। আমার কাছে কিছু পদ্ধতির সাথে একটি স্পষ্ট পছন্দসই গ্রিপ রয়েছে তবে এগুলি সমস্ত এএএ গেম শিপতে ব্যবহৃত হয়েছিল। কখনও কখনও একক প্রকল্পে একাধিক পদ্ধতির (40-100 + ইঞ্জিনিয়ার দলগুলি হাফজার্ড সদৃশ কোড তৈরি করতে ঝোঁক দেয়, হায়)।


2
আপনার উত্সাহটি প্রিয় কোনটি তা জানতে আগ্রহী।
ashes999

আমি যে লিঙ্কগুলি সরবরাহ করেছি তা হ'ল আমার স্লাইডগুলিতে এবং আমার ভিডিওর বিষয়ে এই বিষয়ে কোনও বক্তব্য দিচ্ছেন, যদি এটি কোনও ইঙ্গিত দেয়। :)
শান মিডললেডিচ

আহ, সুতরাং আপনার প্রিয় স্থানগুলি তখন / স্পেসপেস then :)
ashes999

দুর্দান্ত উত্তর। আমি মনে করি আমার কিছু কাজ করা হয়েছে, এবং আমি আসলে এগিয়ে গিয়ে আমার গেমপ্ল্যানে "স্পেস / সাবস্পেস" ধারণাটি অন্তর্ভুক্ত করেছি।
আয়েসোমানিয়া
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.