การคำนวณวิถีวิถีรอบวงโคจรก่อนยิง


10

ฉันกำลังสร้างเกมด้วย Unity3D มันเป็นโคลนสงคราม Gravity ทั้งผู้เล่นและป้อมปราการ AI ยิงขีปนาวุธใส่กัน (ให้มุมและตัวแปรพลัง) พยายามที่จะไม่ชนขีปนาวุธบนดาวเคราะห์ แต่นี่คือคำถามของฉัน: ฉันจะทำให้ AI คำนวณพลังงานและมุมได้อย่างไรก่อนที่จะยิงขีปนาวุธของเขาโดยพิจารณาแรงโน้มถ่วงของดาวเคราะห์ด้วย?

คำตอบ:


5

ระบบเช่นนี้ที่มีหลายศพกำลังจะวุ่นวาย ฉันไม่คิดว่าคุณจะสามารถแก้สมการได้แบบเรียลไทม์ สิ่งที่ดีที่สุดที่คุณสามารถหวังคือหาวิธีแก้ปัญหาโดยใช้อัลกอริทึมทางพันธุกรรม

1: สร้างตัวเลข (เช่น 100) ของการแก้ปัญหาแบบสุ่ม (มุมคู่พลังงาน)

2: จำลองการแก้ปัญหาเหล่านี้

3: หากมีสิ่งเหล่านี้จบลงด้วยการกดปุ่มเป้าหมาย (หรือเข้ามาใกล้พอ) เสร็จแล้ว! อย่างอื่นต่อไป

4: เลือกโซลูชันที่ดีที่สุด 10 รายการ (โซลูชันที่ใกล้เคียงกับเป้าหมายมากที่สุด)

5: จากโซลูชัน 10 ข้อนี้สร้างเด็ก 10 คนสำหรับแต่ละคนโดยปรับมุมและพลังของพวกเขาแบบสุ่ม

6: ตอนนี้คุณมีโซลูชันใหม่ 100 รายการกลับไปขั้นตอนที่ 2

คุณจะต้อง จำกัด จำนวนการวนซ้ำในกรณีที่ไม่มีวิธีการแก้ปัญหาหรือใช้เวลาในการค้นหานานเกินไป

แม้แต่วิธีนี้ไม่รับประกันว่าจะหาทางออกที่ดีเพราะ; 1. โซลูชันอาจไม่มีอยู่ 2. ในระบบที่วุ่นวายการเปลี่ยนแปลงเล็กน้อยของโซลูชันอาจมีผลกระทบอย่างมากต่อผลลัพธ์


1

คุณควรจำลองการยิงได้โดยไม่ต้องวาด

จากนั้นคุณสามารถพูดจำลองภาพ 10 ภาพจากนั้นถ่ายหนึ่งใน 10 ภาพที่ใกล้เคียงที่สุด


0

ระบุว่าวิถีของขีปนาวุธขึ้นอยู่กับปัจจัยการผลิตAngleและPowerคุณควรจะสามารถแก้ปัญหา (รับคำตอบที่แน่นอน ) จากสมการผกผัน

ขั้นตอน AI ขั้นพื้นฐาน (psuedo) มีดังนี้:

  1. เลือกPowerระดับสุ่ม ไม่สำคัญว่ามูลค่าที่แน่นอนคือเท่าที่อยู่ในช่วงที่เหมาะสม
  2. แก้ (ฤๅษีจาก pathing จริง) สมการที่จะให้แน่นอนAngle (ดีที่ใกล้ที่สุดกับคู่)
  3. เลือกอ็อฟเซ็ตแบบสุ่ม (แก้ไขได้) เลือกจากAngleเพื่อปรับสำหรับ ' ความยากลำบาก ' ของ AI
  4. ยิงจรวดเป็นผู้เล่นที่จะที่ (สุ่ม) Powerและ Angle(คำนวณ)

แน่นอนคุณสามารถมีไฟ AI ในระดับสุ่มสำหรับอินพุตทั้งสองซึ่งสามารถให้ผลลัพธ์ที่น่าสนใจ ...


วิธีนี้ทำให้รู้สึกที่สมบูรณ์แบบเมื่อสิ่งที่คุณมีคือแรงโน้มถ่วงลงและลมคงที่ แต่สิ่งที่คุณใช้สำหรับ "สมการที่จะให้แน่นอนAngle" เมื่อคุณมีร่างกายความโน้มถ่วงกระจายอยู่ทั่วจักรวาลของคุณ? แรงดึงของพวกเขาขึ้นอยู่กับตำแหน่งปัจจุบันของคุณ บางภาพอาจไม่สามารถทำได้
John McDonald

@John - หากการยิงเป็นไปไม่ได้อย่างสมบูรณ์ (การลดทางเลือกพลังงานอินพุตต่ำ) จะมีปัญหาร้ายแรงกับ playfield ของคุณ ด้วยเกมประเภทนี้ผู้เล่นคนใดคนหนึ่งควรเปลี่ยนด้วย AI ได้รับสมการจะซับซ้อนมากขึ้น (และมีหลายศพเร็วมาก) แต่ก็ควรจะเป็นไปได้
Clockwork-Muse

ยุติธรรมพอสมควร แต่คุณรู้หรือไม่ว่าคุณใช้สมการนี้? ฉันคิดว่านั่นเป็นสาเหตุที่คำถามนี้ถูกสร้างขึ้น
John McDonald

จอห์นพูดถูก: สิ่งที่ฉันกำลังมองหาคือสมการนั้น
Onofrio

@Onofrio - ขออภัยฉันไม่มีสมการที่เกี่ยวข้อง ... และดูเหมือนว่าคุณต้องการแคลคูลัสแบบหลายตัวแปรเพื่อทำสิ่งนี้ 'ถูกต้อง'
Clockwork-Muse

0

วิธีทำให้มันเป็นจริงโดยไม่ให้คำนวณ แต่เริ่มด้วยการเดาและปรับอย่างเหมาะสม

เมื่อฉันเล่น Gravity Wars นี่คือสิ่งที่ฉันทำ เริ่มต้นด้วยพลังงานกึ่งสุ่มและปรับตามด้วยการเพิ่มขึ้น ภายในไม่กี่นัดคุณก็เข้าใกล้จริงๆ

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