การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 1

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3

จากในตอนแรก ผมได้อธิบายถึงพื้นฐาน Mechanic ต่างๆ ของระบบต่อสู้ในเกม Baldur’s Gate 3 ไปแล้ว ในตอนนี้เราจะเริ่มมาคำนวณเรื่องความน่าจะเป็นกันครับ ซึ่งผมจะทำให้เห็นภาพชัดขึ้นด้วยการทำใน Excel ให้ดู

มาดูเรื่องความน่าจะเป็นเรื่อง Attack Roll vs Armor Class ของ ศัตรูกันดีกว่า เพราะเป็นสิ่งที่พบได้ปกติและบ่อยที่สุดเลย

จุดประสงค์ของบทความนี้เดี๋ยวสุดท้ายจะมาวิเคราะห์เรื่อง Feat. Great Weapon Master All-in กับ Sharpshooter กัน ว่าตกลงเปิดใช้ Passive หรือไม่เปิด Passive ตอนไหนดี??

กรณีตีธรรมดา ไม่มี Advantage/Disadvantage

สมมติผมเอา Lae’zel มาตีตัวละครผม (Sira) ที่มี AC17

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

ตอนแรกยังไม่เปิด Passive มันขึ้นว่าโอกาสโจมตีโดนคือ 65 % ดังนี้

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 2

ซึ่ง รายละเอียดของ Attack Roll ใน Log หลังจากลองโจมตีดูคือแบบนี้

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 3

คำถามคือ ความน่าจะเป็น 65% คำนวณมายังไง? มาดูกันครับ

หลักการคือ จะตีโดนหรือไม่? มี 3 กรณี ดังนี้

  • ลูกเต๋า 1d20 ได้ 1 = Critical Miss เสมอ
  • ลูกเต๋า 1d20 ได้ระดับ Critical Hits (ในที่นี้คือ 20) = โดนเสมอ
  • ลูกเต๋า 1d20 ที่ระดับอื่นๆ เมื่อ + ค่า Bonus/Penalty ทุกอย่าง ต้อง >= AC ศัตรูถึงโดน
    หรือในกรณีนี้
    • ลูกเต๋า 1d20 + 9 >= AC 17 ถึงโดน
    • ลูกเต๋า 1d20 >=8 ถึงโดน

เรียกว่า “ค่าส่วนต่างของลูกเต๋าที่เราต้องการทอยให้ได้” ในกรณีนี้ คือเลข 8

ถ้าสรุปเป็นภาพให้ดูชัดๆ คือแบบนี้

โอกาสโดน คือ
= กรณีได้เลข 8 ถึง 20 / ทั้งหมด
=13/20 = 65%

หรือจะเขียนสูตร Excel ไปเลยเพื่อใช้รองรับกรณีอื่นๆ ไปด้วยเลยก็ได้ แบบนี้

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 4

ช่อง C9 เขียนสูตรนี้ แล้ว Copy ลงไป

=IF($B9=1,"N (Critical Miss)",
IF($B9>=$B$6,"Y (Critical Hits)",
IF($B9>=C$8,"Y","N")))

แล้วใส่ Conditional Formatting ให้เรียบร้อย

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 5

ช่อง C29 เขียนสูตรนี้ เพื่อคำนวณความน่าจะเป็น

=COUNTIFS(C9:C28,"Y*")/COUNTA(C9:C28)
  • “Y*” ใน COUNTIFS แปลว่า สนใจที่ขึ้นด้วยด้วย Y
  • COUNTA คือ นับทุกอย่างที่ไม่ใช่ค่าว่าง

ลองทำให้ค่าส่วนต่างเปลี่ยนไป

ทีนี้ถ้าเราเปิด Great Weapon Master All-in จะทำให้เราต้องการส่วนต่างมากขึ้นอีก 5 หน่วย คือ 13 ก็จะได้ผลแบบนี้ ว่าโอกาสตีโดนคือ 40%

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 6

ซึ่งก็ตรงกับที่โปรแกรมบอกมาครับ

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 7

ทีนี้ถ้าเราลองเปลี่ยนค่าส่วนต่างที่ต้องการไปเรื่อยๆ (ไล่ตั้งแต่ไม่ต้องการส่วนต่างเลย ไปถึงต้องการมากกว่า20) แล้วดูผลลัพธ์ จะได้แบบนี้ จะเห็นว่าโอกาสโดนคือ 5%-95% ดังรูป

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 8

ถ้าระดับคริที่ต้องการเปลี่ยนไป

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

เช่น ใส่ของคริแล้วโอกาสตีโดนยังคงเท่าเดิม กรณนี้ คือ 65%

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 9
การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 10

นั่นคือ ถ้าค่าส่วนต่างปกติทั่วไป อาจไม่เห็นผลแต่จะส่งผลต่อโอกาสโดนขั้นต่ำซะมากกว่า เช่นแบบนี้ คือ ยังไงโอกาสโดนจะไม่มีทางต่ำกว่า 20% (ถ้าเกณฑ์คริเหลือ 17)

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 11

กรณีมี Advantage/Disadvantage

กรณี Advantage

ทีนี้มาดูกรณีที่มีเรื่องของการมี Advantage กันบ้างครับ ซึ่งจะมีการโยนเต๋า 2 ลูก เอาค่ามากกว่า ดังนั้นจะโอกาสตีโดนจะเยอะขึ้นเป็นแบบนี้

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 12

ถ้าใช้ Math ปกติเลย

วิธีคิดง่ายสุดคือ หาโอกาสตีไม่โดนก่อน ซึ่งแปลว่า ทั้ง 2 ลูก ต้องโยนได้ไม่เกิน 7 ดังนั้นมีทั้งหมด =7*7 = 49 แบบ จากทั้งหมด 20*20 = 400 แบบ

พบว่าโอกาสที่ตีไม่โดน คือ 49/400 = 12% (จริงๆ คือ 12.25%)
ดังนั้นที่ตีโดนคือ 100%-12% = 88% (จริงๆ คือ 87.75%)

แต่ถ้าจะเขียนด้วย Excel ให้เห็นภาพก็จะเป็นแบบนี้

ซึ่งใน Excel ผมจะทำเป็นตาราง Matrix Crosstab ระหว่างลูกเต๋า 2 ลูก แล้วเอาค่าที่มากกว่ามาใช้ โดยคงค่าส่วนต่างเป็น 8 ไว้ก่อน แบบนี้

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 13

สูตรของ C12 (แล้ว Copy ไปทั้งตาราง)

=IF(MAX($B12,C$11)=1,"N (Critical Miss)",
IF(MAX($B12,C$11)>=$B$6,"Y (Critical Hits)",
IF(MAX($B12,C$11)>=$C$8,"Y","N")))

สูตรของ C32

=COUNTIFS(C12:V31,"Y*")/COUNTA(C12:V31)

กรณี Disadvantage

ถ้ากรณี Disadvantage ก็จะใช้ค่า Min ระหว่าง 2 ลูกเต๋า

ดังนั้นโอกาสตีโดนคือ ต้องโยนได้ตั้งแต่ 8 ขึ้นไปทั้ง 2 ลูก = 13*13 = 169 แบบ

จากทั้งหมด 400 แบบ ดังนั้นโอกาสโดนคือ = 169/400 = 42% (จริงๆ คือ 42.25%)

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 14

สรุปความน่าจะเป็นทั้ง 3 กรณี

ทีนี้ถ้าจะเปลี่ยนค่าส่วนต่างไปเรื่อยๆ แล้วดูเลขความน่าจะเป็นที่ตีโดนในแต่ละกรณีไปเลย โดยผมใช้ Excel Data Table เพื่อทำ Sensitivity Analysis แบบนี้

กรณี Critical เกณฑ์ปกติที่ 20

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 15

ถ้าทำเป็นกราฟจะได้แบบนี้

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 16

กรณี Critical เกณฑ์เลขอื่นๆ

ตัวอย่างการตัดสินใจ

สมมติเราจะคิดว่า เราควรเปิด Passive : Great Weapon Master All in (GWM) หรือ Sharpshooter หรือไม่?

ซึ่งจะทำให้เกิด Penalty คือ -5 Attack Roll แต่จะได้ +10 Damage

ซึ่งจะทำให้โอกาสตีโดนต่ำลงเป็นแบบนี้

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 23

ทีนี้จะคิดยังไงว่าคุ้มหรือไม่คุ้ม?

Assumption แรกคือ ศัตรูมี HP เยอะต้องสู้นาน (เราเลยจะคิดแบบ Dmg เฉลี่ยในระยะยาว)

Damage เฉลี่ยต่อ Hit = %ความน่าจะเป็นที่ตีโดน * Damage ที่ได้

ดังนั้น เราจะสามารถคิด % ความคุ้มค่าของ Damage ที่เพิ่มขึ้นจากการเปิด Passive ดังนี้

สมมติ Damage เฉลี่ยเดิมเป็น 8

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 24

ลองใช้ Data Table ทำ Sensitivity Analysis โดยคงส่วนต่างที่ต้องการไว้ เป็น 5,10,15 แล้วลองเปลี่ยน Damage เฉลี่ยเดิม (สีเขียว = คุ้ม เลขมากคุ้มมาก)

จะเห็นว่าจะเปิดแล้วคุ้ม เมื่อเกิดเหตุการณ์ต่อไปนี้

  • เมื่อ Advantage (แล้วศัตรูไม่โหดเกินไป)
  • เมื่อ Damage พื้นฐานเราค่อนข้างห่วย
  • เมื่อ ค่าส่วนต่างที่ต้องการต่ำ (โอกาสโจมตีโดนสูงอยู่แล้ว)

เช่น ถ้าค่าส่วนต่างที่ต้องการต่ำ ประมาณ 5 ถ้าเปิดแล้ว Passive จะคุ้มทั้งสถานการณ์ปกติ, Advantage (และ Disadvantage บางกรณี) เลย

แล้ว Damage เฉลี่ยคิดยังไง?

อย่างที่บอกไปในบทความก่อนหน้านี้ ว่าการคิด Damage นั้นขึ้นอยู่กับ

Weapon Damage Dice + ค่า Damage อื่นๆ 

ดังนั้น Range ของ Damage ที่จะเกิดขึ้นนั้นจึงขึ้นกับ Weapon Damage Dice ว่าจะ Roll ได้เท่าไหร่ด้วย เช่น

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 29

สมมติอาวุธเป็น 1d6 แล้ว+ค่าอื่นๆ อีก 5
ค่า Damage ที่เป็นไปได้คือ (1ถึง6) +5 หรือ 6 ถึง11 Damage

เวลาโจมตีจริง จะได้ Damage เท่าไหร่ไม่รู้ แต่อยู่ระหว่าง 6-11 ซึ่งสมมติได้ 9 ดังนี้ (ถ้าเป้าหมายมี Vulnerable ก็โดน 2 เท่า ซึ่งนั่นอีกเรื่องนึง)

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 30

ถ้าตีอีกที ก็อาจจะไม่เท่าเดิมใช่มะ?
แล้วโดยเฉลี่ยแล้วมันได้ Damage เท่าไหร่? เราสามารถรู้ได้ เพราะ การ Random เต๋า มันคือ Discrete Uniform Distribution ระหว่างค่า 1- หน้าเต๋า นั่นเอง

การหาค่า Expected Value

E(X) = μ = ∑ x * P(x)

แต่ละค่ามีโอกาส P(x) = 1/หน้าเต๋า เช่น ถ้าเต๋า 6 หน้า โอกาสแต่ละอันคือ 1/6 หรือ 16.67% ทำให้คำนวณได้ดังนี้

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 31

หรือเอาสูตรง่ายๆ กรณีเลขต่อเนื่องกันแบบโยนเต๋า คือ ใช้สูตรนี้ไปเลย

Expected Value = (1+หน้าเต๋า)/2 + ค่าบวก
Expected Value = (a+b)/2  :  a = min damage, b=max damage

เช่น

  • 1d6 ก็มี Expected Value = (1+6)/2 = 3.5
  • 1d6 + 5 มี Expected Value = 3.5+5=8.5
  • หรือ (6+11)/2 = 8.5 เช่นกัน

เช่น อาวุธที่เขียนว่ามี Damage ดังนี้ จะมี Damage เฉลี่ย ตามนี้ ง่ายๆ เลย

  • 5-12 = 8.5
  • 6-11 = 8.5 (แต่ค่าไม่แกว่งเท่าตัวบน)
  • 6-18 = 12
  • 8-21 = 14.5
  • 9-22 = 15.5

แนวทางการตัดสินใจ

ดังนั้นถ้าผมใช้อาวุธ SoulBreaker ที่เขียนว่ามีดาเมจ 8-21 ก็จะมีดาเมจเฉลี่ย 14.5 ซึ่ง

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 32

ถ้า Focus ที่ Damage เฉลี่ยประมาณ 15 ไปเลย เพื่อให้ดูง่าย จะเป็นแบบนี้

  • ถ้า Disadvantage : อย่าเปิด Passive ถ้าดาเมจเฉลี่ยระดับนี้แล้ว
  • ถ้าค่าส่วนต่างที่ต้องการประมาณ 5-8 : ก็คุ้มที่จะเปิด Passive GWM ได้ไม่ว่าจะ Advantage หรือไม่
  • แต่ถ้าค่าส่วนต่างประมาณ 9-10 ขึ้นไป : นี่จะคุ้มก็ต่อเมื่อได้ Advantage เท่านั้น (แต่ก็เกือบไม่คุ้มแล้ว)

สรุปการใช้งานจริงแบบง่ายๆ

เวลาใช้งานจริง ก็ดูที่ %โอกาสโดนที่เกมคำนวณให้ไปเลย

ถ้าดาเมจเฉลี่ยประมาณ 15 ผมทำตารางสรุปให้แล้ว ว่าดาเมจเฉลี่ยคุ้มหรือไม่?
(TRUE = เปิดแล้วคุ้ม)

การคำนวณความน่าจะเป็นใน Baldur’s Gate 3 33
  • ถ้ากรณีปกติ ไม่มี Advantage :
    • ถ้าก่อนเปิด Passive โอกาสโดน 65% Up ก็เปิดใช้ Passive เลยครับ
  • ถ้ากรณี Advantage :
    • ถ้าก่อนเปิด Passive โอกาสโดน 80% Up ก็เปิดใช้ Passive ได้เลย

ตอนต่อไป

ในตอนต่อไป เราจะมาดูแนวทางในการ Up Level รวมถึงการ Change Class เลือก Feat ต่างๆ กัน ว่าเลือกแบบไหนน่าจะคุ้มกับสิ่งที่ต้องการครับ