ลองนึกภาพ shoot-em-up ง่ายๆสิ่งที่เราทุกคนรู้:
คุณคือผู้เล่น (สีเขียว) การเคลื่อนไหวของคุณถูก จำกัด ไว้ที่X
แกน ศัตรูของเรา (หรือศัตรู) อยู่ที่ด้านบนของหน้าจอการเคลื่อนไหวของเขายัง จำกัด อยู่ที่X
แกน ผู้เล่นยิงกระสุน (สีเหลือง) ใส่ศัตรู
ฉันต้องการติดตั้ง AI สำหรับศัตรูที่ควรหลีกเลี่ยงกระสุนผู้เล่น ความคิดแรกของฉันคือการแบ่งหน้าจอเป็นส่วนที่แยกและกำหนดน้ำหนักให้กับพวกเขา:
มีสองน้ำหนัก: "กระสุน - น้ำหนัก" (สีเทา) เป็นอันตรายที่กำหนดโดยกระสุน กระสุนยิ่งเข้าใกล้ศัตรูก็จะยิ่ง "กระสุน - น้ำหนัก" สูงขึ้น ( 0..1
ซึ่ง 1 คืออันตรายสูงสุด) ช่องทางที่ไม่มีกระสุนมีน้ำหนักเป็น 0 น้ำหนักที่สองคือ "ระยะทาง - น้ำหนัก" (สีเขียวมะนาว) สำหรับทุกช่องทางฉันเพิ่ม0.2
ค่าความเคลื่อนไหว (ค่านี้ค่อนข้างจะสุ่มเองในตอนนี้และสามารถปรับแต่งได้)
จากนั้นฉันก็เพิ่มน้ำหนัก (สีขาว) และไปที่เลนด้วยน้ำหนักต่ำสุด (สีแดง) แต่วิธีการนี้มีข้อบกพร่องที่เห็นได้ชัดเพราะมันสามารถพลาด minima ท้องถิ่นได้ง่ายเพราะสถานที่ที่เหมาะสมที่สุดที่จะไปคือระหว่างกระสุนสองนัดที่เข้ามา (ดังที่แสดงด้วยลูกศรสีขาว)
ดังนั้นนี่คือสิ่งที่ฉันกำลังมองหา:
- ควรหาทางผ่านกระสุนพายุแม้ในขณะที่ไม่มีสถานที่ที่ไม่ก่อให้เกิดการคุกคามของกระสุน
- ศัตรูสามารถหลบกระสุนได้โดยเลือกวิธีที่ดีที่สุด (หรือเกือบจะดีที่สุด)
- อัลกอริทึมควรจะสามารถคำนึงถึงความเร็วในการเคลื่อนที่ของกระสุนได้
- วิธีปรับแต่งอัลกอริทึมเพื่อให้สามารถใช้ระดับความยากต่างกันได้ (ใบ้กับศัตรูที่ฉลาดหลักแหลม)
- อัลกอริทึมควรอนุญาตให้มีเป้าหมายที่แตกต่างกันเนื่องจากศัตรูไม่เพียง แต่ต้องการหลบเลี่ยงกระสุนเท่านั้นเขาควรจะสามารถยิงผู้เล่นได้ นั่นหมายถึงตำแหน่งที่ศัตรูสามารถยิงใส่ผู้เล่นได้เมื่ออยู่ในแนวหลบกระสุน
ดังนั้นคุณจะแก้ไขปัญหานี้ได้อย่างไร ตรงกันข้ามกับเกมประเภทอื่น ๆ นี้ฉันต้องการมีศัตรูเพียงไม่กี่คน แต่มีทักษะ "มาก" แทนที่จะเป็นศัตรูที่โง่เง่า