वर्म्स की तरह एक विनाशकारी 2D परिदृश्य के निर्माण में कौन से कदम शामिल होंगे? आदर्श रूप से, इस प्रक्रिया को संभव बनाने के लिए कुछ तरीके क्या हैं?
वर्म्स की तरह एक विनाशकारी 2D परिदृश्य के निर्माण में कौन से कदम शामिल होंगे? आदर्श रूप से, इस प्रक्रिया को संभव बनाने के लिए कुछ तरीके क्या हैं?
जवाबों:
मुझे नहीं पता कि कैसे कीड़े में परिदृश्य बिल्कुल लागू किया गया था, लेकिन मुझे पूरा यकीन है कि उन्होंने परिदृश्य के लिए एक बिटमैप का उपयोग किया (कम से कम श्रृंखला के पुराने खेलों में)।
एक बहुत ही बुनियादी दृष्टिकोण एक बिटमैप छवि (बी / डब्ल्यू) होगी जहां काले पिक्सेल हवा का प्रतिनिधित्व करते हैं और सफेद पिक्सेल जमीन का प्रतिनिधित्व करते हैं । परिदृश्य का विनाश पिक्सेल संचालन का उपयोग करके आसानी से किया जा सकता है। इसलिए यदि कोई रॉकेट जमीन से टकराता है, तो radius = blastRadius
प्रभाव के बिंदु पर एक काले घेरे को पेंट करें ।
फिर आप उस बिटमैप का उपयोग करके अपनी दुनिया को (या उसके एक हिस्से को) रेंडर कर सकते हैं। बेहतर प्रदर्शन के लिए मेरा सुझाव है कि आप इसे इस तरह से लागू करें, जिससे आप "दुनिया" के एक हिस्से को अपडेट / रेंडर कर सकें। उदाहरण के लिए। यदि परिदृश्य के कुछ हिस्से एक रॉकेट द्वारा नष्ट हो जाते हैं, तो प्रभावित क्षेत्रों को फिर से सौंप दें, न कि पूरी दुनिया को।
अपने "टक्कर-मानचित्र" के रूप में एक बी / डब्ल्यू छवि के बजाय, आप एक 24 बिट छवि का उपयोग भी कर सकते हैं, जहां आप प्रति पिक्सेल सतह-सामान्य (x, y) को प्रति पिक्सेल और एक चैनल को वास्तविक "टक्कर" को संग्रहीत करने के लिए उपयोग करते हैं। नक्शा"। हाथ में सतह-सामान्य होने से आपको उछलते हुए हथगोले की गणना करने, या यह निर्धारित करने में मदद मिलेगी कि क्या कोई चरित्र किसी दिए गए दिशा में आगे बढ़ सकता है।
मेरे सिर के ऊपर से एक संभावना:
विनाशकारी "भूमि" की रूपरेखा को संग्रहीत करने के लिए एक वेक्टर ग्राफिक्स पथ प्रतिनिधित्व का उपयोग करें। जब कोई विनाश घटना होती है (उदाहरण के लिए, एक ग्रेनेड बंद हो जाता है), ब्लास्ट क्षेत्र, एक सर्कल के रूप में दर्शाया जाता है, एक बूलियन घटाव ऑपरेशन के माध्यम से भूमि पथ से हटा दिया जाएगा। परिणामी पथ जमीन टकराव का पता लगाने के लिए नए "भूमि" का प्रतिनिधित्व करता है, और संभवतः भूमि को खींचने के लिए एक मुखौटा भी है।
मैंने अवधारणा का एक प्रमाण लिखा है जो विनाशकारी इलाके को संभालने के लिए रचनात्मक ठोस ज्यामिति का उपयोग करता है। मैंने बूलियन ऑपरेशन करने के लिए GLU Tessellator का उपयोग किया। प्रलेखन कैसे, के लिए खोज बताते हैं "CSG नियम समापन के लिए उपयोग करता है" ।
मैंने बॉक्स 2 डी में स्थिर बहुभुज के रूप में टेसेलेटर के त्रिकोण आउटपुट को खिलाया। पीओसी ने काफी अच्छा काम किया। मैं वास्तविक समय में इलाके को मनमाने ढंग से घटाने और जोड़ने में सक्षम था और इलाके में बॉक्स 2 डी के साथ उचित व्यवहार किया जाता रहा। केवल वास्तविक हिचकी यह थी कि GLU टेसलेटर पतित त्रिकोण उत्पन्न कर सकता है जो Box2D को पसंद नहीं है, इसलिए मुझे उन लोगों को हाथ से फ़िल्टर करना पड़ा।
पीओसी में अगला कदम (जो मुझे कभी नहीं मिला) एससीसी एल्गोरिथ्म का उपयोग बूस्ट ग्राफ लाइब्रेरी से यह पता लगाने के लिए किया गया था कि कब इलाके का एक टुकड़ा अलग कर दिया गया था (एक पहाड़ को काट दिया गया था)। गंभीर इलाका अभी भी विनाशकारी होगा लेकिन अब एक गतिशील (गैर-स्थैतिक) Box2D निकाय द्वारा आकृतियों के रूप में संलग्न त्रिकोणों का प्रतिनिधित्व किया जाता है। जब मैंने बूस्ट डॉक्युमेंटेशन में खुदाई शुरू की तो मेरे पास डिजाइन का काम था लेकिन दिलचस्पी खो गई। मैं "योजना" विचार फिर से जब मैं एक झुलसे पृथ्वी / कीड़े खेल किसी दिन बनाते हैं।
उपरोक्त सभी उत्तर सरलतम मामले को लागू करने की बात करते हैं, जैसे कि कीड़े में। यही है, जब प्रभाव का क्षेत्र नष्ट हो जाता है और बाकी सब कुछ अछूता रहता है। क्या आपने विचार किया, कि आपका परिदृश्य अंततः दो में विभाजित हो सकता है? कहते हैं, एक पहाड़ है, और खिलाड़ियों ने एक रॉकेट लांचर के साथ इसके नीचे काट दिया। अब, क्या पहाड़ नहीं गिरना चाहिए? इसके अलावा, परिदृश्य के लिए थोड़ा लोचदार होना स्वाभाविक होगा। वर्म्स के समय (कम से कम जैसा कि मैं उन्हें याद करता हूं, मैंने वर्म्स को नहीं खेला, जैसे, कई साल) कंप्यूटर सही तरीके से ऐसा करने के लिए पर्याप्त मजबूत नहीं थे। लेकिन वे अब हैं।
बेशक, यह पूरी तरह से आपकी परियोजना की महत्वाकांक्षाओं पर निर्भर करता है। लेकिन अगर आप चाहते हैं कि यह वास्तव में भयानक हो, तो शायद आपको भौतिकी इंजन के रूप में बॉक्स 2 डी की कोशिश करनी चाहिए । आप इसके साथ बहुत कुछ कर सकते हैं।
जैसा कि बम्माजैक ने बिटमैप्स कहा। यद्यपि आप 1 बिट पारदर्शिता का उपयोग कर सकते हैं या यदि आपके पास समर्थन नहीं है तो एक भयानक गुलाबी रंग का उपयोग करें जिसे आप अपने खेल में उपयोग नहीं करेंगे।
प्रभाव के बिंदु की गणना सिर्फ पिक्सेल रंग की जाँच की जा सकती है। और जब कोई प्रभाव होता है तो बिटमैप का रंग बदल जाता है (या उसे हटा देता है)।
ब्लास्ट त्रिज्या के रूप में मेरा पहला पड़ाव ब्रेसेनहैम का सर्कल एल्गोरिदम होगा , बहुत तेज़ और कुशल। हालांकि मैं एक वर्ग जैसे किसी चीज़ के साथ पहले डिलीट किया गया था और किनारों को प्राप्त करने के लिए इसे गोल गोल डाल दिया था।