সত্তা বা উপাদানগুলিতে রাষ্ট্র পরিবর্তন


9

আমার সত্তাগুলিতে কীভাবে রাজ্য পরিচালনার সাথে ডিল করতে হয় তা বুঝতে আমার কিছুটা সমস্যা হচ্ছে।

বিরতি এবং মেনুগুলির মতো গেম স্টেট ম্যানেজমেন্টে আমার কোনও সমস্যা নেই, কারণ এগুলি কোনও সত্তা উপাদান উপাদান হিসাবে পরিচালিত হয় না; সত্ত্বা / উপাদানগুলির মধ্যে কেবল রাজ্য।

অরকস থেকে অঙ্কন করা অবশ্যই উদাহরণস্বরূপ, আমার আমার মাইনচারার এবং ট্র্যাপ সত্ত্বা রয়েছে যার কেবলমাত্র পজিশন কম্পোনেন্ট, রেন্ডারকম্পোন্ট, ফিজিক্স কম্পোনেন্টের মতো উপাদান রয়েছে।

প্রতিটি আপডেটে সত্তা তার উপাদানগুলিতে আপডেট কল করবে। আমার কাছে বিভিন্ন ইভেন্টের ধরণের শ্রোতাদের সাথে জেনেরিক ইভেন্ট ম্যানেজারও রয়েছে।

এখন আমার ফাঁদ রাখতে সক্ষম হওয়া দরকার: প্রথমে ফাঁদ এবং ট্র্যাপের অবস্থানটি নির্বাচন করুন তারপরে ফাঁদটি রাখুন।

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

এটি সাধারণত উপাদান ভিত্তিক সিস্টেমে কীভাবে পরিচালনা করা হয়?

(এই উদাহরণটি সুনির্দিষ্ট তবে সত্তা রাজ্যগুলির সাথে ডিল করার সাধারণ উপায়টি বের করতে সহায়তা করতে পারে))


1
আপনি কি ইনপুট ইভেন্টের উপর ভিত্তি করে সত্তাগুলির উপাদান যুক্ত করতে এবং মুছে ফেলতে পারেন? রাজ্যগুলি পরিবর্তিত হলে সম্ভবত আপনি ফাঁদগুলির উপাদানগুলি পরিবর্তন করতে পারেন। উদাহরণস্বরূপ, ট্র্যাপটি রাখার সময় এতে ফলোকম্পোনেন্ট এবং রেন্ডারএফেক্টকম্পোনেন্ট থাকবে। এটি স্থাপন করা হয়ে গেলে, আপনি উভয় উপাদান মুছে ফেলুন এবং সংঘটন কম্পোনেন্ট যুক্ত করুন। (সম্পাদনা: মার্টিন
সোজকা

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

উত্তর:


6

একটি উপাদান সিস্টেমের একটি আকর্ষণীয় অ্যাপ্লিকেশন হ'ল রানটাইমের সময় আপনি কোনও সত্তার উপাদানগুলিকে পরিবর্তন করতে পারেন যদি আপনি এটির মতো পরিচালনা করতে সক্ষম হন। কোনও সত্তার অবস্থা এইভাবে উভয়টির যোগফল হয়ে যায় যা কোন উপাদানগুলিকে নির্ধারিত হয় এবং কোনটি এটির মূল্য দেয় values

আপনার উদাহরণস্বরূপ, আপনি প্রথমে একটি BuildControllerComponent(বিল্ড পর্বে প্লেয়ার নিয়ন্ত্রণের প্রতিক্রিয়া পরিচালনা করে), ক PositionComponentএবং এ দিয়ে ফাঁদ তৈরি করতে পারেন RenderComponent। সর্বশেষে একটিতে একটি ডেটা ক্ষেত্র রয়েছে যা ব্যবহৃত পিক্সেল শেডার (গুলি) পরিচালনা করে এবং এর মধ্যে একটির ফাঁদে ফাঁকে ফাঁকে "ভুতুড়ে" চেহারা দেয়। আপনি লক্ষ্য করবেন যে কোনও পদার্থবিজ্ঞানের উপাদান এখনও নিযুক্ত করা হয়নি।

ফাঁদ স্থাপন করার পরে, উপাদানগুলি আদান প্রদান করা হয়। BuildControllerComponentআর প্রয়োজন হয় না, তাই এটি সরানো হবে। RenderComponentএর শেডার ফাঁদ আপনার স্বাভাবিক স্ট্যান্ডার্ড দৃশ্য দিয়ে প্রতিস্থাপিত হয়। অবশেষে, PhysicsComponentপাশাপাশি ফাঁদে কাজ করার জন্য যা কিছু প্রয়োজন তা সত্তায় যুক্ত করা হয়।

উত্তরাধিকার ভিত্তিক পদ্ধতির ক্ষেত্রে, এটি কোনও ActiveTrapEntityশ্রেণীর জন্য একজন কনস্ট্রাক্টর থাকার সমতুল্য যা একটি BuildTimeTrapEntityশ্রেণিকে তার যুক্তি হিসাবে গ্রহণ করে, দ্বিতীয়টি তৈরির সময় ফাঁদ দেওয়ার জন্য ব্যবহৃত হয়, প্রথমটি ট্র্যাপ করার পরে ব্যবহৃত হওয়ার পরে ব্যবহৃত হয় ।


এই চালাক।
সাইবার 21

1
এটি কোনও সত্তার স্থিতি প্রয়োগের জন্য ভাল কৌশল । এটি প্রতিটি সত্তার স্থিতি কীভাবে ট্র্যাক করতে হবে তা বিবেচনা করে না। আপনি কীভাবে জানবেন যে সত্তাটি বর্তমানে কোন অবস্থায় রয়েছে?
মাইকেলহাউস

@ মার্টিনসোজকা এটি প্রশ্নটি জিজ্ঞাসা করার পরে আমি যা ভাবছিলাম তার কাছে আসে। আমি একটি বিল্ডট্র্যাপপ্রসেস (গেমলজিক এ আপডেট হওয়া কিছু) যা একটি ফাঁদ তৈরির জন্য প্রয়োজনীয় রাষ্ট্রীয় পরিবর্তনগুলি অর্জন করার জন্য উপাদানগুলি পরিবর্তনের রানটাইম দিক পরিচালনা করবে তা যোগ করার বিষয়ে বিবেচনা করছিলাম। কোনও ফাঁদ তৈরির বোতামটি চাপলে গেমটির যুক্তি প্রক্রিয়াটি তৈরি করে এটি শুরু করে। এই পদ্ধতির উপর কোন চিন্তা?
গ্রিফিনহার্ট

@ বাইট 56: সাধারণভাবে, আপনি সম্পর্কিত উপাদানগুলি এবং এর মানগুলি জিজ্ঞাসা করতে পারেন। অনুশীলনে, আপনাকে প্রায়শই পুরো রাজ্যের প্রাসঙ্গিক সাবসেটটি জানতে হবে, উদাহরণস্বরূপ "এই সত্তার কি আছে BuildControllerComponent?" বা "এই সত্তার এর লিপিবদ্ধ হিসাবে এর অবস্থান কী PositionComponent, যদি এর কোনও থাকে?" - আপনি যেগুলি আগ্রহী সেগুলির জন্য উপাদান তালিকাটি যাচাই করে এবং allyচ্ছিকভাবে তাদের মানগুলি (কিছু) অনুসন্ধান করে যা করেন do
মার্টিন সোজকা

1
@ গ্রিফিনহার্ট: ব্যবস্থাপনার সাথে জড়িত সিস্টেমে ফাঁদ "তৈরি" করার জন্য যা কিছু প্রয়োজন তা আমি কেবল প্রয়োগ করতাম BuildControllerComponent। এটি ইতিমধ্যে প্লেয়ার চরিত্রের (বা ক্যামেরার) দৃষ্টিভঙ্গির পরিবর্তনগুলি এবং কী এবং মাউস প্রেস ইভেন্টগুলি প্রক্রিয়া করা প্রয়োজন।
মার্টিন সোজকা

5

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

আপনি "স্টেট" নামে একটি অতিরিক্ত উপাদান যুক্ত করতে পারেন। এটি আপনার রেন্ডার এবং সংঘর্ষের সিস্টেম দ্বারা অ্যাক্সেস করা হবে। রাষ্ট্রীয় উপাদানটি কেবলমাত্র একটি পতাকা যা এতে একাধিক রাজ্য উপলব্ধ। পরিস্থিতির জন্য আপনি রাজ্যগুলি বর্ণনা করবেন Playএবং হবেন Build। যখন রেন্ডার সিস্টেমটি দেখবে যে রাষ্ট্রটি এটি Buildতখন এটি বস্তুর স্বচ্ছ হয়ে উঠবে। সংঘর্ষের সিস্টেমটি যখন Buildরাষ্ট্রটি দেখবে তখন এটি প্লেয়ারের সাথে সংঘর্ষের প্রক্রিয়া করবে না।

তবে সত্যই, যদি আপনার সিস্টেম না থাকে এবং আপনি অনেকগুলি বিষয় নিয়ে চলে যাচ্ছেন এমন সমস্ত কাজ করার জন্য আপনি উপাদানগুলির উপর নির্ভর করছেন। উপাদানগুলি একে অপরের সম্পর্কে জানা উচিত নয় এবং তারা প্রক্রিয়াজাতকরণ করা উচিত নয়।


আপনি যা বলছেন তা বিরোধী, প্রথমে তাদের অচেতন হওয়া উচিত (যা আমি সম্মত) তারপরে আপনি অন্যদের দ্বারা অ্যাক্সেস পাওয়া একটি উপাদান রেখে অনুসরণ করবেন। আপনি কি স্পষ্ট করতে পারেন? আমি ইভেন্ট সিস্টেম দ্বারা decoupled উপাদান রাখছি।
গ্রিফিনহার্ট

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

আমি StateComponentএকের ধারণা পছন্দ করি যা একাধিক সিস্টেমে গ্রাস করা যায়।
সাইফার

1
ডাউনভোটদের পক্ষে যুক্তি প্রদান করা ভদ্র ধন্যবাদ।
MichaelHouse

2
অন্য একটি নোটে, জিজ্ঞাসকের পদ্ধতির প্রতি আপনার আপত্তি এই অনুমানের উপর ভিত্তি করে যে সমস্ত উপাদান ভিত্তিক ডিজাইনের পৃথক সিস্টেম থেকে উপাদানগুলি আপডেট করতে হবে (সত্তা সিস্টেমের নকশার মতো)। এটি করার একটি উপায় এটি, তবে অবশ্যই একমাত্র এটি নয় এবং এমন কোনও গেমের জন্য ক্যাচ-অপ্টিমাইজিং উপাদান আপডেট লুপগুলির কোনও প্রয়োজন নেই বলে এই জাতীয় দৃষ্টিভঙ্গি অস্বীকার করার কোনও কারণ নেই।
শন মিডলডিচ 21
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.