क्या एल्गोरिथ्म खोजने वाले मार्ग द्वारा खोजे गए क्षेत्र के लिए एक वर्ग या हेक्सागोनल ग्रिड का उपयोग करने के बीच कोई महत्वपूर्ण अंतर है। दूसरे शब्दों में, वर्ग या षट्कोणीय बेहतर है, और यदि ऐसा है तो क्यों।
क्या एल्गोरिथ्म खोजने वाले मार्ग द्वारा खोजे गए क्षेत्र के लिए एक वर्ग या हेक्सागोनल ग्रिड का उपयोग करने के बीच कोई महत्वपूर्ण अंतर है। दूसरे शब्दों में, वर्ग या षट्कोणीय बेहतर है, और यदि ऐसा है तो क्यों।
जवाबों:
वर्ग बनाम हेक्स ग्रिड का उपयोग करने का निर्णय लेने के लिए मुख्य विचार एआई कार्यान्वयन में आसानी नहीं होना चाहिए - चौड़ाई-प्रथम और गहराई-पहले खोज एल्गोरिदम बहुत ही समान हैं चाहे आपके पास किस तरह का ग्राफ़ हो।
बल्कि, यह एक गेमप्ले मुद्दा है जिसे गेम डिजाइनरों द्वारा विचार किया जाना चाहिए। बड़े पैमाने पर बाजार में स्क्वायर ग्रिड अधिक सुलभ हैं (हेक्स बोर्ड "geeky" दिखते हैं), और ऊपर / नीचे / बाएं / दाएं नियंत्रण की दुनिया में यह एक यूआई दृष्टिकोण से हेक्स की तुलना में वर्गों में नेविगेट करने के लिए बहुत अधिक सहज है। स्क्वायर ग्रिड भी आंदोलन को थोड़ा अधिक प्रतिबंधित करते हैं; ऑर्थोगोनल आंदोलन (और विकर्ण नहीं) मानकर, एक हेक्स ग्रिड में 3 चालों की तुलना में एक-वर्ग बाधा के चारों ओर चलने के लिए 4 चालें चलती हैं। एक प्रोग्रामिंग दृष्टिकोण से, हेक्स को लागू करना थोड़ा आसान है लेकिन यह खोज एल्गोरिदम के बारे में उतना नहीं है जितना कि एक वर्ग ग्रिड एक दो आयामी सरणी के बराबर है, लेकिन एक हेक्स ग्रिड वास्तव में एक मानक डेटा संरचना के लिए मैप नहीं करता है।
वर्ग ग्रिड के नीचे की ओर यह है कि आंदोलन कभी सही नहीं लगता है। तिरछे चलते हुए, sqrt (2) आंदोलन बिंदुओं को लेना चाहिए, लेकिन व्यवहार में यह या तो 1 आंदोलन है (जिससे यह महसूस होता है कि विकर्णों पर चलना तेज़ है और शायद ही कभी orthogonally चलने का कारण है) या यह 2 आंदोलन है (जो विकर्ण आंदोलन को बहुत धीमा महसूस करता है। )। हेक्स ग्रिड के साथ, आंदोलन की दूरी बहुत अधिक सहज है, क्योंकि यह एक हेक्स से दूसरे तक हमेशा एक ही दूरी होती है, चाहे आप कोई भी रास्ता ले लें।
मैं किसी भी तरह से एक एआई विशेषज्ञ नहीं हूं, लेकिन अंतर नगण्य होना चाहिए। स्क्वायर ग्रिड थोड़ा तेज़ हैं (6 के बजाय प्रति नोड 4 कनेक्शन), लेकिन यह वास्तव में एल्गोरिथम रनटाइम में सीमित कारक नहीं है। आप किस एल्गोरिथ्म का उपयोग करने की योजना बना रहे हैं, इस पर निर्भर करता है कि कोड हेक्स ग्रिड के लिए थोड़ा अधिक जटिल हो सकता है, क्योंकि निर्देशांक की गणना करने के लिए यह थोड़ा अधिक जटिल है, और मुझे लगता है कि क्वाडट्री / ऑक्ट्री शॉर्टकट के प्रकार का उपयोग करना कठिन है। अक्सर पाथफाइंडिंग में उपयोग किया जाता है।
लेकिन एक साधारण दुनिया के लिए जैसे टर्न-आधारित-रणनीति गेम स्तर, दोनों लेआउट के बीच का अंतर ज्यादा मायने नहीं रखता; एक वर्ग ग्रिड थोड़ा सरल और तेज होगा।
हेक्सागोन्स पर यह गाइड बहुत बढ़िया है। पाथफाइंडिंग के बारे में एक इंटरेक्टिव उदाहरण है और स्क्वायर पाथफाइंगिंग करने के तरीके के बारे में कुछ जानकारी है।
यदि आप ग्राफ-आधारित पाथफाइंडिंग जैसे A * या Dijkstra के एल्गोरिथ्म या फ्लोयड-वारशॉल का उपयोग कर रहे हैं, तो हेक्स ग्रिड पर पाथफाइंडिंग, वर्ग ग्रिड पर पाथफाइंडिंग से अलग नहीं है।
- पड़ोसियों। नमूना कोड जो मैं पाथफाइंडिंग ट्यूटोरियल में प्रदान करता हूं, वह किसी स्थान के पड़ोसियों को प्राप्त करने के लिए graph.neighbors कहता है। पड़ोसी अनुभाग में इसके लिए फ़ंक्शन का उपयोग करें। उन पड़ोसियों को फ़िल्टर करें जो अगम्य हैं।
- अनुमानी। ए * के लिए नमूना कोड एक हेयुरिस्टिक फ़ंक्शन का उपयोग करता है जो दो स्थानों के बीच दूरी देता है। आंदोलन की लागत से मेल खाने के लिए दूरी सूत्र का उपयोग करें। उदाहरण के लिए यदि आपकी मूवमेंट लागत 5 प्रति हेक्स है, तो दूरी को 5 से गुणा करें।