งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

A* Pathfinding and other path generator. Dr.Yodthong Rodkaew.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "A* Pathfinding and other path generator. Dr.Yodthong Rodkaew."— ใบสำเนางานนำเสนอ:

1 A* Pathfinding and other path generator. Dr.Yodthong Rodkaew

2 Game Map โดยทั่วไป ฉากในเกมจะมีสองแบบ คือ 1. แบบคงที่ ( ในเกมสมัยเก่าๆ = เกม flash ใน ยุคนี้ ) 2. แบบเลื่อนฉากได้

3 Game Map แผนที่ในเกมจะแบ่งเป็น 2 ประเภทหลักๆ คือ แผนที่แบบบล็อก (TileMap)- ใช้การ จัดเรียงของบล็อกต่อๆ กัน เพื่อสร้างเป็น แผนที่ แผนที่แบบอิสระ (VectorMap) - ใช้รูปหรือ ขอบเขต polygon เป็นสิ่งกำหนดขนาดแผน ที่

4 tilesettilemap tilemap = array 2x2

5

6 Game Map การเคลื่อนที่ในฉากแผนที่ของเกม เป็นสิ่งที่เป็น พื้นฐานที่ทุกเกมจะต้องมี ประกอบด้วย 1. คุณสมบัติของพื้นที่ เป็นส่วนที่กำหนดว่าพื้นที่นั้น มีลักษณะอย่างไร ตัว unit สามารถเคลื่อนที่ได้ หรือไม่ (area property) 2. สิ่งกีดขวางและขอบเขตภายในแผนที่ (collision & boundry) 3. ฟังก์ชั่นการสร้างเส้นทางเคลื่อนที่ระหว่างจุดที่ กำหนด โดยหลบหลีกสิ่งกีดขวาง (pathfinding & collision prevention)

7 Movement in Game Map เมื่อ unit มีการเคลื่อนที่ในฉากแผน ที่ของเกม ข้อมูลที่ unit จะต้อง มีคือ 1. ตำแหน่งของ unit อ้างอิงจาก แผนที่ 2. ทิศทางในการเคลื่อนที่ 3. ความเร็วในการเคลื่อนที่ 4. จุดหมายปลายทาง อาจมีข้อมูลอื่นๆ เพิ่มเติมได้ เช่น เมื่อ unit เดินตาม unit อื่นๆ position (x,y,z) direction(x,y,z) velocity(x,y,z) target(x,y,z)

8 The Search Area เพื่อความเข้าใจง่ายขึ้นจะใช้ tile map สมมติ ให้ unit อยู่ที่ตำแหน่ง A และต้องการ เคลื่อนที่จาก A ไปยังตำแหน่ง B A B O O = obstacle = สิ่งกีดขวาง, อุปสรรค, ยุ่งยาก unit สามารถเคลื่อนที่ได้ 8 ทิศทาง

9 A* Search แต่ละบล็อกของ tile map จะเรียกว่า node -- การ ค้นหาเริ่มดังนี้ 1) เริ่มจาก node A และใส่ลงไปใน "open list" ข้อมูลที่เก็บใน open list จะเป็นข้อมูลที่อาจเป็น เส้นทางที่ใช้ในการเคลื่อนที่ 2) มองหา ตำแหน่ง node ใกล้เคียง ที่อยู่ติดกับ จุดเริ่มต้น node A ทั้งหมด ที่สามารถเดินไปได้ ถ้ามี node ไหนที่เดินไปได้ให้ใส่ใน open list ด้วย และ กำหนดให้ A เป็น "parent node" ของตำแหน่งที่ เพิ่มเข้าไปใหม่ ( การกำหนด parent node จะช่วยใน การ trace เส้นทางเดิน ) 3) นำเอา node A ออกจาก open list และ ใส่ใน "closed list" แทน ซึ่งจะเป็นตัวบอกว่าไม่ จำเป็นต้องค้นหาในตำแหน่งนี้อีก

10 Path Scoring การให้คะแนนของแต่ละเส้นทาง ( จะมีลักษณะคล้ายกับ Best- FS) ตามสมการ ดังนี้ F = G + H G = ค่าสะสมของการเคลื่อนที่ (the movement cost) นับจาก จุดเริ่มต้น (node A) มาถึง node ปัจจุบัน H = ค่าประมาณการเคลื่อนที่ (the estimated movement cost) นับจาก node ปัจจุบัน ไปยัง node ที่เป็นเป้าหมาย (the final destination, point B) ซึ่งค่า H นี้จะเป็นค่าฮิวริสติก (Heuristic) ใช้การคาดเดา เนื่องจากไม่ทราบค่าที่แท้จริงว่า ใกล้เป้าหมายเท่าใด หรือต้องอ้อมไปยังเป้าหมายเป็น ระยะทางเท่าใด การเลือกเส้นทาง จะเลือก node ใน open list ที่มีค่า F ต่ำที่สุด

11 ตัวอย่างใช้การประมาณ ฮิวริสติกแบบ Manhattan Method H = 10*(abs(currentX-targetX) + abs(currentY-targetY)) การเคลื่อนที่ แนวเส้นตรงใช้ค่า 10 แนวเฉียงใช้ค่า 14 จากตัวอย่าง ประมาณค่า F ในแต่ละ node ได้ ตามรูปที่ 3 เลือก F ที่มีค่าน้อยที่สุด = 40 G H F

12 4) เลือก node ที่มีค่า F น้อยที่สุด ( สมมติชื่อ C) และนำออกจาก open list และใส่ใน closed list 5) มองหา ตำแหน่ง node ใกล้เคียงกับ node C ทั้งหมด ที่สามารถเดินไปได้ ที่อยู่ติดกับ node C ที่ ได้เลือกไว้ ถ้ามี node ไหนที่เดินไปได้ให้ใส่ใน open list ด้วย และให้ node C เป็น "parent node" ของตำแหน่งที่เพิ่มเข้าไปใหม่ 6) ถ้า node ที่เพิ่มเติมอยู่ใน open list อยู่แล้ว ให้ดู ว่าอันไหนดีกว่า ให้เลือกใช้ node G ที่มีค่าน้อย ที่สุด – จากนั้นคำนวณหาค่า F ใหม่

13 G H F

14 G H F 7) ทำซ้ำข้อ 4-6 จนกว่า target node จะอยู่ใน close list

15 G H F Path ที่ได้ คือเส้นทางที่ย้อนกลับมาจากข้อมูลของ parent node

16 สรุป: 1) เพิ่ม "node เริ่มต้น" ลงใน open list -- ให้ "node เริ่มต้น" = current node 2) วนซ้ำ: 2.1) มองหา ตำแหน่ง node ใกล้เคียงที่สามารถเดินไปได้ ที่อยู่ใกล้ current node 2.2) ถ้ามี node ไหนที่เดินไปได้ให้ใส่ใน open list ด้วย และใส่ข้อมูล parent node ด้วย 2.3) คำนวณหาค่า F,G,H ของ node ที่เพิ่มมาใหม่ใน open list 2.4) เลือก node F ที่มี ค่าน้อยที่สุด ที่อยู่ใน open list 2.5) นำออกจาก open list ใส่ใน close list และ set ให้เป็น current node 3) หยุดเมื่อ: a) "node เป้าหมาย" อยู่ใน close list = หาทางเจอ b) ไม่มี node ใน open list = ไม่มีเส้นทาง 4) เก็บเส้นทางที่หาได้ โดยย้อนกลับจาก "node เป้าหมาย" ไปยัง "node เริ่มต้น"

17 Notes on Implementation Other Units (collision avoidance) ตำแหน่งอื่นๆ = เคลื่อนที่ เข้าไปไม่ได้ หรือ เคลื่อนที่แบบหลบๆ เวลาเดินสวนกัน Variable Terrain Cost การเคลื่อนที่ในภูมิประเทศแต่ละส่วนมี ค่าแตกต่างกัน – Influence mapping มีตำแหน่งที่ทำให้เพิ่ม / ลดค่า เพื่อหลอกล่อให้ AI สร้างเส้นทางตามที่ผู้ออกแบบ ต้องการ ( แก้ปัญหา AI เดินหลงเข้าไปใน maze) Handling Unexplore Areas มีส่วนที่ยังไม่ได้สำรวจ แต่ AI ก็ จะสามารถเดินได้เหมือนรู้ทางหลบได้ -- ให้คิดว่าส่วนที่ยัง ไม่ได้สำรวจสามารถเดินได้ทั้งหมดไว้ก่อน Smoother Paths เส้นทางที่ได้จาก A* จะไม่นุ่มนวล หรือ เคลื่อนที่เป็นสี่เหลี่ยม แก้ปัญหาโดยการเพิ่มตัวแปรในสูตรให้ การเคลื่อนที่ดูดีขึ้น

18 Notes on Implementation Non-square Search Areas ในแผนที่เกมคำนวณหาจาก ตาราง สี่หลี่ยม แต่ถ้าให้สมจริง unit ควรจะเดินได้ทุกทิศทาง – อาจ แก้ปัญหาโดยคำนวณตารางสี่หลี่ยมให้เล็กลง หรือเพิ่ม waypoint แบบใน vector map Some Speed tips: –Smaller Map –Fewer Unit –Never do path finding for more than a few units at a time –use larger square –pre-calculating / pre-processing / caching –optimize open list ( no sort, using binary heaps )

19 Terrain navigation on vectormap start point target point

20 A* on mesh add each node on trangle edge find path using node as A* start point target point node on triangle edge = A* node

21 Waypoint System Waypoints must add by hand. if not see target, find and move to the nearest waypoint if see target, move to target start point target point waypoint

22 Pre-defined path+Waypoint System Paths + Waypoints must add by hand. if not see target, find and move to the nearest waypoint if see target, move to target start point target point waypoint

23 Bounce and Bound เด้งดึ๋ง = random walk เมื่อชนกับขอบ start point target point


ดาวน์โหลด ppt A* Pathfinding and other path generator. Dr.Yodthong Rodkaew.

งานนำเสนอที่คล้ายกัน


Ads by Google