टाइल टाइल / इलाके कार्यान्वयन पड़ोसी टाइल की अलग-अलग ऊंचाइयों के साथ


10

एहोय!

मैं टाइल मानचित्र के बारे में कुछ जानकारी की तलाश कर रहा हूं, या बल्कि, एक विशिष्ट प्रकार के टाइल मानचित्र को क्या कहा जाता है।

मुझे रोलरकोस्टर टाइकून, या गेम की ट्रांसपोर्ट टाइकून श्रृंखला में उपयोग किए जाने वाले कार्यान्वयन के प्रकार में दिलचस्पी है और वेक्टर फ़ील्ड इलाक़े और ऊंचाई के नक्शे इलाके में देख रहे हैं, लेकिन मुझे यकीन नहीं है कि वे जो मैं देख रहा हूं उसके लिए उपयुक्त हैं विकसित करना।

यह किसी भी सभ्य जानकारी को खोजने के लिए एक संघर्ष रहा है क्योंकि ज्यादातर लोग इसे एक आइसोमेट्रिक टाइल मानचित्र के रूप में संदर्भित करते हैं, लेकिन मैं एक निश्चित ऑर्थोग्राफ़िक परिप्रेक्ष्य के साथ 3 डी में कुछ बनाने के लिए देख रहा हूं। मैं समझता हूं कि टाइल मानचित्र के अंतर्निहित भंडारण का इससे कोई लेना-देना नहीं है, लेकिन मैं पुराने स्कूल पोकेमॉन / ज़ेल्डा गेम्स की तरह 2 डी टाइल का नक्शा बनाने की तलाश में नहीं हूं, इसमें शामिल करने की क्षमता के साथ डायब्लो की रेखाओं के साथ और भी बहुत कुछ है। ओवरहैंडिंग चट्टानों और ढलान वाले इलाके।

मैं सिर्फ यह जानने की कोशिश कर रहा हूं कि संसाधनों को खोजने के लिए Google और स्टैकओवरफ्लो को खोजने के लिए सही तरीके से मुझे यह तय करने में मदद करनी चाहिए कि किस रास्ते पर आगे बढ़ना है।

अब तक मैं एक VBO में संग्रहीत ऊँचाई / y घटक का उपयोग किए बिना एक बुनियादी टाइल मानचित्र को मांस करने में कामयाब रहा और वायरफ्रेम के रूप में प्रस्तुत किया गया। यह अब तक ठीक लग रहा है, लेकिन मैं कल्पना करता हूं कि जब मैं एक पड़ोसी टाइल को प्रभावित किए बिना चट्टानों और ढलानों को बनाने के लिए एक ही शीर्ष पर हेरफेर करने की कोशिश कर रहा हूं, तो मैं समस्याओं का सामना करूंगा।

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

अगर किसी ने मेरे लिए इस पर कुछ प्रकाश डाला जा सकता है, कृपया मदद काफी सराहना की जाएगी :)

अपडेट करें

मैंने आगे स्पष्टीकरण के लिए एक छवि शामिल की है कि मैं क्या हासिल करना चाहता हूं:

2.5D टाइल नक्शा

छवि कैसे झुकी हुई (ऊँचाई) आइसोमेट्रिक टाइल बनाने के लिए उधार ली गई है

यह छवि दिखाती है कि मैं किस प्रकार का इलाक़ा बनाना चाहता / चाहती हूँ, लेकिन इसमें "क्लिफ" या ओवरहैंगिंग इलाक़े शामिल नहीं हैं, जिनकी मुझे मॉडलिंग में दिलचस्पी है। हालाँकि यह उन कुछ अन्य प्रश्नों को उठाता है जिन पर मैंने विचार नहीं किया था;

  • पानी के नीचे दिखाई देने वाली जमीन को शामिल करने के लिए पानी (छवि के ऊपरी बाएं) जैसी 'परतों' को कैसे संभाला जाएगा?
  • नक्शे के "किनारों" को किस तरह से पूरा किया जाएगा ताकि दुनिया को गैर-सपाट इकाई के रूप में चित्रित करने के लिए धरती / कीचड़ का प्रतिपादन किया जाए?
  • क्या इस तरह के इलाके के लिए अंतर्निहित भंडारण का उपयोग मॉडल भौतिकी के लिए किया जा सकता है जैसे कि एक ढलान को पार करने वाले खिलाड़ी की पहाड़ी या गति को गति देने वाली गेंद?

मुझे इस बात का अंदाजा था कि इलाके के प्रत्येक टाइल को 8 कोने के साथ बनाया जा सकता है जहाँ 4 मुख्य कोने वास्तविक टाइल को कवर करते हैं और शेष 4 कोने का उपयोग प्रत्येक टाइल के किनारों / दीवारों को मॉडल करने के लिए किया जाता है। इस कार्यान्वयन के साथ मैं जो दो समस्याएं देख रहा हूं, वह यह है कि ए) दुनिया का नक्शा अनिवार्य रूप से आकार में दोगुना है और बी) यह देखते हुए कि सभी टाइलों में "दीवारें" शामिल नहीं होंगी, कुछ टाइलें अनावश्यक रूप से लंबवत खड़ी होंगी, जिनका उपयोग नहीं किया गया है।

मैं एक इलाके का संपादक बनाना चाहता हूं, जो प्रत्येक टाइल को विकृत करने के साथ-साथ खेल खेलने के दौरान इलाके को बदलने की क्षमता भी शामिल करता है। यह अपने आप में अतिरिक्त प्रश्न प्रस्तुत करता है जैसे; क्या वीबीओ का उपयोग मक्खी पर संशोधित किए जा रहे भूभाग को स्टोर और रेंडर करने के लिए किया जा सकता है, साथ ही, क्या पड़ोसी टाइलों को प्रभावित किए बिना कोने को संशोधित करना संभव है?

मैं इस धारणा के तहत हूं कि मैं या तो चीजों को उलझा रहा हूं या उस विश्लेषण-पक्षाघात में चल रहा हूं, मैं इस समस्या को हल करने के लिए किसी भी कोड को लिखने के लिए उपेक्षा कर रहा हूं कि मैं क्या चाहता हूं।

फिर, मैं वास्तव में इस के साथ सही दिशा में एक ढलान की तलाश कर रहा हूं। क्या कोई विशिष्ट प्रकार का टिलमैप / भू-कार्यान्वयन है जो 3D मानचित्र के लिए मानचित्र मानचित्र संपादक के साथ-साथ गेमप्ले के दौरान भी विकृत हो सकता है या क्या मुझे अपना स्वयं का रोल करना है, इसलिए बोलने के लिए? मैं यहां पहिया को फिर से मजबूत करने की कोशिश नहीं कर रहा हूं, लेकिन मैं दिए गए संसाधनों को खोजने के लिए संघर्ष कर रहा हूं, मुझे यकीन नहीं है कि क्या खोज करना है।

अगर कोई भी किसी भी जानकारी, संसाधन या कोड के स्निपेट्स प्रदान कर सकता है, तो मुझे बहुत खुशी होगी क्योंकि मैं अपने हाथों को गंदा करने के लिए उत्सुक हूं और वर्तमान में मेरे पास मौजूद फ्लैट वायरफ्रेम के अलावा कुछ और उत्पादन करना शुरू कर सकता हूं।

पढ़ने के लिए धन्यवाद!

जवाबों:


2

यदि मैं आप होता तो मैं स्वरों में देखता, विशेष रूप से Minecraft -Type घन प्रतिपादन। ऊंचाई के विपरीत, वे ओवरहैंग, गुफाओं, कई मंजिलों वाली इमारतों आदि को संभाल सकते हैं।

आप अपने इलाके को पूर्णांक के 3D सरणी में संग्रहीत करेंगे, जहाँ संख्याओं को एक निश्चित प्रकार के भू-भाग पर मैप किया जाता है: 0 = वायु, 1 = गंदगी, 2 = पानी, आदि। फिर, रेंडर करने के लिए जाली बनाने के लिए, आप प्रत्येक गैर-खाली स्वर के लिए एक क्यूब के चेहरे बनाएं।

यह ट्यूटोरियल Ogre3D का उपयोग करके C ++ में यह करने का एक शानदार विवरण है। मुझे लगता है कि आपको OpenGL में कुछ अधिक निम्न-स्तर पर जाना होगा।

क्यूब्स बनाने के बाद, आप अपनी छवि में दिखाए गए प्रकार के द्रव इलाके बनाने के लिए किनारों को चिकना करना चाहेंगे। मेरा मानना ​​है कि PolyVox (C ++ में भी) ऐसा करता है; आप उनके कोड पर एक नज़र डाल सकते हैं। मुझे लगता है कि आप मूल रूप से 3 डी में करते हैं कि छवि 2 डी में क्या दर्शाती है: प्रत्येक शीर्ष को रखने के लिए यह जानने के लिए आसपास के क्यूब पदों को औसत करें।

संपादित करें:

  • पानी से सटे क्यूब्स के लिए चेहरे उत्पन्न करें जैसे कि पानी की टाइल खाली थी, और पानी के चेहरे को पारदर्शी रूप से प्रस्तुत करें।
  • "किनारे" पर चेहरे नियमित चेहरे की तरह ही उत्पन्न हो सकते हैं, यदि आप दुनिया के बाहर स्वरों को खाली मानते हैं।
  • भौतिकी: आप शायद अपने भौतिक इंजन को एक स्थिर वस्तु के रूप में प्रदान की गई जाली को खिला सकते हैं।
  • मानचित्र संपादक: आप अंतर्निहित स्वर डेटा को संपादित करना चाहते हैं, न कि मेष को! (मेष को डेटा को मिरर करना चाहिए, इसलिए स्वरों को संपादित करने से आपके मेष में बदलाव होने चाहिए।) यदि आप इससे परिचित नहीं हैं, तो आप मॉडल, व्यू, कंट्रोलर (एमवीसी) देखना चाह सकते हैं।

यदि आपके पास अधिक प्रश्न हैं, तो टिप्पणी छोड़ने के लिए स्वतंत्र महसूस करें। Gamedev.SE में आपका स्वागत है!


यह एक बहुत ही जटिल समाधान है जो अपेक्षाकृत सरल समस्या के लिए है। बहुत सारे खेल वो कर चुके हैं जो ओपी वोक्सल्स की जटिलता के बिना पूछ रहा है।
सीन मिडिलिचच

मैं मानता हूं कि स्वर जटिल हो सकते हैं। क्या आप इन खेलों से जुड़ेंगे? मुझे यह सुनने में दिलचस्पी है कि उन्होंने यह कैसे किया।
वाकीदेव

मैं वोक्सल्स का इस्तेमाल करने के विचार के साथ कर रही थी। क्या यह लागू होने का अर्थ यह होगा कि सभी घन इकाई आयाम के हैं, या एक ही घन को बाहर निकाला जा सकता है? मैं अनुमान लगा रहा हूं कि दुनिया को पानी और अन्य टाइलों के लिए अनुमति देने के लिए परतों में संग्रहित करने की आवश्यकता होगी जो वाई-प्लेन के साथ "ओवरलैप" हो सकती है।
CaptainRedmuff

हां, आमतौर पर स्वर इकाई के आकार के होते हैं। मुझे लगता है कि कोई भी उन्हें हटा सकता है, लेकिन मुझे लगता है कि यह इसे और अधिक जटिल बना देगा। मुझे यकीन नहीं है कि मैं समझ रहा हूं कि आप परतों के बारे में क्या सोचते हैं। क्या आप पानी की टाइलों की चर ऊँचाई की बात कर रहे हैं?
वेकाइडव

उन पंक्तियों के साथ कुछ। मैं एक "मंजिल" को परिभाषित करने के बारे में अधिक सोच रहा था जो कि एक extruded क्यूब हो सकता है, जिसमें फिर विमान द्वारा परिभाषित शीर्ष पर एक पानी का घन होता है, जहां दो चौराहे होते हैं। शायद मैं चीजों को फिर से जटिल कर रहा हूं। मैं स्वरों पर कुछ और पढ़ता हूँ और देखता हूँ कि मुझे कहाँ ले जाता है।
CaptainRedmuff

6

यह: http://30.media.tumblr.com/tumblr_m06qv6OREt1r2qjpao1_500.png कुछ समय पहले किए गए मानचित्र का एक उदाहरण है।

मेरे पास एक XML था जो नक्शे और विभिन्न प्रकार की टाइलों का प्रतिनिधित्व करता था। प्रत्येक प्रकार में कुछ विशेषताएं होंगी:

  • ऊंचाई
  • स्थान
  • मर्ज प्रकार: इस टाइल का किस प्रकार का विलय होता है, ALL(यदि इसे इसके चारों ओर किसी भी टाइल में विलय करना चाहिए), EQUAL(केवल उसी प्रकार की टाइलों के साथ विलय), NONE(कभी विलय नहीं)।
  • मर्ज ऊँचाई: ढलानों के लिए अधिकतम ऊँचाई (ओवरहांग के लिए अच्छा), मान लें कि आप एक टाइल को केवल एक ही ऊँचाई पर टाइल के साथ विलय करना चाहते हैं या 1 का अंतर, मान एक होगा।

मैं तब सभी टाइलें पढ़ता और उन्हें दृश्य में बनाता। पहले केवल स्थिति को ध्यान में रखते हुए। प्रत्येक टाइल को यह जानना होता है कि यह पड़ोसी है इसलिए मुझे दो बार नक्शे से गुजरना पड़ा, एक बार सब कुछ बनाने के लिए, और एक बार फिर प्रत्येक शीर्ष को सही स्थिति में ले जाने के लिए।

हालांकि मेरे मॉडल हेक्स हैं, अवधारणा एक ही है, आपको अपनी टाइल का प्रतिनिधित्व करने के लिए एक क्यूब की आवश्यकता होगी, फिर आप आधार कोने को निम्नतम स्तर पर ले जाएंगे और इसके चारों ओर क्यूब्स के साथ क्यूब के शीर्ष को 'सुचारू' करेंगे। आप यह भी जाँचेंगे कि क्या क्यूब्स के दो पक्ष विलीन हो गए हैं, तो आप उस तरफ को क्यूब से हटा सकते हैं (यदि वे विलय नहीं हुए हैं तो शायद यह एक चट्टान या कुछ है)।

भौतिकी के बारे में, अपने लक्ष्य पर निर्भर करता है। यदि आप रोलरकोस्टर टाइकून की तरह कुछ कर रहे हैं तो आपको वास्तव में उनकी आवश्यकता नहीं है। आप प्रत्येक टाइल के बीच खिलाड़ी की ऊंचाई की जांच कर सकते हैं और चलने की गति तय कर सकते हैं। आप एक वस्तु के लिए भी ऐसा कर सकते हैं जो स्वयं (गेंद की तरह) चलती है, आप टाइल्स (या वर्तमान टाइल कोण) की जांच कर सकते हैं और दिशा / गति तय कर सकते हैं। यदि आपको यथार्थवादी भौतिकी (जैसे गुरुत्वाकर्षण, घर्षण, आदि) की आवश्यकता है, तो आपको एक भौतिकी इंजन का उपयोग करना होगा, और आप इंजन में घन 3 डी प्रतिनिधित्व का उपयोग कर सकते हैं।

परतें भी संभव हैं, लेकिन आपको मिनीक्राफ्ट की तरह कुछ की आवश्यकता होगी (उच्चतम परत में क्यूब्स पर चौरसाई के साथ)। यदि आपको केवल पानी के लिए परतों की आवश्यकता है, तो आप एक टाइल पर "पानी का झरना" रख सकते हैं और आपका कोड इसके चारों ओर प्रत्येक स्थान को भर देगा जो समान ऊंचाई या कम पर है (एक पुनरावर्ती समाधान यहां अच्छी तरह से फिट होगा)।

एक इलाक़ा संपादक भी सरल होगा, यदि आपका कोड पर्याप्त लचीला है, तो आप एकल टाइल (जिसको आप बदल रहे हैं) में परिवर्तन कर सकते हैं या टाइलों की सूची में (यदि आप 'ब्रश' का उपयोग कर रहे हैं) चयन करें और उन्हें स्थानांतरित करें)। गेम पर इलाके को संशोधित करने के लिए समान कोड का उपयोग किया जा सकता है। और हाँ, आप VBO पर कोने बदल सकते हैं, अन्य को प्रभावित किए बिना कोने बदलना भी संभव है (यह भी आप की तरह कोडिंग पर निर्भर करता है)।


इस पर आपके इनपुट के लिए +1 धन्यवाद। आप "पानी के झरने" के संबंध में लेयरिंग के बारे में एक अच्छी बात उठाते हैं जो मैंने विचार करने से पहले नहीं की थी। मैं मक्खी पर VBO को संशोधित करने पर विचार करूँगा कि मुझे पता है कि यह संभव है :)
CaptainRedmuff
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.