टाइल-आधारित गेम में निर्बाध टाइलों का पता लगाना


9

मैं एक 2 डी टाइल-आधारित गेम पर काम कर रहा हूं, और अभी मैं काम करने के लिए छाया की मात्रा के 2d बराबर पाने की कोशिश कर रहा हूं। मुझे उन सतहों को खोजने में परेशानी हो रही है जिन्हें छाया डालना चाहिए। खेल के किसी भी बिंदु से, मुझे या तो निर्लिप्त चेहरे, या पूरे टाइल को खोजने की आवश्यकता है।

मेरा प्रश्न यह है कि मैं इन टाइलों / किनारों को उतनी ही तेजी से कैसे पा सकता हूँ जितना एक बिंदु दिया गया है?

दृष्टि और प्रभावित टाइलों की सामान्य रेखा दिखाती छवि

जवाबों:


12

रोज़गुलिक समुदाय में उस समस्या के प्रति बहुत काम किया गया है।

यहां एक पृष्ठ है जो कुछ एल्गोरिदम और पुस्तकालयों को सूचीबद्ध करता है जो आपकी मदद कर सकते हैं। http://roguebasin.roguelikedevelopment.org/index.php?title=Field_of_Vision


2

यह एक पूर्ण उत्तर नहीं है, लेकिन उम्मीद है कि यह मदद करेगा।

क्या आपका नक्शा / टाइल सेट स्थिर या गतिशील है? यदि यह स्थिर है, तो मैं आपको ऑफ़लाइन प्रसंस्करण करने के लिए दृढ़ता से प्रोत्साहित करूंगा और उस तरह से जितना संभव हो उतना पूर्ववर्ती कर सकता हूं। आप इसे किसी भी तरह से कर सकते हैं, जिसे आप चाहते हैं (रीकास्टिंग या कुछ और होशियार), लेकिन आप वास्तव में बहुत तेजी से बनाने के बारे में परवाह नहीं करते हैं क्योंकि यह आपके स्तर को "सेंकना" करते समय ऑफ़लाइन हो जाएगा। आप या तो सटीक पूर्व-संकेत कर सकते हैं कि कौन-सी टाइलें प्रत्येक स्थान से दिखाई देती हैं, या कुछ प्रकार के बड़े क्षेत्र बनाते हैं और सभी टाइलें संभवतः प्रत्येक क्षेत्र से दिखाई देती हैं।

फिर, रनटाइम पर, दृश्यमान टाइलों के लिए क्वेरी बहुत सीधी और बहुत तेज होनी चाहिए।

बेशक, यदि आप गतिशील रूप से बनाए गए स्तर पर हैं, तो यह बिल्कुल लागू नहीं होता है :-)


1

आप देख सकते हैं कि मैंने यहां C # roguelike के लिए इसे कैसे लागू किया । कोड अत्यधिक अनुकूलित नहीं है, लेकिन यह मेरे लिए काफी तेज़ प्रतीत होता है और (अधिक महत्वपूर्ण बात) पढ़ने में काफी आसान होना चाहिए। यह मूल रूप से एक साधारण छाया कास्टिंग एल्गोरिथ्म कर रहा है जो एक समय में एक ओकटेंट का काम करता है।


0

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


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

यह फ्लैश में आसानी से संभव हो सकता है, हो सकता है कि आपकी पाशविक शक्ति को अनुकूलित किया जा सके। इसके अलावा, सामान्य तौर पर, आपको इसे हर फ्रेम में अपडेट नहीं करना होता है, इसलिए आप अगली स्थिति को फ्रेम के एक जोड़े पर प्रबल कर सकते हैं
काज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.