Cave: शुरूआती मार्गदर्शिका

Back to Learn

Cave: आरंभ करने की गाइड

Lesson 9 of 19 • 25 XP

Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

Entities को समझना

अब हम cave में Entity की अवधारणा को समझते हैं। Entities Cave सीन के अंदर मौलिक वस्तुएँ होती हैं।

अगर एक सीन एक लेवल, मेन्यू, या टेस्ट स्पेस है, तो entities वे चीजें हैं जो उस स्पेस के अंदर मौजूद होती हैं। उदाहरण के लिए, एक खिलाड़ी, दुश्मन, दरवाज़ा, लाइट, कैमरा, ट्रिगर, UI बटन, साउंड स्रोत, और फ़ोल्डर सभी entities हो सकते हैं।

इस पाठ में, आप निम्नलिखित सीखेंगे:

  • नाम।
  • IDs।
  • सक्रिय स्थिति।
  • पेयरेंटिंग।
  • फ़ोल्डर्स।
  • पदानुक्रम क्रम।
  • टैग्स और गुण।
  • टेम्पलेट इंस्टेंस।

ये विवरण छोटे लग सकते हैं, लेकिन जब एक सीन कुछ वस्तुओं से बढ़कर एक असली लेवल बनता है, तो ये बहुत बड़ा फर्क डालते हैं।

Entity क्या है?

Entity सीन में एक वस्तु है।

एक entity प्रतिनिधित्व कर सकता है:

  • एक दृश्य 3D वस्तु।
  • एक अदृश्य सहायक।
  • एक गेमप्ले ट्रिगर।
  • एक UI तत्व।
  • एक साउंड स्रोत।
  • या सिर्फ़ संगठन के लिए उपयोग किया गया एक फ़ोल्डर।

image.png

उदाहरण के लिए, एक क्रेट एक दृश्यमान entity है। एक स्पॉन पॉइंट गेमप्ले के दौरान अदृश्य हो सकता है, लेकिन यह अभी भी एक entity है क्योंकि यह दर्शाता है कि कुछ होना चाहिए।

Cave इस विचार को सरल रखता है: सीन entities से बने होते हैं।

Entities Component कंटेनर हैं

Entities अकेले ज्यादा कुछ नहीं करते, उनकी विशेषताएँ components से आती हैं। उदाहरण के लिए:

Entity इसमें हो सकते हैं Components
Crate Transform, Mesh, Rigid Body.
Player Transform, Character, Camera, Python, Audio.
Door Transform, Mesh, Rigid Body, Logic Bricks.
Torch Transform, Mesh, Light, Audio.
Button Transform, UI Element, Logic Bricks or Python.
---

इसीलिए entities लचीले हैं। एक दरवाज़ा पूरी तरह से अलग हार्डकोडेड वस्तु प्रकार नहीं है। यह टुकड़ों से बना एक entity है: इसे देखने के लिए एक mesh, खिलाड़ी को रोकने के लिए collision, और खोलने या बंद करने के लिए लॉजिक।

जब आप इसे समझ जाते हैं, तो वस्तु बनाना अधिक व्यावहारिक हो जाता है। आप "मुझे कौन सा ऑब्जेक्ट टाइप चाहिए?" पूछना बंद कर देते हैं और पूछना शुरू करते हैं "इस entity को कौन-कौन से components चाहिए?"

Entity नाम

प्रत्येक entity का एक नाम होता है। आप Scene Graph में उसके त्वरित संपादन मेनू से या Properties टैब से entity का नाम बदल सकते हैं।

यह उल्लेखनीय है कि नाम पहले इंसानों के लिए होते हैं:

  • ये Scene Graph को पढ़ना आसान बनाते हैं।
  • ये डिबगिंग को आसान बनाते हैं।
  • टीम के सदस्यों के साथ वस्तुओं की चर्चा करना आसान बनाते हैं।
  • ये आपको बाद में अपने सीन को समझने में मदद करते हैं।

Cave हर entity नाम को अनोखा बनाने की आवश्यकता नहीं करता। कई entities एक ही नाम साझा कर सकते हैं, जो कि बार-बार आने वाली वस्तुओं जैसे चट्टानें, सिक्के, क्रेट, या दुश्मनों के लिए उपयोगी है।

हालांकि, नाम को entity के लिए एकमात्र विश्वसनीय पहचानकर्ता के रूप में न लें।

अच्छे नाम सरल और वर्णनात्मक होते हैं:

कमजोर नाम बेहतर नाम
Mesh Wooden Crate
Empty Player Start
Light Cave Entrance Light
Folder Enemy Group

लक्ष्य नामों को भड़कीला बनाना नहीं है। लक्ष्य सीन को पढ़ने योग्य बनाना है।

Entity नाम को कोड में उपयोग किया जा सकता है ताकि आपका सीन से विशिष्ट entity प्राप्त किया जा सके, लेकिन चूंकि आप जानते हैं कि कई entities एक ही नाम रख सकते हैं, इसलिए आपको यह भी पता होना चाहिए कि यदि आप नाम द्वारा entity को लाते हैं, और उसमें कई entities इसी नाम के हैं, तो यह अनिश्चित व्यवहार पैदा कर सकता है क्योंकि यह गारंटी नहीं है कि सीन कौन सा entity लौटाएगा। यह आपकी खोज में पहला मिला entity लौटाएगा। इसलिए यदि आपके लिए कोड के माध्यम से विशेष ऑब्जेक्ट प्राप्त करना महत्वपूर्ण है, जैसे खिलाड़ी, तो सुनिश्चित करें कि आप इसे एक अनूठा नाम दें।

Entity IDs

Cave आंतरिक रूप से entities को अद्वितीय IDs के साथ ट्रैक करता है।

आपको आमतौर पर इन IDs को संपादित या चिंता करने की आवश्यकता नहीं होती। ये इसलिए मौजूद हैं ताकि इंजन entities की विश्वसनीयता से पहचान कर सके, भले ही नाम दोहराए गए हों। वास्तव में, अद्वितीय IDs अपरिवर्तनीय होते हैं, यानी आप इन्हें बदल नहीं सकते। ये स्वचालित रूप से इंजन द्वारा आवंटित होते हैं।

इसे याद रखें:

चीज़ उद्देश्य
नाम सीन को पढ़ने में मदद करता है।
ID Cave को वस्तु आंतरिक रूप से ट्रैक करने में मदद करता है।

यदि दो दुश्मनों का नाम Enemy है, तो Cave उन्हें परदे के पीछे भी अलग पहचान सकता है।

Entity एक्टिव स्टेट

Entities सक्रीय या निष्क्रिय हो सकते हैं।

image.png

Scene Graph और Properties टैब में इसे आंख जैसी सक्रिय नियंत्रण के साथ दिखाया जाता है।

स्थिति अर्थ
Active entity सामान्य रूप से सीन में भाग लेती है।
Inactive entity सीन में रहती है, लेकिन अक्षम होती है।

entity और उसके components पर निर्भर करते हुए, निष्क्रिय करने से प्रभावित हो सकता है:

  • रेंडरिंग।
  • फिजिक्स।
  • लॉजिक।
  • रनटाइम अपडेट।
  • कॉम्पोनेंट व्यवहार।

एक निष्क्रिय entity के किसी भी component अपडेट को कभी नहीं बुलाया जाएगा, और जब आप entity को निष्क्रिय करते हैं, तो यह component के end मेथड को कॉल करेगा, और जब आप इसे फिर से सक्षम करते हैं, तो यह component के start मेथड को कॉल करेगा।

आप सुरक्षित रूप से मान सकते हैं कि निष्क्रिय entity सीन के फिजिक्स कैलकुलेशंस, लॉजिक, ट्रिगर्स आदि में योगदान नहीं देगी, जब तक कि आप मैन्युअली उन entities को सीन से क्वेरी न करें और यह तथ्य अनदेखा न करें कि वे निष्क्रिय हैं।

व्यावहारिक विचार सरल है: निष्क्रिय का मतलब है "यहां रखा गया, लेकिन वर्तमान में भाग नहीं ले रहा।"

निष्क्रिय करना बनाम हटाना

निष्क्रिय करना और हटाना समान नहीं हैं।

क्रिया परिणाम
Disable entity को सीन में रखता है, लेकिन बंद कर देता है।
Delete entity को सीन से हटा देता है।

जब आपको बाद में entity की जरूरत हो सकती है तो इसे Disable करें। जब आप सुनिश्चित हों कि entity को हटाना है, तब Delete करें।

टेस्टिंग के लिए, Disable करना अक्सर सुरक्षित होता है। यदि दुश्मन से मुकाबला बहुत कठिन लग रहा है, तो पहले कुछ दुश्मनों को Disable करें और लेवल टेस्ट करें। अगर बदलाव सही लगे, तो आप बाद में सीन साफ़ कर सकते हैं।

Entities का Parenting

Entities को दूसरी entities के पैरेंट बनाया जा सकता है।

जब एक entity का पैरेंट होता है, तो वह पैरेंट के पदानुक्रम का हिस्सा बन जाता है। अगर आप पैरेंट को हिलाते हैं, तो बच्चे भी उसके साथ हिलते हैं।

Parenting उपयोगी है:

  • एक तलवार जो Character से जुड़ी हो।
  • एक Torch से जुड़ी लाइट।
  • एक वाहन से जुड़ा कैमरा।
  • एक फ़ोल्डर के तहत व्यवस्थित Props का समूह।
  • एक पैरेंट पैनल के तहत समूहित UI तत्व।

Parenting ट्रांसफॉर्म्स को भी प्रभावित करता है। बच्चे entity का ट्रांसफॉर्म पैरेंट पदानुक्रम के सापेक्ष गणना किया जाता है।

यह संबंधित वस्तुओं को एक साथ रखने का सबसे सरल तरीका है।

फ़ोल्डर Entities

फ़ोल्डर entities संगठन के लिए उपयोग की जाती हैं। जब आपका सीन कई वस्तुओं से भरने लगता है, तो ये विशेष रूप से मददगार होती हैं।

परिभाषा के अनुसार, जो entity को फ़ोल्डर बनाता है, वह इसकी components की अनुपस्थिति है, खासकर Transform और UI Element components की, क्योंकि यदि एक entity के पास विश्व में ट्रांसफॉर्म नहीं है और UI एलेमेंट भी नहीं है, तो संभावना है कि इसे फ़ोल्डर के रूप में उपयोग किया जाएगा। लेकिन यह ज्यादातर नामकरण सम्मेलन है, इसलिए इसे ध्यान में रखें।

सामान्य फ़ोल्डर समूह शामिल हैं:

  • Environment.
  • Gameplay Triggers.
  • Enemies.
  • Props.
  • Lighting.
  • UI.
  • Audio.
  • Debug Helpers.

फ़ोल्डर्स केवल सजावट के लिए नहीं हैं। एक साफ सीन ग्राफ आपकी काम करने की गति बढ़ाता है क्योंकि आप सैकड़ों खुले हुए entities को खोजने के बजाय, ज़रूरी ऑब्जेक्ट जल्दी पा सकते हैं।

Entity Hierarchy Order

Scene Graph में entities का क्रम संगठन के लिए महत्वपूर्ण है, और कुछ मामलों में यह प्रभावित कर सकता है कि चीजें कैसे संसाधित या प्रदर्शित होती हैं।

यदि आप एक फ़ोल्डर खोलें और नीचे की संरचना देखें, तो इसे स्कैन करना कठिन होगा:

Crate
Player
Light
Enemy
Camera
Rock
Trigger

लेकिन यह आसान है:

Player
Camera
Lighting
Enemies
Environment
Gameplay Triggers

लक्ष्य पदानुक्रम को भड़कीला बनाना नहीं है, बल्कि इसे उपयोगी बनाना है।

यदि आप एक सप्ताह बाद सीन खोल सकते हैं और तुरंत महत्वपूर्ण वस्तुओं की स्थिति समझ सकते हैं, तो आपका पदानुक्रम अपना काम कर रहा है।

महत्वपूर्ण नोट: इंजन अपने आंतरिक सीन ग्राफ का अनुकूलन कैसे करता है, इसके कारण, हेड लेवल entities (जिनके पैरेंट नहीं हैं) का क्रम यादृच्छिक होगा, लेकिन चाइल्ड entities के बीच एक विशिष्ट क्रम हो सकता है, और आप इसे एडिटर में प्रत्येक entity पर राइट-क्लिक करके ऊपर या नीचे, टॉप या बॉटम में मूव कर के व्यवस्थित कर सकते हैं।

Entity Properties और Tags

Entities कस्टम गुण और टैग रख सकते हैं।

फीचर उद्देश्य
Property एक संपादन योग्य मान संग्रहित करता है।
Tag पहचान या समूह बनाने के लिए एक लेबल जोड़ता है।

उदाहरण के लिए, एक दुश्मन में हो सकते हैं:

  • Damageable टैग।
  • health प्रॉपर्टी।
  • team प्रॉपर्टी।
  • patrolRadius प्रॉपर्टी।

स्क्रिप्ट और लॉजिक इस डेटा का उपयोग निर्णय लेने के लिए कर सकते हैं।

एक damage सिस्टम उन entities को खोज सकता है जिनमें Damageable टैग हो। एक दुश्मन स्क्रिप्ट patrolRadius पढ़ सकता है यह तय करने के लिए कि दुश्मन कितनी दूर घूम सकता है।

Properties और टैग आपको गेमप्ले का मतलब किसी entity से जोड़ने देते हैं बिना हर छोटी जानकारी के लिए विशेष component की आवश्यकता के।

टैग्स को क्वेरी करना प्रॉपर्टीज़ से तेज़ होता है, इसलिए वे बेहतर हैं जैसे कि किसी entity को जो damage ले सकता है या जो दुश्मन है, उसकी पहचान करने के लिए। लेकिन टैग्स में कोई मान नहीं होता। प्रॉपर्टी क्वेरी में धीमी होती है, लेकिन आप मान जोड़ सकते हैं। कोडिंग के संदर्भ में, entity properties वास्तव में Python डिक्शनरीज़ हैं।

Entity Template Preview

कुछ entities Entity Templates के इंस्टेंस होते हैं। उदाहरण के लिए, जो Player आप डिफ़ॉल्ट नए Cave प्रोजेक्ट में पाएंगे, वह इस टेम्पलेट का एक इंस्टेंस है:

image.png

Template इंस्टेंस सीन ग्राफ में Cave के टेम्पलेट रंग के साथ अलग दिखाए जाते हैं। यह आपको बताने में मदद करता है कि entity एक पुन: उपयोग योग्य टेम्पलेट एसेट से आई है।

जब कोई entity टेम्पलेट इंस्टेंस होता है:

  • इसके आंतरिक बच्चे टेम्प्लेट के अंतर्गत आते हैं।
  • रखी गई इंस्टेंस सीन के अंतर्गत आती है।
  • टेम्प्लेट संरचना को टेम्प्लेट एसेट खोलकर संपादित किया जाता है।
  • जब लोकल वैल्यूज को प्रॉपर्टीज़ के रूप में एक्सपोज़ किया जाता है तो उन्हें अभी भी समायोजित किया जा सकता है।

अगला पाठ Entity Templates को और विस्तार से समझाता है।

The Entity Mental Model

एक entity को एक छोटे कंटेनर की तरह सोचें:

  • नाम आपको इसे समझने में मदद करता है।
  • ID Cave को इसे ट्रैक करने में मदद करता है।
  • सक्रिय स्थिति नियंत्रित करती है कि क्या यह भाग लेता है।
  • पैरेंट नियंत्रित करता है कि यह कहां आता है।
  • कंपोनेंट्स निर्धारित करते हैं कि यह क्या करता है।
  • प्रॉपर्टीज़ और टैग्स अतिरिक्त गेमप्ले डेटा बताते हैं।

यही Cave में सीन बिल्डिंग का मूल है।

एक बार जब entities समझ में आने लगते हैं, तो Scene Graph केवल ऑब्जेक्ट्स की सूची से कहीं अधिक हो जाता है। यह आपके गेम वर्ल्ड की संरचना बन जाता है।