সত্তা / উপাদান উপাদান এবং UI "সত্তা"


14

সত্তা / উপাদান সিস্টেমগুলিতে আমি এখনও সবুজ। আমি দেখতে পেয়েছি যেহেতু স্প্রাইটস অঙ্কন (বা স্প্রিটশিট) এবং পরিচালনা ইনপুট (মাউস / টাচ ক্লিক) এর জন্য আমার দরকারী উপাদান রয়েছে তাই আমি স্বাভাবিকভাবেই ইউআই উপাদানগুলি তৈরি করতে (যেমন বোতামগুলির মতো, যেমন স্তর-নির্বাচন পর্দা) তৈরি করতে এগুলি পুনরায় ব্যবহার করতে চাই।

এটি আমাকে খুব বিজোড় হিসাবে আঘাত করে। আমি সর্বদা সত্ত্বাকে খেলোয়াড়, শত্রু, শক্তি-আপ ইত্যাদির মতো "গেমের মডেল" হিসাবে বুঝতে পারি the অন্যদিকে, কোড-পুনঃব্যবহারের দৃষ্টিকোণ থেকে, ইউআইয়ের জন্য প্রয়োজনীয় উপাদানগুলির পুনরায় ব্যবহার করা সঠিকভাবে উপলব্ধি করে।

কীভাবে এবং কোথায় ইউআই / জিইউআই উদ্বেগ কোনও সত্তা / উপাদান সিস্টেমে ফিট করে?

(দ্রষ্টব্য: এটি একাধিক প্ল্যাটফর্ম / ভাষাগুলিতে প্রযোজ্য হওয়ায় এই প্রশ্নটি প্ল্যাটফর্ম অজিনস্টিক)


3
আমি মনে করি এটি আপনার পক্ষে যৌক্তিক বলে মনে হচ্ছে কেবল কারণ আপনি 2 ডি গেম তৈরি করছেন। কল্পনা করুন যে আপনি 3 ডি গেমটি তৈরি করবেন (2 ডি জিআই দিয়ে) প্রায় কোনওই রেন্ডারিং লজিকটি পুনরায় ব্যবহার করা যাবে না এবং 3 ডি বিশ্বের অভ্যন্তরে 2 ডি গুই উপাদানগুলি বেশি অর্থবোধ করতে পারে না। আপনাকে উপাদান সিস্টেমের শীর্ষে জিইউআই তৈরি করা উচিত। আপনার গেমপ্লেস্ক্রিনটি উপাদানগুলি সহ সত্তা বিশ্ব তৈরি করুন এবং উপাদানগুলির মধ্যে একটিতে "ক্যানভাস" সহ ক্যামেরা থাকবে যা আপনার রেন্ডারার আঁকবে। এবং সেই ক্যানভাস সেই পর্দার পটভূমিতে পরিণত হবে।
কিকাইমারু

1
@ কিকাইমারু আপনার 2 ডি সম্পর্কে একটি পয়েন্ট আছে সম্ভবত আমি এমভিসিতে খুব বেশি আছি তবে এটি "মডেল" (গেম সত্তা) এবং দেখুন / নিয়ামক (ইউআই উপাদান) এর মিশ্রণের মতো মনে হয় like এটি কাজ করে, নিশ্চিত, তবে এটি কি এইভাবে কাজ করা উচিত ? আরও ভাল উপায় আছে? অন্যরা কীভাবে তা করে?
ashes999

@ ashes999 আপনার মন্তব্য এবং প্রাথমিক প্রশ্নটি আমার হৃদয়ের গভীর থেকে এসেছে :)
নরেক

@ আরমান আমি এর সন্তোষজনক উত্তর পাই না।
ashes999

@ ashes999 আমাকে সর্বত্র লোকেরা বলে যে আপনার ইসিএসের সাথে এমভিসি মিশ্রিত করা উচিত নয়, তবে কেন? কাকে ভালো লাগবে না? বিভিন্ন কাজের জন্য বিভিন্ন অস্ত্র, আপনি একমত না?
নরেক

উত্তর:


4

বেশ কয়েকটি সত্তা-উপাদান সিস্টেম ব্যবহার করার পরে, বিশেষত ক্রাফটিজেএস, আমি আমার প্রশ্নের উত্তর কমবেশি পেয়েছি: হ্যাঁ, আপনি জিইউআইয়ের জন্য উপাদানগুলি (বিশেষত স্প্রাইটস বা চিত্র এবং মাউস-ক্লিক হ্যান্ডলারগুলি) 2 টি পুনরায় ব্যবহার করতে পারেন।

বেশিরভাগ সময়, আপনার কেবলমাত্র ইসিএসে অ্যাক্সেস থাকতে হবে, এবং অন্তর্নিহিত সিস্টেমগুলি নয় (যেমন। অঙ্কন সিস্টেম)। এই ক্ষেত্রে, উপাদানগুলি ব্যবহার করা ঠিক আছে, কারণ আপনার অন্য কোনও পছন্দ নেই।

যদি আপনার অন্তর্নিহিত সিস্টেমে অ্যাক্সেস থাকে (যেমন শাপে সরাসরি অ্যাক্সেস সহ রুবি রোগেলাইক), আপনি দেখতে পাচ্ছেন যে সেই সিস্টেমে সরাসরি অঙ্কন / রেন্ডারিং গুচ্ছ ব্যবহার করার চেয়ে আরও কার্যকর (কম কোড, কম ভঙ্গুর, আরও প্রাকৃতিক) সত্তা এবং উপাদান।


আপনি উন্নত UI উপাদানগুলির যুক্তিটি কোথায় রাখেন? অর্থাৎ। এমন একটি স্বাস্থ্য বার যা খেলোয়াড় কখন হিট হবে এবং বারটি কমাতে হবে তা জানতে হবে। আমি বুঝতে পারি না এটির জন্য যদি কোনও নির্দিষ্ট সিস্টেম, বা স্ক্রিপ্ট বা অন্য কিছু দরকার হয় ...
আমির লিমা

@ এমিরলিমা এর মতো কোনও কিছুর জন্য, আমি বেশিরভাগ ইউআই যুক্তিটি হেলথ বারে (স্বাস্থ্য বারের আকার পরিবর্তন করে) রাখব এবং নতুন / পরিবর্তিত স্বাস্থ্যের মান কী তা বোঝাচ্ছে, খেলোয়াড়টি যখন আঘাত হানবে তখন একটি ইভেন্ট তৈরি করতে বাধ্য করতাম। (স্বাস্থ্য বারটি এই ইভেন্টটি ক্যাপচার করতে পারে এবং যথাযথ প্রতিক্রিয়া জানাতে পারে))
ashes999

কিন্তু সেই আর্কিটেকচারে হেলথ-বার অবজেক্টটি কী? এটি কি "স্বাস্থ্য বার" উপাদানযুক্ত একটি সত্তা? সত্তা থেকে উত্তরাধিকারসূত্রে প্রাপ্ত একটি শ্রেণি? আপডেট সহ একটি সাধারণ অবজেক্ট হার্ড কোডড?
আমির লিমা

1
@ এমিরলিমা আমি স্বাস্থ্য সত্ত্বাকে সত্তা হিসাবে এবং খেলোয়াড়কে সত্তা হিসাবে মডেল করব। আপনি নিজের বোধগম্য যা কিছু করতে পারেন।
ashes999

1

2 ডি বা 3 ডি-তে, কোনও সত্তা উপাদান সিস্টেমের (ইসিএস) কমপক্ষে জিইউআই সিস্টেমে অ্যাক্সেস থাকা উচিত, যদি এটি একই ইসিএসের অংশ না হয়।

ব্যক্তিগতভাবে, আমি দুটি মিশ্রিত না। জিইউআইয়ের কোডের পুনঃব্যবহারযোগ্যতা কেবলমাত্র শীর্ষ স্তরে ঘটে। মাউস / কীবোর্ডকে প্রতিক্রিয়া জানানো, রেন্ডারিং ইত্যাদি। বিভিন্ন বোতামগুলি যে ক্রিয়াকলাপগুলি গ্রহণ করে বা নির্দিষ্ট তালিকাগুলি প্রদর্শিত তথ্যগুলি এমন কিছু নয় যা পুনরায় ব্যবহারের জন্য যথেষ্ট জেনেরিক করা যায়।

উদাহরণস্বরূপ, আমি গুই সত্তার জন্য উপাদান কল্পনা ভালো কিছু হবে হবে position, renderএবংgui । যেখানে জিইউআই উপাদান জিইউআই সত্তা গ্রহণ করে তার ধরণের ক্রিয়া সংজ্ঞায়িত করবে। যাইহোক, এই ক্রিয়াটি বেশ অনন্য এবং প্রসঙ্গে নির্দিষ্ট হতে চলেছে। সিস্টেমটিতে এটি ফলাফল দেয় যে জিইউআই উপাদানগুলি খুব বড় এবং মূলত প্রতিটি জিইউআই ফাংশন (লোড গেম, সেভ গেম, সার্ভার সন্ধান করা ইত্যাদি) পরিচালনা করতে ডিজাইন করা হয়েছে hand অগোছালো মনে হচ্ছে।

আমি প্রতিটি জিইউআই "স্ক্রিন" এর জন্য একটি স্ট্যান্ডার্ড ক্লাস ফাইল করতে পছন্দ করব। সেই স্ক্রিনের জন্য সমস্ত কার্যকারিতা এক জায়গায় রাখুন (একটি সাধারণ কার্যকারিতা শ্রেণীর উল্লেখ সহ)। এটি পরিচালনা করা অনেক পরিষ্কার এবং সহজ।

তবে, যেমনটি আমি বলেছি, ইসিএসের জিইউআই সিস্টেমে অ্যাক্সেস থাকা উচিত। এটির সিস্টেমগুলিতে সত্তার উপর ভিত্তি করে জিইউআইকে তথ্য সরবরাহ করতে সক্ষম হওয়া প্রয়োজন। উদাহরণস্বরূপ, একটি জোটযুক্ত ইউনিটের উপর ঘুরে বেড়ানো সেই ইউনিট সম্পর্কিত সমস্ত তথ্য সহ একটি জিইউআই উইন্ডো পপআপ করবে। যেখানে শত্রু unityক্যের উপরে ঘোরাফেরা সীমিত তথ্যের সাথে জিইউআই উইন্ডোটি পপআপ করবে। দুজনের মধ্যে পার্থক্য জানতে আপনি সম্ভবত জিইউআই প্রোগ্রাম করতে চান না, আপনি সত্তাকে তার তথ্য প্রদর্শন করতে বলতে চান।

সুতরাং, সত্তাগুলির এখনও সম্ভবত কিছু প্রকার জিইউআই উপাদান থাকবে তবে তারা জিইআইআই সত্ত্বা নয়, "গেমের" সত্তা হবে। এই উপাদানটি তাদের জিইউআই ইন্টারফেস তৈরি করতে বাহ্যিক জিইউআই সিস্টেমটি ব্যবহার করবে।


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