คำถามติดแท็ก path-finding

วิธีการที่ใช้ในการทำแผนที่เส้นทางการเดินทางจากจุดหนึ่งไปยังอีกจุดหนึ่งโดยทั่วไปจะหลีกเลี่ยงสิ่งกีดขวางระหว่างทาง

5
ป้อมปราการ Dwarf ติดตามหน่วยงานมากมายโดยไม่สูญเสียประสิทธิภาพได้อย่างไร
ในป้อมปราการคนแคระคุณสามารถมีคนแคระสัตว์ก๊อบลินและอื่น ๆ หลายร้อยคนในเกมในแต่ละครั้งที่มี AI ที่ซับซ้อนและกิจวัตรการทำเส้นทางเดินของตัวเอง คำถามของฉันคือสิ่งนี้ทำให้เกิดการชะลอตัวที่เห็นได้ชัดอย่างไร คนแคระแต่ละคนวิ่งในเกลียวของมันเองหรือไม่?

7
A * pathfinding ทำงานอย่างไร
ฉันต้องการที่จะเข้าใจในระดับพื้นฐานว่า A * pathfinding ทำงานอย่างไร การใช้รหัสหรือรหัส psuedo ใด ๆ รวมถึงการสร้างภาพข้อมูลจะเป็นประโยชน์

6
Pathfinding สำหรับการหลบหนี
ดังที่คุณทราบว่ามีวิธีแก้ปัญหามากมายเมื่อคุณต้องการค้นหาเส้นทางที่ดีที่สุดในสภาพแวดล้อม 2 มิติซึ่งนำไปสู่จุด A ถึงจุด B แต่ฉันจะคำนวณเส้นทางได้อย่างไรเมื่อวัตถุอยู่ที่จุด A และต้องการหนีจากจุด B อย่างรวดเร็วและไกลที่สุด ข้อมูลพื้นหลังเล็กน้อย: เกมของฉันใช้สภาพแวดล้อมแบบ 2d ซึ่งไม่ได้อิงกับไทล์ แต่มีความแม่นยำของจุดลอยตัว การเคลื่อนไหวเป็นแบบเวกเตอร์ การทำ Pathfinding ทำได้โดยการแบ่งโลกของเกมออกเป็นรูปสี่เหลี่ยมผืนผ้าซึ่งสามารถเดินได้หรือไม่เดินได้และสร้างกราฟออกมาจากมุมของพวกเขา ฉันมีปัญหาการชี้จุดบกพร่องระหว่างจุดที่ทำงานโดยใช้อัลกอริทึม Dijkstras กรณีใช้งานของอัลกอริทึมการหลบหนีคือในบางสถานการณ์นักแสดงในเกมของฉันควรมองว่านักแสดงคนอื่นเป็นอันตรายและหนีไปจากมัน วิธีแก้ปัญหาเล็ก ๆ น้อย ๆ ก็คือการย้ายนักแสดงในเวกเตอร์ในทิศทางที่ตรงข้ามกับการคุกคามจนกว่าจะถึงระยะ "ปลอดภัย" หรือนักแสดงถึงกำแพงที่มันครอบคลุมด้วยความกลัว ปัญหาเกี่ยวกับวิธีการนี้คือนักแสดงจะถูกบล็อกโดยอุปสรรคเล็ก ๆ ที่พวกเขาสามารถหลบเลี่ยงได้ง่าย ตราบใดที่การเคลื่อนที่ไปตามกำแพงจะไม่ทำให้พวกเขาเข้าใกล้การคุกคามที่พวกเขาทำได้ แต่มันจะดูฉลาดขึ้นเมื่อพวกเขาจะหลีกเลี่ยงอุปสรรคในตอนแรก: อีกปัญหาที่ฉันเห็นคือกับจุดจบในเรขาคณิตแผนที่ ในบางสถานการณ์สิ่งมีชีวิตจะต้องเลือกระหว่างเส้นทางที่ทำให้มันหายเร็วขึ้นในตอนนี้ แต่จบลงด้วยจุดจบที่มันจะถูกขังอยู่หรืออีกเส้นทางหนึ่งซึ่งหมายความว่ามันจะไม่ได้อยู่ห่างจากอันตรายในตอนแรก (หรือ ยิ่งใกล้เข้ามาสักหน่อย) แต่ในทางกลับกันก็จะได้รับรางวัลระยะยาวที่มากขึ้นซึ่งในที่สุดมันก็จะทำให้พวกเขาอยู่ห่างออกไปมากขึ้น ดังนั้นผลตอบแทนระยะสั้นของการออกไปอย่างรวดเร็วต้องมีมูลค่าอย่างใดกับผลตอบแทนในระยะยาวของการเดินทางห่างไกล นอกจากนี้ยังมีปัญหาการจัดอันดับอื่นสำหรับสถานการณ์ที่นักแสดงควรยอมรับให้เข้าใกล้ภัยคุกคามเล็กน้อยเพื่อหลีกเลี่ยงภัยคุกคามที่ใหญ่กว่านี้ แต่การเพิกเฉยต่อการคุกคามเล็ก ๆ น้อย ๆ ทั้งหมดก็เป็นเรื่องโง่เช่นกัน (นั่นเป็นสาเหตุที่นักแสดงในภาพนี้ออกไปเพื่อหลีกเลี่ยงการคุกคามเล็กน้อยในพื้นที่ด้านขวาบน): มีวิธีแก้ไขปัญหามาตรฐานสำหรับปัญหานี้หรือไม่?

11
เส้นทางการค้นหาอัลกอริทึมนั้นมีอะไรบ้าง [ปิด]
ฉันต้องการอ่านอัลกอริธึมในการค้นหาเส้นทาง มีสีรองพื้นหรือวัสดุหรือแบบฝึกหัดใด ๆ บนอินเทอร์เน็ตที่จะเป็นการเริ่มต้นที่ดีสำหรับฉัน

7
การหาเส้นทางในเกม RTS ทำงานอย่างไร
[crossposted จาก stackoverflow] ในเกมเช่น Warcraft 3 หรือ Age of Empires วิธีที่ฝ่ายตรงข้าม AI สามารถเคลื่อนไหวเกี่ยวกับแผนที่ดูเหมือนจะไร้ขีด จำกัด แผนที่มีขนาดใหญ่มากและตำแหน่งของผู้เล่นอื่นก็เปลี่ยนแปลงอยู่ตลอดเวลา การค้นหาเส้นทาง AI ในเกมเช่นนี้เป็นอย่างไร วิธีการค้นหากราฟแบบมาตรฐาน (เช่น DFS, BFS หรือ A *) ดูเหมือนเป็นไปไม่ได้ในการตั้งค่า

4
การค้นหาเส้นทางของ Flow Field ทำงานอย่างไร
ผู้บัญชาการทหารสูงสุด 2 มีบางสิ่งที่เรียกว่าการค้นหาเส้นทางของเส้นทางการไหล มันทำงานยังไง? มีบทความบางส่วนที่ฉันสามารถอ่านวิธีการทำงานได้หรือไม่?

12
ฉันจะทำให้ A * เสร็จเร็วขึ้นได้อย่างไรเมื่อปลายทางไม่สามารถใช้ได้
I am making a simple tile-based 2D game, which uses the A* ("A star") pathfinding algorithm. I've got all working right, but I have a performance problem with the search. Simply put, when I click an impassable tile, the algorithm apparently goes through the entire map to find a route …

2
A * มีประสิทธิภาพแม้ในขณะที่อุปสรรคกำลังเคลื่อนที่หรือไม่?
ฉันเพิ่งเริ่มเรียนรู้เกี่ยวกับการค้นหาเส้นทางและได้มองหาอัลกอริทึม A * และข้อกังวลหลักของฉันคือมันเป็นตัวอย่างทั้งหมดที่ฉันได้เห็นแสดงอุปสรรคแบบคงที่มันคำนวณรอบ ถ้าฉันมีอุปสรรคในการเคลื่อนไหวให้พูดตัวละครอื่น ๆ ตัวอย่างเช่นการเคลื่อนที่ไปรอบ ๆ และตัวละครนั้นต้องหาทางไปรอบ ๆ ฉันคิดว่าฉันจะต้องใช้อัลกอริทึมในแต่ละเฟรม แต่ฉันกังวลว่าจะค่อนข้างแพง สำหรับฮาร์ดแวร์ในการประมวลผลแต่ละเฟรมสำหรับนักแสดงเคลื่อนไหวแต่ละคน ดังนั้น A * ยังคงมีประสิทธิภาพเพียงพอที่จะใช้เมื่อใดก็ตามที่มีการเคลื่อนย้ายสิ่งกีดขวางด้วยหรือมีวิธีอื่นในการค้นหาเส้นทางที่จัดการกับสิ่งกีดขวางที่เคลื่อนที่ได้มากกว่า

6
โซลูชั่นมาตรฐานในการค้นหาเส้นทางไปยังเป้าหมายที่กำลังเคลื่อนที่คืออะไร
ฉันกำลังทำงานกับ 2D RTS เช่นเกมพื้นฐาน A * ทำงานได้อย่างสมบูรณ์แบบสำหรับการย้ายหน่วยจากจุด A ไปยังจุด B แต่ตอนนี้ฉันเผชิญกับปัญหาการค้นหาเส้นทางอย่างต่อเนื่องเช่น A การโจมตีวัตถุที่เคลื่อนที่ B เรียก A * ในแต่ละเฟรมเมื่อการเปลี่ยนตำแหน่งของวัตถุ B ดูเหมือนไม่มีประสิทธิภาพ ดังนั้นวิธีมาตรฐานสำหรับปัญหานี้คืออะไร?


4
เป็นระยะทางแมนฮัตตันระยะทางเดียวเมื่อใช้เป็นฟังก์ชั่นแก้ปัญหาหรือไม่?
ฉันมีแผนที่รูปสี่เหลี่ยม อนุญาตให้มีการเคลื่อนไหวในแนวนอนและแนวตั้งเท่านั้น (ไม่มีเส้นทแยงมุม) ราคาการเคลื่อนไหวอยู่เสมอ 1 ฉันกำลังใช้อัลกอริทึม A * บนแผนที่นั้นโดยใช้ระยะทางแมนฮัตตันเป็นฮิวริสติกระยะทาง ฮิวริสติกนี้สอดคล้องกันหรือไม่? ฉันสามารถหลีกเลี่ยงการตรวจสอบg(node)กับโหนดที่อยู่ในชุดปิดได้หรือไม่ แก้ไข: โดยความสอดคล้องฉันหมายถึง monotonic

1
การค้นหาอัลกอริธึม
ฉันโพสต์คำถามนี้ใน stack overflow ก่อน แต่ฉันคิดว่าไม่มีใครสนใจวิดีโอเกมที่นั่น ... เส้นทางการค้นหาอัลกอริทึมในเกมทุกประเภทมีอะไรบ้าง (ในทุกประเภทที่มีการเคลื่อนไหวของตัวละครอยู่ดี) Dijkstra ใช้ของเยอะใช่มั้ย ฉันคิดว่าไม่เพราะมันไม่ได้ทำตามขั้นตอนเพื่อไปไหนสักแห่งใช่ไหม? ถ้าฉันเข้าใจถูกต้องมันจะกำหนดเฉพาะวัตถุที่ใกล้ที่สุด ฉันไม่ได้ต้องการโค้ดอะไรเลย เพียงแค่ทำการวิจัยบางอย่างแม้ว่าคุณจะวาง pseudocode หรืออะไรบางอย่างที่จะดี (ฉันสามารถเข้าใจ Java และ C ++) โดยทั่วไปฉันกำลังมองหาภาพรวมอย่างรวดเร็วของการค้นหาเส้นทางโดยทั่วไป ฉันรู้ว่า A * เป็นเหมือนอัลกอริทึมที่ใช้ในเกม 2D นั่นยอดเยี่ยมและทั้งหมด แต่เกมแบบ 2D ที่ไม่อิงกับกริดเป็นอย่างไร สิ่งต่าง ๆ เช่น Age of Empires หรือ Link's Awakening ไม่มีช่องว่างสี่เหลี่ยมที่แตกต่างกันในการนำทางดังนั้นพวกเขาจะทำอย่างไร เกม 3 มิติทำอะไรได้บ้าง ฉันได้อ่านสิ่งนี้แล้วhttp://www.ai-blog.net/archives/000152.htmlซึ่งฉันได้ยินว่าเป็นผู้มีอำนาจยิ่งใหญ่ในเรื่องนี้ แต่มันก็ไม่ได้อธิบายวิธีการจริงๆเมื่อมีการตั้งเครือข่าย การค้นหาเส้นทางเสร็จสิ้น หากใช้ A * …

3
การทำให้ยุ่งเหยิงกับล็อคและคีย์?
ผมทำงานในเกมกับแผนที่ที่มีลักษณะคล้ายกับการล็อคและคีย์ปริศนา AI ต้องการนำทางไปยังเป้าหมายที่อาจอยู่หลังประตูสีแดงที่ถูกล็อค แต่กุญแจสีแดงอาจอยู่ด้านหลังประตูสีน้ำเงินที่ถูกล็อคและอื่น ๆ ... ปริศนานี้คล้ายกับดันเจี้ยนสไตล์เซลด้าเหมือนภาพนี้: ในการไปถึงเป้าหมายคุณจะต้องเอาชนะบอสซึ่งต้องผ่านหลุมซึ่งต้องใช้การรวบรวมขนนกซึ่งต้องใช้การรวบรวมคีย์ คุกใต้ดินเซลด้ามีแนวโน้มที่จะเป็นเส้นตรง อย่างไรก็ตามฉันต้องแก้ปัญหาในกรณีทั่วไป ดังนั้น: เป้าหมายอาจต้องใช้หนึ่งในชุดของคีย์ ดังนั้นคุณอาจจำเป็นต้องได้รับทั้งคีย์สีแดงหรือสีน้ำเงิน หรืออาจมีประตูที่ปลดล็อคได้ทางไกล! อาจมีประตูและกุญแจหลายชนิด เช่นอาจมีปุ่มสีแดงหลายปุ่มในแผนที่และการรวบรวมปุ่มหนึ่งจะอนุญาตให้เข้าถึงประตูสีแดงทั้งหมด เป้าหมายไม่สามารถเข้าถึงได้เนื่องจากปุ่มขวาอยู่ด้านหลังประตูที่ถูกล็อค ฉันจะแสดงเส้นทางบนแผนที่ดังกล่าวได้อย่างไร กราฟการค้นหามีลักษณะอย่างไร หมายเหตุ: จุดสุดท้ายเกี่ยวกับการตรวจจับเป้าหมายที่ไม่สามารถเข้าถึงได้เป็นสิ่งสำคัญ ตัวอย่างเช่น A * นั้นไม่มีประสิทธิภาพอย่างมากหากไม่สามารถเข้าถึงเป้าหมายได้ ฉันต้องการจัดการกับสิ่งนี้อย่างมีประสิทธิภาพ สมมติว่า AI รู้ว่าทุกอย่างอยู่บนแผนที่

3
เหตุใดเกมเครือข่ายบางเกมจึงใช้การแก้ไขและบางเกมใช้การกำหนดเส้นทางสำหรับการเคลื่อนที่ระยะไกล
นี่เป็นคำถามเปิดเล็กน้อย แต่ฉันต้องการเห็นใครบางคนให้เหตุผลที่ดีสำหรับทั้งคู่ สำหรับตัวอย่างรวดเร็วของทั้งสอง: แบบจำลองการแก้ไข คิดว่ารูปแบบ Valve ที่ลูกค้าได้รับการอัปเดตตำแหน่งบ่อยครั้งและรีโมตอัพเดตตำแหน่งโดยใช้การแก้ไขข้อมูลนี้ เส้นทางการค้นพบ ในรูปแบบนี้คิดว่าผู้ใช้ส่งปลายทางและทุกคนหาเส้นทางไป เกมประเภทใดที่เหมาะสมกับแต่ละเกมและเมื่อใดควรใช้เกมแต่ละเกม

3
ทำให้ศัตรู flocking หลายตัวล้อมรอบสิ่งกีดขวางได้อย่างมีประสิทธิภาพ
ฉันกำลังพยายามปรับปรุงการหาเส้นทางสำหรับศัตรูในเกมของฉัน ตอนนี้พวกเขาเพียงแค่ขยับไปยังตำแหน่งที่แน่นอนของผู้เล่นโดยการคำนวณมุมระหว่างพวกเขากับผู้เล่นและเคลื่อนที่ไปในทิศทางนั้น ฉันยังมีอัลกอริทึม flocking ที่ป้องกันศัตรูจากการซ้อนทับกันดังนั้นพวกเขาจะรวมตัวกันเป็นกลุ่มแทนที่จะจับกลุ่มกัน อย่างไรก็ตามตอนนี้ฉันได้เพิ่มแผนที่แบบเรียงต่อกันแล้วฉันต้องการศัตรูเพื่อให้สามารถเดินไปรอบ ๆ สิ่งกีดขวางและกำแพงได้เช่นกัน ในขั้นต้นฉันพยายามเพิ่มค่าการแยกลงในไทล์ "ไม่สามารถเดินได้" เพื่อที่อัลกอริทึม flocking จะพิจารณาผนังและอุปสรรคเป็นวัตถุที่จะย้ายออกไป ฉันยังไม่ทราบว่าเป็นไปได้หรือไม่เพราะการทดสอบครั้งแรกของฉันแสดงให้เห็นว่าศัตรูชนกำแพงที่มองไม่เห็นซึ่งไม่มีกระเบื้องที่ไม่สามารถเดินได้ แต่ด้วยเหตุผลบางอย่างพวกเขาชนและเริ่มพูด ฉันสงสัยว่ามันอาจจะทำงานหนักเกินไปหรือไม่ในการคำนวณเส้นทางไปยังผู้เล่นโดยใช้ A * จากนั้นใช้อัลกอริทึม flocking เพื่อป้องกันการจับกันเป็นก้อน เดิมทีเกมของฉันจะเป็นเกมยิงตามคลื่น แต่ฉันตัดสินใจที่จะทำให้เกมนี้อยู่ในระดับที่เส้นเลือดของ Hotline Miami ดังนั้นจึงเป็นไปได้ที่ฉันจะมีศัตรูน้อยลง พวกเขาแข็งแกร่งขึ้น นี่เป็นทางออกที่ทำงานได้หรือไม่? ฉันใช้ Java กับ Slick2D เป็นเอ็นจิ้นเกมของฉัน หรือมีวิธีแก้ปัญหา / อัลกอริทึมที่ดีกว่าที่จัดการกับปัญหาทั้งสองนี้ได้หรือไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.