การสร้างเกม 2
การออกแบบส่วนปัญญาประดิษฐ์
โดยในส่วนนี้แบ่งออกเป็น
- การค้นหาตำแหน่งตัวผู้เล่นหรือมอนเตอร์ที่อยู่ใกล้ผู้เล่นที่สุด (MinDistances Finding) ใช้ทฤษฎีทางคณิตศาสตร์โดยการหาระยะทางแบบยุคลิด (Euclidean distance)
- Randomized Algorithm ในการสุ่มทิศทางเดิน โดยกำหนดทิศทางบน ล่าง ซ้าย และขวา
- Shortest path เป็นการหาเส้นทางที่สั้นที่สุด แต่ Shortest path อาจไม่ใช่เส้นทางที่สั้นที่สุด เพราะต้องดู อย่างอื่นประกอบด้วยเป็นหลัก ดังนั้นShortest path เป็นการหาเส้นทางที่จะไปที่มีผลรวมขององค์ประกอบในการตัดสินใจน้อยที่สุด
รูปที่ 2.13 แสดงการหาเส้นทางของ Shortest path
- เมื่อผู้เล่นมีการเคลื่อนไหวของตัวละครหรือของตัว AI ให้มีการลดค่าพลังการเคลื่อนไหวของตัวละครหรือ AI ภายใต้เงื่อนไขการนับของเวลา (cool down)
- เมื่อตัวผู้เล่นเข้าใกล้ระยะการค้นหาของมอนเตอร์ มอนเตอร์จะทำการค้นหาตำแหน่งของเราและทำการโจมตี และวิ่งเข้าหาผู้เล่นทันทีที่ ผู้เล่นเข้ามาอยู่ในรัศมีการโจมตี
- เมื่อผู้เล่นออกพ้นจากระยะการค้นหาแล้ว มอนเตอร์จะทำการเดินแบบสุ่ม Random ไปรอบๆ
2.3.1 การประยุกต์ใช้ทฤษฎีที่เกี่ยวข้องในส่วนของปัญญาประดิษฐ์
2.3.1.1 Randomized Algorithm ในการสุ่มการเดินของปัญญาประดิษฐ์
2.3.1.2 A* Algorithm จะประยุกต์มาใช้งานแค่บางส่วนเท่านั้น โดย A* จะใช้สมการดังนี้
Evaluation function f(n) = g(n) + h(n)
g(n) คือ ความรู้ต้นทุนที่มีมาก่อนถึงปัจจุบัน ในตัวปัญญาประดิษฐ์จะนำค่า HP ของตัวผู้เล่น ที่มีมาก่อนถึงเวลา ณ ปัจจุบัน เพื่อพิจารณารูปแบบการเดินให้ฟังก์ชั่น h(n)
h(n) คือ ประเมินโอกาสที่นำไปสู่ความสำเร็จ ในตัวปัญญาประดิษฐ์จะอาศัยการประเมินจากฟังก์ชั่น g(n) แล้วเลือกรูปแบบเพื่อเคลื่อนที่ไปสู่ความสำเร็จ (การโจมตีผู้เล่น)
f(n) คือ ประเมินการต้นทุนเริ่มต้นไปยังเป้าหมาย ในตัวปัญญาประดิษฐ์จะนำการประเมินค่า HP และเลือกรูปแบบการปฎิบัติดังที่กล่าวมา เพื่อไปโจมตีมอนสเตอร์ หรือ ฟื้นฟู HP ผู้เล่น
ระยะทางแบบยุคลิด (อังกฤษ: Euclidean distance, Euclidean metric) คือระยะทางปกติระหว่างจุดสองจุดในแนวเส้นตรง ซึ่งขยายผลมาจากทฤษฎีบทพีทาโกรัส
รูปที่ 2.7 แสดงระยะทางระหว่างจุด 2 จุด
จากนั้นก็นำระยะทางที่หาแต่ละตัวของมอนสเตอร์มาหาค่าน้อยสุด ก็จะได้ระยะทางที่น้อยสุด
2.3.1.3 การตรวจพบการกระทบกัน (Collision Detection) เป็นวิธีการตรวจสอบว่า สไปรต์(Sprite) เคลื่อนที่กระทบกับ สไปรต์ (Sprite) ในทิศทาง บน ล่าง ซ้าย และขวา
ตัวปัญญาประดิษฐ์ในส่วนของมอนเตอร์มีการเคลื่อนไหวสองลักษณะด้วยกันคือ เดินแบบสุ่ม เดินอยู่ในรัศมีพื้นที่ จากนั้นเมื่อเกิดการชนตัวผู้เล่นกับรัศมี AI หรือรายละเอียดในฉากทิศทางเดิน ตัว AI จะทำการเช็คกันชนและโจมตีผู้เล่น โดยการเดินแบบสุ่มจะทำการเดินสุ่มก็ต่อเมื่อโจมตีผู้เล่นแล้ว ผู้เล่นออกนอกระยะการชนกันของรัศมี ก็จะทำการเดินสุ่มในแผนที่ทันที
การออกแบบส่วนปัญญาประดิษฐ์
โดยในส่วนนี้แบ่งออกเป็น
- การค้นหาตำแหน่งตัวผู้เล่นหรือมอนเตอร์ที่อยู่ใกล้ผู้เล่นที่สุด (MinDistances Finding) ใช้ทฤษฎีทางคณิตศาสตร์โดยการหาระยะทางแบบยุคลิด (Euclidean distance)
- Randomized Algorithm ในการสุ่มทิศทางเดิน โดยกำหนดทิศทางบน ล่าง ซ้าย และขวา
- Shortest path เป็นการหาเส้นทางที่สั้นที่สุด แต่ Shortest path อาจไม่ใช่เส้นทางที่สั้นที่สุด เพราะต้องดู อย่างอื่นประกอบด้วยเป็นหลัก ดังนั้นShortest path เป็นการหาเส้นทางที่จะไปที่มีผลรวมขององค์ประกอบในการตัดสินใจน้อยที่สุด
รูปที่ 2.13 แสดงการหาเส้นทางของ Shortest path
- เมื่อผู้เล่นมีการเคลื่อนไหวของตัวละครหรือของตัว AI ให้มีการลดค่าพลังการเคลื่อนไหวของตัวละครหรือ AI ภายใต้เงื่อนไขการนับของเวลา (cool down)
- เมื่อตัวผู้เล่นเข้าใกล้ระยะการค้นหาของมอนเตอร์ มอนเตอร์จะทำการค้นหาตำแหน่งของเราและทำการโจมตี และวิ่งเข้าหาผู้เล่นทันทีที่ ผู้เล่นเข้ามาอยู่ในรัศมีการโจมตี
- เมื่อผู้เล่นออกพ้นจากระยะการค้นหาแล้ว มอนเตอร์จะทำการเดินแบบสุ่ม Random ไปรอบๆ
2.3.1 การประยุกต์ใช้ทฤษฎีที่เกี่ยวข้องในส่วนของปัญญาประดิษฐ์
2.3.1.1 Randomized Algorithm ในการสุ่มการเดินของปัญญาประดิษฐ์
2.3.1.2 A* Algorithm จะประยุกต์มาใช้งานแค่บางส่วนเท่านั้น โดย A* จะใช้สมการดังนี้
Evaluation function f(n) = g(n) + h(n)
g(n) คือ ความรู้ต้นทุนที่มีมาก่อนถึงปัจจุบัน ในตัวปัญญาประดิษฐ์จะนำค่า HP ของตัวผู้เล่น ที่มีมาก่อนถึงเวลา ณ ปัจจุบัน เพื่อพิจารณารูปแบบการเดินให้ฟังก์ชั่น h(n)
h(n) คือ ประเมินโอกาสที่นำไปสู่ความสำเร็จ ในตัวปัญญาประดิษฐ์จะอาศัยการประเมินจากฟังก์ชั่น g(n) แล้วเลือกรูปแบบเพื่อเคลื่อนที่ไปสู่ความสำเร็จ (การโจมตีผู้เล่น)
f(n) คือ ประเมินการต้นทุนเริ่มต้นไปยังเป้าหมาย ในตัวปัญญาประดิษฐ์จะนำการประเมินค่า HP และเลือกรูปแบบการปฎิบัติดังที่กล่าวมา เพื่อไปโจมตีมอนสเตอร์ หรือ ฟื้นฟู HP ผู้เล่น
ระยะทางแบบยุคลิด (อังกฤษ: Euclidean distance, Euclidean metric) คือระยะทางปกติระหว่างจุดสองจุดในแนวเส้นตรง ซึ่งขยายผลมาจากทฤษฎีบทพีทาโกรัส
รูปที่ 2.7 แสดงระยะทางระหว่างจุด 2 จุด
จากนั้นก็นำระยะทางที่หาแต่ละตัวของมอนสเตอร์มาหาค่าน้อยสุด ก็จะได้ระยะทางที่น้อยสุด
2.3.1.3 การตรวจพบการกระทบกัน (Collision Detection) เป็นวิธีการตรวจสอบว่า สไปรต์(Sprite) เคลื่อนที่กระทบกับ สไปรต์ (Sprite) ในทิศทาง บน ล่าง ซ้าย และขวา
ตัวปัญญาประดิษฐ์ในส่วนของมอนเตอร์มีการเคลื่อนไหวสองลักษณะด้วยกันคือ เดินแบบสุ่ม เดินอยู่ในรัศมีพื้นที่ จากนั้นเมื่อเกิดการชนตัวผู้เล่นกับรัศมี AI หรือรายละเอียดในฉากทิศทางเดิน ตัว AI จะทำการเช็คกันชนและโจมตีผู้เล่น โดยการเดินแบบสุ่มจะทำการเดินสุ่มก็ต่อเมื่อโจมตีผู้เล่นแล้ว ผู้เล่นออกนอกระยะการชนกันของรัศมี ก็จะทำการเดินสุ่มในแผนที่ทันที