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

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

6
การควบคุม AI สำหรับเรือที่มีโมเดลฟิสิกส์
ฉันกำลังมองหาแนวคิดที่จะใช้งานสิ่งต่อไปนี้ในพื้นที่ 2D น่าเสียดายที่ฉันยังไม่ค่อยรู้เกี่ยวกับ AI / การค้นหาเส้นทาง / การควบคุมอัตโนมัติ สมมติว่าเรือลำนี้สามารถเคลื่อนที่ได้อย่างอิสระ แต่มันมีมวลและโมเมนตัม นอกจากนี้กองกำลังภายนอกอาจส่งผลกระทบต่อมัน (การระเบิด ฯลฯ ) ผู้เล่นสามารถกำหนดเป้าหมายสำหรับเรือได้ทุกเวลาและควรถึงจุดนั้นและหยุด หากไม่มีฟิสิกส์นี่จะง่ายเพียงแค่ชี้ไปที่ทิศทางและไป แต่วิธีจัดการกับโมเมนตัมที่มีอยู่แล้วหยุดตรงจุด? ฉันไม่ต้องการแก้ไขตำแหน่งของเรือโดยตรง แก้ไข: เพื่อให้ชัดเจนคณิตศาสตร์ที่เกี่ยวข้องกับฟิสิกส์ของตัวเรือเองไม่ใช่ปัญหา

7
ฉันจะทำให้ตัวแทน A * หลีกเลี่ยงตัวแทนอื่น ๆ ได้อย่างไร
ฉันใช้อัลกอริทึม A * หลายเอเจนต์บนแผนที่ย่อย ตัวแทนเคลื่อนไหวในแกน X และ Y เท่านั้น ฉันหลีกเลี่ยงการชนกันระหว่างพวกเขาโดยการตรวจสอบที่อื่น ๆ เมื่อคำนวณเส้นทาง มันทำงานได้ดียกเว้นสถานการณ์ที่ตัวแทนต้องผ่านไทล์เดียวกันจากทิศทางที่แตกต่างกัน ในสถานการณ์เช่นนี้ทางออกที่ดีที่สุดคือให้ตัวแทนหนึ่งรอให้ตัวแทนผ่าน: นอกจากนี้หากไม่มีทางเดินตอนเหนือเส้นทางเดินก็จะล้มเหลว ฉันจะใช้อัลกอริทึมดังกล่าวได้อย่างไร

3
การหาเส้นทางไดนามิกแบบเรียลไทม์?
ขณะนี้ฉันกำลังทำการวิจัยการบอกกล่าวและการจำลองของฉันมีดังต่อไปนี้: ฉันมีฉาก 3 มิติที่มีจุดเริ่มต้นและจุดสิ้นสุดแสดงฉันสามารถสร้างตาข่ายนำทางจุดและรูปหลายเหลี่ยมเพื่อช่วยในการหาเส้นทาง ฉันได้ลองอัลกอริทึม A * และตัวแปรบางตัวแล้วพวกมันก็ทำงานได้อย่างสมบูรณ์ อย่างไรก็ตามตอนนี้ฉันสนใจการหาเส้นทางแบบไดนามิกมากขึ้น ตัวอย่างเช่นในขณะที่ค้นหาเส้นทางจากจุด A ไปยังจุด B หากมีสิ่งกีดขวางใหม่ปรากฏขึ้นมาทันทีฉันต้องการให้อัลกอริทึมของฉันสามารถวางแผนเส้นทางใหม่ได้ทันทีและไม่เริ่มค้นหาจากศูนย์อีกครั้ง ฉันได้อ่านอัลกอริทึม D * แล้วและสงสัยว่าสิ่งนี้จะเหมาะสมกับสิ่งที่ฉันต้องการหรือสิ่งนี้ดูเหมือนว่าเกินความเป็นจริงหรือไม่ ดังนั้นคำถามของฉันคือ: อัลกอริธึมที่ดีที่สุดสำหรับ Real Time Dynamic Pathfinding? หรือเทคนิคใดบ้างที่ฉันสามารถใช้แทนกันได้

4
กริดแบบเหลี่ยมหรือเลขฐานหกจะดีกว่าสำหรับการหาเส้นทางหรือไม่
มีความแตกต่างอย่างมีนัยสำคัญระหว่างการใช้ตารางหรือตารางหกเหลี่ยมสำหรับพื้นที่ที่ค้นหาโดยอัลกอริทึมการค้นหาเส้นทาง กล่าวอีกนัยหนึ่งคือจัตุรัสหรือหกเหลี่ยมดีกว่าและถ้าเป็นเช่นนั้น
17 ai  path-finding 

7
วางไข่หน่วยในโลกที่ทำโดยเสียง Perlin?
มีปัญหาบางอย่างที่ฉันเจอในเกมที่ใช้เสียงรบกวนของ Perlin ดูภาพหน้าจอที่แนบมาด้านล่าง พื้นที่สีขาวที่คุณเห็นนั้นเป็นผนังและพื้นที่สีดำสามารถเดินได้ สามเหลี่ยมที่อยู่ตรงกลางคือผู้เล่น ฉันใช้ฟิสิกส์ในเกมนี้โดยวาดลงบนพื้นผิว (พิกเซลสีขาวหรือสีดำ) แล้วนำมันมาจากซีพียู อย่างไรก็ตามตอนนี้ฉันยืนอยู่กับปัญหาที่แตกต่างกันในมือ ฉันต้องการหน่วย (หรือครีปสิ่งที่คุณเรียกพวกเขา) เพื่อวางไข่อย่างต่อเนื่องที่ขอบของหน้าจอ ประเด็นที่นี่คือในเกมสุดท้ายจะมี "หมอกแห่งสงคราม" ที่ไม่อนุญาตให้ผู้เล่นมองเห็นได้ไกล ฉันคิดว่าฉันสามารถสแกนพิกเซลที่ขอบของหน้าจอและดูว่าพื้นผิวฟิสิกส์ของพวกเขาเป็นสีดำหรือไม่จากนั้นจะวางไข่แบบสุ่มที่นั่น อย่างไรก็ตามถ้าคุณลองดูภาพหน้าจอที่สองมี (ที่มุมบนซ้าย) ตัวอย่างที่ฉันไม่ต้องการให้ครีพวางไข่ (เนื่องจากพวกเขาไม่สามารถเข้าถึงผู้เล่นได้จากที่นั่น) . เป็นไปได้ไหมที่ GPU จะกำหนดจุดกำเนิดของสิ่งเหล่านี้ให้ฉันหรือวิธีอื่น? ฉันคิดเกี่ยวกับการทำเวกเตอร์ระหว่างจุดที่เสนอที่ขอบของหน้าจอและผู้เล่นจากนั้นติดตามมันทุกๆ 10 voxels และดูว่ากำแพงชนกันหรือไม่ก่อนที่จะวางไข่ที่หน่วยหนึ่ง อย่างไรก็ตามโซลูชันที่เสนอข้างต้นอาจมี CPU มากเกินไป ข้อเสนอแนะเกี่ยวกับเรื่องนี้? หมายเหตุ 1 สำหรับยูนิตที่วางไข่ฉันไม่ต้องการใช้รูปแบบการค้นหาแบบใดเพื่อหลีกเลี่ยงการชนกันของกำแพงเนื่องจากยูนิตเหล่านี้วิ่งไปทางเครื่องเล่น ดังนั้นหน่วยจะต้องวางไข่ที่ขอบของหน้าจอในสถานที่ที่เดินเป็นเส้นตรงเข้าหาผู้เล่นจะไม่ชนกับกำแพงใด ๆ
16 xna  path-finding  hlsl  gpgpu 

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

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

6
ทำให้ AI ใช้เส้นทางที่แตกต่างกัน
ฉันมีเกม 2d จากบนลงล่างที่ AI วางไข่ที่ขอบแผนที่และวิ่งไปที่กึ่งกลาง ฉันใช้ A * และ node mesh เพื่อทำ pathfinding ตอนนี้ AI จะวางไข่ที่จุดหนึ่งบนขอบของแผนที่และใช้เส้นทางเดียวกันซึ่งเป็นเส้นทางที่สั้นที่สุดไปยังศูนย์กลาง ตอนนี้ฉันต้องการให้พวกเขาประหลาดใจและน่าสนใจยิ่งขึ้นและใช้เส้นทางที่แตกต่างกัน ฉันสามารถคิดได้ทันทีถึงสองแนวคิดในการทำสิ่งนี้ แต่อยากรู้ว่ามีวิธีอื่นหรือวิธีที่ดีกว่าที่ผู้คนมักจะใช้หรือไม่? เมื่อศัตรูคนหนึ่งวางไข่และสร้างเส้นทางไปยังศูนย์กลางให้เพิ่มค่าใช้จ่ายของโหนดทั้งหมดบนเส้นทางนั้นชั่วคราวจากนั้นค่อยๆลดพวกมันกลับลงเมื่อเวลาผ่านไป จากนั้น AI ของศัตรูที่วางไข่ในภายหลังจะถูกบังคับให้ใช้เส้นทางที่กว้างขึ้น วิธีการข้างต้นจะนำไปสู่ ​​AI เพียงแค่ใช้เส้นทางที่กว้างขึ้นและกว้างขึ้นและยังสามารถคาดเดาได้มาก ดังนั้นฉันคิดว่าฉันจะแนะนำโหนดเป้าหมายระดับกลางจำนวนหนึ่งรอบแผนที่ เมื่อ AI วางไข่พวกเขาสุ่มเลือกหนึ่งในเป้าหมายระดับกลางและมุ่งหน้าไปที่นั่นก่อนที่จะมุ่งหน้าไปที่กึ่งกลางของแผนที่ การรวมสิ่งนี้เข้ากับวิธีการข้างต้นในการเพิ่มต้นทุนอาจจะดูค่อนข้างดี? วิธีใดที่ผู้คนพบว่าทำงานได้ดีที่สุดในการทำให้ AI เปลี่ยนเส้นทางที่พวกเขาใช้ดูน่าเชื่อถือและน่าประหลาดใจ

9
อัลกอริทึมเส้นทางแบบไดนามิกสำหรับเกมป้องกันหอ
ฉันสร้าง Tower Defense และฉันต้องการอัลกอริทึม pathing ที่ดีสำหรับมัน ฉันคิดเกี่ยวกับ Dijkstra แต่ฉันต้องการสิ่งที่สามารถเปลี่ยนแปลงได้ จะต้องสามารถอัปเดตตัวเองได้เมื่อขอบหนึ่งถูกลบหรือเพิ่มโดยไม่มีการคำนวณใหม่ทั้งหมด ฉันกำลังเขียนโปรแกรมใน C # ถ้ามันช่วย

4
A * อัลกอริทึมสำหรับ Tactical RPGs?
ฉันยุ่งกับการเขียน RPG ยุทธวิธีที่แย่จริงๆใน C ++ จนถึงขณะนี้ผมมีแผนที่กระเบื้อง 2D และเพียงแค่มีสายต่อ A * ขั้นตอนวิธีการทำงานใน pseudocode ในตามวิกิพีเดีย แต่เกม RPG ทางยุทธวิธีตัวจริงไม่เพียงแค่ค้นหาเส้นทางที่ดีที่สุดบนระนาบราบแล้วเคลื่อนที่ไปที่นั่น โดยทั่วไปจะมีช่วงการเคลื่อนที่ที่ จำกัด และต้องปีนขึ้นหรือลง หากคุณเคยเล่น Final Fantasy Tactics สิ่งเหล่านี้จะได้รับผลกระทบจากสถิติการย้ายและกระโดด นี่คือที่ฉันหลงทาง ฉันจะเปลี่ยนอัลกอริทึม A * เพื่อให้ค้นหาเส้นทางที่ดีที่สุดไปยังเป้าหมายได้อย่างไร แต่เส้นทางนั้นมีความยาวไทล์จำนวนมากเท่านั้น ฉันควรคำนึงถึงความแตกต่างสูงและกระโดดสถิติเข้าบัญชีอย่างไร ฉันจะใช้การกระโดดข้ามช่องว่างได้อย่างไร ถ้ามันช่วยได้ตอนนี้แผนที่ของฉันแสดงด้วยวัตถุเวกเตอร์ของไทล์ ไทล์แต่ละอันจะมีพอยน์เตอร์ไปที่ไทล์เหนือ, ใต้, ตะวันออกและตะวันตกซึ่งถูกตั้งค่าเป็น nullptr หากไม่มีไทล์อยู่ที่นั่นเช่นตามขอบของแผนที่หรือหากไทล์ถูกตั้งค่าเป็นไม่สามารถผ่านได้

6
วิธีทำให้ตัวละครของฉันลื่นไหลขณะเดินบนเส้นทาง (รายการพิกัด)
ฉันมีรายการที่มีพิกัด - เอาต์พุตจากอัลกอริทึม A * และฉันต้องการทำให้ตัวละครของฉันเดินตามเส้นทางนี้อย่างราบรื่นด้วยการหมุน ดังนั้นฉันมีบางอย่างเช่นAและฉันต้องการได้C ฉันจะทำสิ่งนี้ได้อย่างไร แก้ไข หากต้องการทำให้ตัวเองชัดเจนยิ่งขึ้น: ฉันสนใจที่จะหมุนอย่างราบรื่นมากขึ้นเนื่องจากฉันรู้วิธีการเดินจากโหนดหนึ่งไปอีกโหนดหนึ่ง แก้ไข หลายคนพบว่ามีประโยชน์ (ฉันด้วย) ฉันกำลังโพสต์ลิงก์ไปยัง "ธรรมชาติของรหัส" ของ Daniel Shiffman ซึ่งเขาพูดถึงปัญหา AI (และฟิสิกส์) ของเกมเช่นปัญหาพฤติกรรมพวงมาลัยhttp://natureofcode.com/book/chapter- 6 อิสระตัวแทน / # chapter06_section8
15 c#  unity  path-finding 

1
A * การค้นหาพา ธ ตาข่าย
ดังนั้นฉันจึงได้สร้างเกมจาวา 2D ขึ้นมาในกรอบนี้เรียกว่าGreenfootและฉันได้ทำงานกับ AI สำหรับผู้ชายที่คุณจะต่อสู้ ฉันต้องการให้พวกเขาสามารถย้ายไปทั่วโลกได้อย่างสมจริงดังนั้นฉันจึงรู้ทันทีว่าในอีกสองสามอย่างฉันจะต้องมีการค้นพบบางอย่าง ฉันสร้างต้นแบบ A * สองชุด อันแรกเป็นแบบกริดและจากนั้นฉันก็สร้างมันขึ้นมาที่ทำงานร่วมกับจุดอ้างอิงดังนั้นตอนนี้ฉันต้องหาวิธีที่จะได้รับจาก "แผนที่" 2d ของอุปสรรค / สิ่งปลูกสร้างไปยังกราฟของโหนดที่ฉันสามารถสร้างเส้นทางได้ การค้นหาเส้นทางที่แท้จริงดูเหมือนจะดีเพียงแค่รายการเปิดและปิดของฉันเท่านั้นที่สามารถใช้โครงสร้างข้อมูลที่มีประสิทธิภาพมากขึ้น แต่ฉันจะไปที่นั้นถ้าต้องการ ผมตั้งใจที่จะใช้ตาข่ายเดินเรือด้วยเหตุผลทั้งหมดออกเรียงรายอยู่ในนี้โพสต์บน ai-blog.net อย่างไรก็ตามปัญหาที่ฉันเผชิญคือสิ่งที่ A * คิดว่าเป็นเส้นทางที่สั้นที่สุดจากจุดกึ่งกลาง / ขอบของรูปหลายเหลี่ยมไม่จำเป็นต้องเป็นเส้นทางที่สั้นที่สุดหากคุณเดินทางผ่านส่วนใดส่วนหนึ่งของโหนด เพื่อให้ได้ความคิดที่ดีที่คุณสามารถดูคำถามที่ผมถามใน StackOverflow ฉันได้รับคำตอบที่ดีเกี่ยวกับกราฟการมองเห็น ฉันได้ซื้อหนังสือเล่มนี้มาแล้ว ( Computational Geometry: Algorithms และ Applications ) และอ่านเพิ่มเติมในหัวข้ออย่างไรก็ตามฉันยังคงชอบการนำทางแบบเครือข่าย (ดู "การจัดการความซับซ้อน " จากหมายเหตุของ Amit เกี่ยวกับการหาเส้นทาง ) (ตามบันทึกด้านข้างบางทีฉันอาจใช้ Theta * เพื่อแปลง waypoints …

1
อัลกอริทึม Simple Stupid Funnel ทำงานอย่างไร
การทำงานกับอัลกอริทึมช่องทางที่แสดงใน Digesting Duckฉันไม่แน่ใจว่าการตรวจจับของช่องทางทำงานอย่างไร บางคนสามารถอธิบายวิธีการให้ฉันอย่างชัดเจนหรือแนะนำวิธีการอื่นในการตรวจหาช่องทางและหากด้านข้างของช่องทางซ้อนทับกัน

3
การค้นหาเส้นทางที่สั้นที่สุดบนตารางหกเหลี่ยม
ฉันกำลังเขียนเกมเทิร์นเบสที่มีองค์ประกอบการจำลอง ภารกิจหนึ่งที่ฉันต้องวางสายในขณะนี้คือการค้นหาเส้นทาง สิ่งที่ฉันต้องการจะทำคือขยับนักผจญภัย AI หนึ่งไทล์ให้ใกล้กับเป้าหมายโดยใช้ x, y และเป้าหมายของเขา x, y ในการพยายามคิดออกเองฉันสามารถกำหนด 4 ทิศทางไม่มีปัญหาโดยใช้ dx = currentX - targetY dy = currentY - targetY แต่ฉันไม่แน่ใจว่าจะกำหนดเส้นทางใดใน 6 ทิศทางที่เป็นเส้นทางที่ "ดีที่สุด" หรือ "สั้นที่สุด" ตัวอย่างเช่นวิธีการตั้งค่าในปัจจุบันฉันใช้ East, West, NE, NW, SE, SW แต่เพื่อไปที่ไทล์ NE ที่ฉันย้าย East และ NW แทนที่จะเป็นแค่การเคลื่อนย้าย NW ฉันหวังว่านี่ไม่ใช่การท่องเที่ยวทั้งหมด เพียงแค่ลิงค์หรือสองเพื่อเริ่มฉันจะดี ข้อมูลส่วนใหญ่ที่ฉันพบคือการวาดเส้นตารางและระบบการประสานงานแปลก ๆ ที่จำเป็น

2
ฉันจะใช้การก่อตัวกลุ่มใน 3D RTS ได้อย่างไร
ฉันจัดการเพื่อให้การค้นหาเส้นทางทำงานสำหรับหน่วยเดียวและฉันจัดการเพื่อหลีกเลี่ยงการชนกันของตัวแทนตัวแทน แต่ตอนนี้ฉันต้องสามารถส่งกลุ่มตัวแทนไปยังสถานที่บางแห่ง นี่คือการตั้งค่าของฉันจนถึงตอนนี้: การหาตำแหน่ง Waypoint ระยะห่างต่ำสุดระหว่างสองโหนดนั้นใหญ่กว่ารัศมีวงรอบขอบเขตที่ใหญ่ที่สุดเพียงเล็กน้อยที่ได้รับอนุญาตสำหรับเอเจนต์ ตัวแทนหลีกเลี่ยงการชนกับตัวแทนอื่น ๆ โดยทำพฤติกรรมการขับขี่บางอย่างที่ฉันใช้บนเส้นทางที่ชัดเจน ดังนั้นตอนนี้ฉันต้องส่งตัวแทนของฉันที่ไหนสักแห่งในกลุ่ม ฉันได้อ่านบางข้อความที่บอกว่าวิธีหนึ่งในการทำนั้นคือการสร้างหัวหน้ากลุ่มและให้หน่วยอื่น ๆ ลดตำแหน่งลง แต่ปัญหาคือถ้าการก่อตัวของกลุ่มไม่สามารถทำได้? เช่นคุณต้องการสร้างสี่เหลี่ยมผืนผ้า แต่ที่ตำแหน่งเป้าหมายมีโครงสร้างใกล้เคียงซึ่งป้องกันไม่ให้คุณสร้างการตั้งค่าสี่เหลี่ยมผืนผ้า
14 path-finding  rts 

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