আমি কিছুক্ষণের জন্য উপাদান ভিত্তিক সত্তা সিস্টেমে আগ্রহী হয়েছি এবং এতে অজস্র নিবন্ধগুলি পড়েছি (দ্য ইনসোমিয়াক গেমস , দুর্দান্ত মানটি আপনার হায়ারার্কি টি , টি-মেশিন , ক্রোনোক্লাস্ট ... মাত্র কয়েকটি নাম দেওয়ার জন্য)।
তাদের সকলেরই এমন কোনও কিছুর বাইরের কাঠামো রয়েছে বলে মনে হয়:
Entity e = Entity.Create();
e.AddComponent(RenderComponent, ...);
//do lots of stuff
e.GetComponent<PositionComponent>(...).SetPos(4, 5, 6);
এবং যদি আপনি ভাগ করা ডেটা সম্পর্কে ধারণা নিয়ে আসেন (এটি এখন পর্যন্ত আমি দেখেছি সেরা ডিজাইন, কোথাও তথ্য নকল না করার শর্তে)
e.GetProperty<string>("Name").Value = "blah";
হ্যাঁ, এটি খুব দক্ষ। যাইহোক, এটি পড়া বা লেখার পক্ষে ঠিক সহজ নয়; এটি আপনার কাছে খুব চতুর এবং পরিশ্রমী বোধ করে।
আমি ব্যক্তিগতভাবে কিছু করতে চাই:
e.SetPosition(4, 5, 6);
e.Name = "Blah";
যদিও অবশ্যই এই ধরণের ডিজাইনের কাছে আসার একমাত্র উপায় হ'ল সত্তা-> এনপিসি-> শত্রু-> ফ্লাইংএনেমি-> ফ্লাইংএনেমি উইথাহাট এক ধরণের শ্রেণিবদ্ধতা এড়াতে চেষ্টা করে।
কেউ কি এই ধরণের উপাদান উপাদানগুলির জন্য এমন কোনও নকশা দেখেছেন যা এখনও নমনীয়, তবুও ব্যবহারকারী বন্ধুত্বের একটি স্তর বজায় রাখে? এবং এই বিষয়টির জন্য, (সম্ভবত সবচেয়ে কঠিন সমস্যা) একটি ভাল উপায়ে ডেটা স্টোরেজটি পেতে পারেন?
একটি উপাদান ভিত্তিক সত্তা সিস্টেমের জন্য কী ডিজাইন রয়েছে যা ব্যবহারকারীর পক্ষে বন্ধুত্বপূর্ণ তবে এখনও নমনীয়?