पाथफाइंडिंग के लिए वर्ग या हेक्स ग्रिड बेहतर हैं?


17

क्या एल्गोरिथ्म खोजने वाले मार्ग द्वारा खोजे गए क्षेत्र के लिए एक वर्ग या हेक्सागोनल ग्रिड का उपयोग करने के बीच कोई महत्वपूर्ण अंतर है। दूसरे शब्दों में, वर्ग या षट्कोणीय बेहतर है, और यदि ऐसा है तो क्यों।


4
मिथिंक्स आपको अपने गेमप्ले में जो भी सूट करे;) का उपयोग करना चाहिए;
एंड्रयू रसेल 14

जवाबों:


19

वर्ग बनाम हेक्स ग्रिड का उपयोग करने का निर्णय लेने के लिए मुख्य विचार एआई कार्यान्वयन में आसानी नहीं होना चाहिए - चौड़ाई-प्रथम और गहराई-पहले खोज एल्गोरिदम बहुत ही समान हैं चाहे आपके पास किस तरह का ग्राफ़ हो।

बल्कि, यह एक गेमप्ले मुद्दा है जिसे गेम डिजाइनरों द्वारा विचार किया जाना चाहिए। बड़े पैमाने पर बाजार में स्क्वायर ग्रिड अधिक सुलभ हैं (हेक्स बोर्ड "geeky" दिखते हैं), और ऊपर / नीचे / बाएं / दाएं नियंत्रण की दुनिया में यह एक यूआई दृष्टिकोण से हेक्स की तुलना में वर्गों में नेविगेट करने के लिए बहुत अधिक सहज है। स्क्वायर ग्रिड भी आंदोलन को थोड़ा अधिक प्रतिबंधित करते हैं; ऑर्थोगोनल आंदोलन (और विकर्ण नहीं) मानकर, एक हेक्स ग्रिड में 3 चालों की तुलना में एक-वर्ग बाधा के चारों ओर चलने के लिए 4 चालें चलती हैं। एक प्रोग्रामिंग दृष्टिकोण से, हेक्स को लागू करना थोड़ा आसान है लेकिन यह खोज एल्गोरिदम के बारे में उतना नहीं है जितना कि एक वर्ग ग्रिड एक दो आयामी सरणी के बराबर है, लेकिन एक हेक्स ग्रिड वास्तव में एक मानक डेटा संरचना के लिए मैप नहीं करता है।

वर्ग ग्रिड के नीचे की ओर यह है कि आंदोलन कभी सही नहीं लगता है। तिरछे चलते हुए, sqrt (2) आंदोलन बिंदुओं को लेना चाहिए, लेकिन व्यवहार में यह या तो 1 आंदोलन है (जिससे यह महसूस होता है कि विकर्णों पर चलना तेज़ है और शायद ही कभी orthogonally चलने का कारण है) या यह 2 आंदोलन है (जो विकर्ण आंदोलन को बहुत धीमा महसूस करता है। )। हेक्स ग्रिड के साथ, आंदोलन की दूरी बहुत अधिक सहज है, क्योंकि यह एक हेक्स से दूसरे तक हमेशा एक ही दूरी होती है, चाहे आप कोई भी रास्ता ले लें।


4
+1। यह एक डिजाइन निर्णय है, एआई निर्णय नहीं। यदि आप हेक्सागोनल ग्रिड चाहते हैं, तो www-cs-students.stanford.edu/~amitp/game-programming/grids/… जैसे ऑफसेट-स्क्वायर ग्रिड आकस्मिक खिलाड़ियों के लिए कम भयभीत हो सकते हैं, और यह गणितीय रूप से हेक्सागोन्स के बराबर है। इसके अलावा, यह एक सुविधाजनक इन-मेमोरी प्रतिनिधित्व भी है।

2
+1 वाक्य के लिए "स्क्वायर ग्रिड मास मार्केट में अधिक सुलभ हैं (हेक्स बोर्ड" geeky "दिखते हैं)": D
कोर्नेल किसेल्विकज़

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

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

4
बस एक तरफ, हेक्स को 2-आयामी सरणी में मैप किया जा सकता है। एक वर्ग ग्रिड चित्र, फिर हर भी स्तंभ आधा कदम नीचे स्थानांतरित करें। अब आपको एक ऑफसेट स्क्वायर ग्रिड मिल गया है, जो कि हेक्स ग्रिड के लिए आइसोमॉर्फिक है।
अस्मोर

3

मैं किसी भी तरह से एक एआई विशेषज्ञ नहीं हूं, लेकिन अंतर नगण्य होना चाहिए। स्क्वायर ग्रिड थोड़ा तेज़ हैं (6 के बजाय प्रति नोड 4 कनेक्शन), लेकिन यह वास्तव में एल्गोरिथम रनटाइम में सीमित कारक नहीं है। आप किस एल्गोरिथ्म का उपयोग करने की योजना बना रहे हैं, इस पर निर्भर करता है कि कोड हेक्स ग्रिड के लिए थोड़ा अधिक जटिल हो सकता है, क्योंकि निर्देशांक की गणना करने के लिए यह थोड़ा अधिक जटिल है, और मुझे लगता है कि क्वाडट्री / ऑक्ट्री शॉर्टकट के प्रकार का उपयोग करना कठिन है। अक्सर पाथफाइंडिंग में उपयोग किया जाता है।

लेकिन एक साधारण दुनिया के लिए जैसे टर्न-आधारित-रणनीति गेम स्तर, दोनों लेआउट के बीच का अंतर ज्यादा मायने नहीं रखता; एक वर्ग ग्रिड थोड़ा सरल और तेज होगा।


5
"स्क्वायर ग्रिड थोड़ा तेज़ हैं (6 के बजाय प्रति नोड 4 कनेक्शन)" - जब तक आप विकर्णों के साथ यात्रा नहीं कर सकते हैं, उस स्थिति में यह 8 कनेक्शन बनाम 6 है
इयान स्क्रैबर

टच। तुम बिलकुल ठीक कह रहे हो; बेशक विकर्ण कनेक्शन की संभावना होगी।
ग्रेगरी एवरी-वियर

3

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


0

हेक्सागोन्स पर यह गाइड बहुत बढ़िया है। पाथफाइंडिंग के बारे में एक इंटरेक्टिव उदाहरण है और स्क्वायर पाथफाइंगिंग करने के तरीके के बारे में कुछ जानकारी है।

यदि आप ग्राफ-आधारित पाथफाइंडिंग जैसे A * या Dijkstra के एल्गोरिथ्म या फ्लोयड-वारशॉल का उपयोग कर रहे हैं, तो हेक्स ग्रिड पर पाथफाइंडिंग, वर्ग ग्रिड पर पाथफाइंडिंग से अलग नहीं है।

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