การวางระเบิดอัจฉริยะ Bomberman AI


13

ฉันกำลังพยายามใช้อัลกอริทึม AI สำหรับ Bomberman ขณะนี้ฉันมีการทำงาน แต่ไม่ได้ใช้งานอย่างชาญฉลาดมาก (AI ปัจจุบันมีความคลั่งไคล้ในการวางระเบิด)

นี่เป็น AI ตัวแรกที่ฉันเคยลองใช้และฉันติดอยู่นิดหน่อย อัลกอริทึมที่ซับซ้อนมากขึ้นที่ฉันมีในใจ (คนที่ฉันคาดว่าจะทำให้การตัดสินใจที่ดีกว่า) จะซับซ้อนเกินไปที่จะแก้ปัญหาที่ดี

คุณมีเคล็ดลับทั่วไปอย่างไรในการใช้งาน Bomberman AI มีวิธีที่แตกต่างกันอย่างสิ้นเชิงในการทำบอททั้งการป้องกันหรือการรุกมากขึ้น?


แก้ไข: อัลกอริทึมปัจจุบัน

อัลกอริทึมปัจจุบันของฉันมีลักษณะดังนี้ (รหัสหลอก):

1) พยายามวางระเบิดแล้วค้นหาเซลล์ที่ปลอดภัยจากการวางระเบิดทั้งหมดรวมถึงที่วางไว้ หากต้องการค้นหาเซลล์นั้นให้วนซ้ำทั้งสี่ทิศทาง หากคุณสามารถหาเซลล์ที่แตกต่างที่ปลอดภัยและไปถึงมันได้ทันเวลา (เช่นหากทิศทางขึ้นหรือลงให้มองหาเซลล์ที่พบทางซ้ายหรือขวาของเส้นทางนี้) จากนั้นจะปลอดภัยที่จะวางระเบิดและย้าย ในทิศทางนั้น

2) หากคุณไม่สามารถค้นหาและปลอดภัยเซลล์ที่แตกต่างให้ลองวางระเบิดแล้วดูอีกครั้ง เวลานี้คุณจะต้องมองหาเซลล์ที่ปลอดภัยในทิศทางเดียวเท่านั้น (คุณไม่ต้องแยกจากมัน)

3) หากคุณยังไม่สามารถหาเซลล์ที่ปลอดภัยได้โปรดอย่าทำอะไรเลย

for $(direction) in (up, down, left, right):
    place bomb at current location
    if (can find and reach divergent safe cell in current $(direction)):
        bomb = true
        move = $(direction)
        return

for $(direction) in (up, down, left, right):
    do not place bomb at current location
    if (any safe cell in the current $(direction)):
        bomb = false
        move = $(direction)
        return

else:
    bomb = false
    move = stay_put

อัลกอริทึมนี้ทำให้บอทมีความสุขมาก (มันจะวางระเบิดบ่อยมาก) มันไม่ได้ฆ่าตัวเอง แต่มันมีนิสัยที่ทำให้ตัวเองอ่อนแอโดยการเข้าสู่จุดจบที่สามารถถูกบล็อกและฆ่าโดยผู้เล่นคนอื่น

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

หนึ่งในปัญหาของอัลกอริธึมนี้คือมันมีแนวโน้มที่จะออกจากบ็อตที่มีเซลล์ที่ปลอดภัยเพียงไม่กี่ (บ่อยครั้งเพียงหนึ่ง) ที่มันสามารถยืนได้ นี่เป็นเพราะบอททิ้งร่องรอยการระเบิดไว้เบื้องหลังตราบใดที่มันไม่ได้ฆ่าตัวเอง

อย่างไรก็ตามการทิ้งร่องรอยของระเบิดไว้ด้านหลังทำให้มีสถานที่ไม่กี่แห่งที่คุณสามารถซ่อนตัวได้ หากผู้เล่นคนใดคนหนึ่งหรือบอทตัดสินใจวางระเบิดใกล้ ๆ คุณมันมักจะเกิดขึ้นว่าคุณไม่มีที่ซ่อนและตาย

ฉันต้องการวิธีที่ดีกว่าในการตัดสินใจว่าจะวางระเบิดเมื่อใด


มันยากที่จะนึกถึงบางสิ่งที่ใช้สีฟ้าได้ 100% แต่ถ้าคุณเพิ่มอัลกอริทึมที่คุณมีอยู่ในปัจจุบันเราทุกคนสามารถช่วยกันปรับปรุงมันทีละน้อย คุณอาจไม่ใช่นักอดิเรกคนแรกที่พยายามใช้ Bomberman AI และฉันพบการแข่งขัน Bomberman AI ค่อนข้างน้อยด้วยการค้นหาด้วย Google แบบสุ่มซึ่งสามารถพิสูจน์แหล่งที่มาของข้อมูลที่มีค่าสำหรับคุณ
Roy T.

ฉันคิดว่าคุณสามารถสรุป bomberman AI ได้สองสิ่ง: 1) พยายามป้องกันตัวคุณเองจากการถูกระเบิดโดยผู้เล่นคนอื่น ๆ 2) วางระเบิดบนกระดานเกมเพื่อพยายามทำให้คนอื่นตาย (ในขณะที่รักษากฎ 1 ในใจ): / ติดกับระเบิดของคุณ)
tigrou

มันอาจจะดีกว่าถ้าคุณโพสต์ภาพรวมระดับสูงของการใช้งานในปัจจุบันอย่างน้อย (สมมติว่ามันเป็นรหัสจำนวนมาก) และเราอาจช่วยคุณแก้ปัญหาของพวกเขาเมื่อพวกเขาติดขัดในการวางระเบิด
Tetrad

@ Tetrad ฉันอยู่ในขั้นตอนการใช้อัลกอริทึมใหม่ ฉันจะดูว่ามันจะไปและโพสต์อัลกอริทึมที่นี่ถ้าจำเป็น
พอล Manta

แม้ว่าจะไม่ใช่คำแนะนำจริง แต่คุณสามารถดูรหัสclanbomber มันเป็นเกมในรูปแบบที่คล้ายคลึงกับ Bomberman
Ali1S232

คำตอบ:


4

ปัญหาที่คุณกำลังเผชิญอยู่คือ AI ของคุณไม่เคยหยุดตัดสินใจอย่างชาญฉลาดว่าควรวางระเบิดครั้งต่อไปที่ใดและปล่อยให้มันทิ้งระเบิดทุกครั้งที่ทำได้ ?"

หยุดคิดชั่วคราว

ตอนนี้ AI ของคุณก็ไม่ได้อยู่ที่ใด อย่างไรก็ตามบางครั้งมันควรย้ายไปยังเป้าหมายจริงๆ ตัวอย่างเช่นหากเห็นการเพิ่มพลังและคิดว่ามันสามารถเข้าถึงได้ก่อนผู้เล่นบางทีมันควรจะหาเส้นทางที่ปลอดภัยไปยังกระเบื้องนั้นและย้ายไปที่นั่นโดยจับตามองหาระเบิดและหลีกเลี่ยงพวกเขาไปพร้อมกัน

พฤติกรรมการเคลื่อนไหวเพื่อเป้าหมายเดียวกันสามารถใช้เมื่อมันคิดเกี่ยวกับการที่จะวางระเบิดต่อไป

เมื่อ AI ของคุณสามารถวางระเบิดได้แทนที่จะทำทันทีมันควรใช้อัลกอริทึมการค้นหาสั้น ๆเพื่อเลือกจากจุดวางระเบิดที่มีอยู่ตามเกณฑ์เช่น:

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

เมื่อการตัดสินใจครั้งนี้ทาง AI ได้เลือกสถานที่วางระเบิดและสถานที่หลบซ่อนจากการระเบิด ตอนนี้มันสามารถเดินไปที่จุดวางระเบิดแล้วเดินไปยังที่ซ่อนของมัน เมื่อถึงที่ซ่อนตัวมันอาจต้องการเดินต่อไปและค้นหาตำแหน่งวางระเบิด (ถ้ามีหลายจุด) โดยที่ต้องเก็บให้พ้นจากการทิ้งระเบิดเพื่อหลีกเลี่ยง

กำลังเดินและค้นหาเส้นทางที่ปลอดภัย

คุณสามารถพัฒนา AI สำหรับวิธีการเดินต่อจุดเดียวและใช้สิ่งนี้ทุกครั้งที่คุณต้องการให้มันเดินไปที่ไหนสักแห่ง วิธีนี้สามารถใช้อัลกอริทึมการค้นหา *เพื่อค้นหาเส้นทางของมัน

เพื่อให้ AI ปลอดภัยคุณอาจต้องการตรวจสอบเส้นทางของมันทุกครั้งที่มีการวางระเบิดใหม่ เพื่อหลีกเลี่ยงการระเบิดมันสามารถตรวจสอบเวลาก่อนที่จะเกิดการระเบิดและพิจารณาความปลอดภัยที่อาจเกิดขึ้นจากการระเบิดของแผ่นกระเบื้องหากไม่ระเบิดในขณะที่กำลังเดินผ่านกระเบื้องนั้น - และหากไม่ปลอดภัยให้ถือว่าเป็นกระเบื้องที่ไม่สามารถใช้ได้ .

เพื่อให้ความผิดปกติของ AI ของคุณ (ดังนั้นบางครั้งมันอาจถูกพัดขึ้นมา) มันควรจะทำให้เกิดข้อผิดพลาดในการคำนวณ: การลืมเรื่องระเบิดที่ขาดไปไม่ใส่ใจการประเมินขนาดการระเบิดต่ำเกินไปหรือเวลาที่ระเบิดระเบิดเป็นต้น

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


ฉันลืมที่จะให้รายละเอียดที่เกี่ยวข้องบางอย่างเกี่ยวกับเกม มันเป็นเวอร์ชั่นง่าย ๆ ของ Bomberman: ไม่มีการเพิ่มพลังผู้เล่นสามารถวางระเบิดได้ไม่ จำกัด และการวางระเบิดมีช่วงสูงสุดเสมอ (จากปลายด้านหนึ่งของแผนที่ไปอีกด้านหนึ่ง) ระบบคะแนนแตกต่างกันด้วย ... [ต่อ]
พอล Manta

[ต่อ] คุณจะได้รับ 1 คะแนนสำหรับการวางระเบิด แต่ 0 คะแนนสำหรับการทำลายกำแพง นอกจากนี้คุณยังได้รับ 30 คะแนนสำหรับการฆ่า 15 สำหรับความช่วยเหลือและ -20 สำหรับการฆ่าตัวตาย [ต่อเนื่อง]
Paul Manta

[ต่อ] เมื่อทราบแล้ว AI ควรพยายามวางระเบิดให้บ่อยที่สุดเท่าที่จะทำได้ (เพราะการวางระเบิดให้ระเบิด) แต่ไม่จำเป็นต้องระวังเป็นพิเศษเกี่ยวกับตำแหน่งที่วางระเบิด มันจะต้องระมัดระวังเกี่ยวกับการมีสถานที่ที่ปลอดภัยเสมอไป [ต่อเนื่อง]
Paul Manta

[เธซเธก.] คุณคิดว่าเมื่อมีการเลือกทิศทางก็พอสำหรับผมที่จะเลือกหนึ่งที่จะนำไปสู่ความปลอดภัยในพื้นที่ แทนที่จะมองหาเซลล์ที่ปลอดภัยฉันจะมองหาพื้นที่ปลอดภัยที่ใหญ่ที่สุดดังนั้นฉันจึงสามารถซ่อนตัวจากการวางระเบิดโดยผู้เล่นคนอื่นได้เช่นกันไม่ใช่แค่ตัวฉันเอง นอกจากนี้เป็นความคิดที่ดีหรือไม่ที่จะชอบทิศทางที่ทำให้ฉันใกล้ชิดกับผู้เล่นคนอื่นมากกว่า?
พอล Manta

3
ถ้าอย่างนั้นเราไม่ได้พูดถึงBombermanและ AI เลย! เราเป็นเพียงแค่เกมบางอย่างที่มีระเบิดซึ่งคล้ายกับระเบิด Bomberman แต่ภายใต้ประทุนนั้นแตกต่างอย่างสิ้นเชิงและสนับสนุนให้คุณเป็นผู้กระตุ้นความสุข Lunaticและฉันมีประสบการณ์น้อยมากในการจัดการกับเกมนั้น
doppelgreener
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.