เจาะลึกผู้พัฒนา: ระบบแนะนำเด็คชาญฉลาด

เจาะลึกผู้พัฒนา: ระบบแนะนำเด็คชาญฉลาด

สวัสดีครับทุกคน! ผมชื่อเถียน เป็นนักวิทยาการข้อมูลอาวุโสในทีมงาน Hearthstone และวันนี้ผมจะมาพูดคุยเกี่ยวกับระบบแนะนำเด็คชาญฉลาดเพื่อตอบคำถามบางข้อที่ชุมชนผู้เล่นสงสัยครับ

ก่อนที่เราจะมาเจาะลึกวิทยาการที่คุณสนใจ เรามาเริ่มต้นด้วยการแนะนำคุณลักษณะเบื้องต้นกันดีกว่า!

HS_Blog_Divider_Filigree_Bar.png

ระบบแนะนำเด็คชาญฉลาดคืออะไร

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

หากต้องการใช้ระบบแนะนำเด็คชาญฉลาด ให้คุณเริ่มจากการสร้างเด็ครูปแบบมาตรฐานโดยเลือกใช้คลาสใดก็ได้ และเลือกเพิ่มการ์ดลงในเด็คก่อนกี่ใบก็ได้ หลังจากที่คุณคลิก "จัดเด็คให้เสร็จ" หรือ "เสร็จสิ้น" ระบบจะเติมการ์ดให้เต็มเด็คของคุณโดยอิงจากการ์ดที่คุณเลือกไว้แล้ว โดยใช้เฉพาะการ์ดจากในคอลเลกชันของคุณเท่านั้น เราขอยกตัวอย่างเพื่อให้เห็นภาพง่ายขึ้น สมมิว่าคุณเลือก อูนดาสตา (Oondasta) และ เล่นแกล้งตาย (Play Dead) แล้วปล่อยให้ Hearthstone จัดเด็คให้ ระบบแนะนำเด็คชาญฉลาดจะพิจารณาปัจจัยหลายอย่างๆ จากนั้นจัดเด็คที่ระบบคิดว่าเป็นเด็คที่ดีที่สุด เช่น เด็คฮันเตอร์เสียงสุดท้ายที่ใช้คาธรีน่า วินเทอร์วิสป์ (Katherina Winterwisp Deathrattle Hunter)

03_27_HS_DeveloperInsights_SmartDeck_BlogDecklist_800x1000_JY_v01_enUS.png

ง่ายๆ แค่นั้นเอง เพียงเริ่มด้วยเด็คที่ว่างเปล่า หรือเลือกเพิ่มการ์ดที่คุณอยากเล่นไม่กี่ใบ แล้วเราจะจัดการที่เหลือให้คุณได้เล่นเด็คสุดเจ๋งที่คุณต้องการ

HS_Blog_Divider_Filigree_Bar.png

วิธีการทำงาน:

ต่อไปเราจะมาเจาะลึกระบบกันดีกว่า ระบบแนะนำเด็คชาญฉลาดมีสองชั้น (layer) และแต่ละชั้นก็มีชั้นย่อย (sub-layer) เพื่อช่วยจัดเด็คของคุณให้เสร็จ มาดูกันว่าแต่ละชั้นทำหน้าที่ในการจัดเด็คที่คุณต้องการได้อย่างไร:

ชั้นการสร้างเด็คชั้นแรก: การสร้างเด็คตามเมต้า

03_27_HS_DeveloperInsights_SmartDeck_BlogAssets_300x400_JY_v01_H.jpg

เพื่อไม่ให้คุณสับสน เรามาอธิบายกันก่อนว่าคำว่า "เมต้า (meta)" ที่เราจะพูดถึงนั้นคืออะไร เมต้าคือการย่อคำว่า "เมต้าเกม (meta-game)" เป็นคำที่ใช้พูดถึงแนวทางการจัดเด็คในเกม โดยเฉพาะอย่างยิ่งในโหมดจัดอันดับ ผู้เล่นจำนวนมากจึงนึกถึงเมต้าปัจจุบันในขณะจัดเด็คเพื่อโอกาสชนะที่สูงที่สุด และเพิ่มการ์ดบางใบที่ได้ผลดีเมื่อใช้กับเด็คอื่นๆ ที่น่าจะได้เจอในเกมจัดอันดับ ยกตัวอย่างเช่น ในเมต้าเน้นอาวุธ (เมต้าที่เด็คจำนวนมากมีการ์ดอาวุธ) ผู้เล่นก็มีแนวโน้มที่จะเพิ่มการ์ดอย่างปีศาจเมือกบึงกรด (Acidic Swamp Ooze) หรือปีศาจเมือกจอมตะกละ (Gluttonous Ooze) เพื่อทำลายอาวุธเหล่านั้นและ "แก้ทาง" เมต้าดังกล่าว

ในชั้นการสร้างเด็คชั้นแรก (หรือเรียกได้ว่าชั้นเมต้า) เราจะพยายามจัดเด็คที่ดีที่สุดเท่าที่เป็นไปได้โดยอิงข้อมูลจากเด็คที่เป็นที่นิยมในเมต้า ณ ขณะนั้น การ์ดที่คุณเพิ่มลงในเด็คไปแล้ว และการ์ดที่คุณมีในคอลเลกชันของคุณ เราใช้อัลกอริทึมการคำนวณเพื่อตรวจสอบว่าสิ่งใดเป็นเมต้า และจัดกลุ่มเด็คที่ได้รับความนิยมที่มีประเภทพื้นฐานแบบเดียวกันให้อยู่ในกลุ่มย่อยๆ ลงไป กลุ่มย่อยแต่ละกลุ่มเป็นประเภทของเด็คที่มีผู้เล่นในเมต้าปัจจุบัน เช่น "ฮันเตอร์กับดัก (Secret Hunter)" "พรีสต์มังกร (Dragon Priest)" "พาลาดินเลขคี่ (Odd Paladin)" เป็นต้น การ์ดในเด็คแต่ละเด็คภายในกลุ่มย่อยอาจมีความแตกต่างเล็กน้อย แต่โดยรวมแล้วก็ถือได้ว่าเป็นเด็คประเภทเดียวกัน กระบวนการนี้ในวงการการเรียนรู้ด้วยเครื่องจักร (machine learning) เรียกว่า "การแบ่งกลุ่มข้อมูล (clustering)" อัลกอริทึมการแบ่งกลุ่มข้อมูลของเราวิเคราะห์เด็คที่แตกต่างกันนับล้านเด็ค โดยแต่ละเด็คนับเป็นจุดข้อมูล (data point) หนึ่งจุด และจุดข้อมูลเหล่านี้จะปรากฏออกมาเป็นเวกเตอร์ (vector) หนึ่งเวกเตอร์ในมิติข้อมูลหลายร้อยมิติ หลังจากการใช้ข้อมูลจากการแบ่งกลุ่มกับการคำนวณทางคณิตศาสตร์อื่นๆ อัลกอริทึมก็จะตัดสินใจเพิ่มการ์ดที่เหลือจนกว่าเด็คจะเติมหรือระบบต้องใช้ชั้นการสร้างเด็คชั้นที่สองเพื่อ "เติมเต็ม" การ์ด

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

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

ชั้นการสร้างเด็คชั้นที่สอง: การเติมเต็ม

03_27_HS_DeveloperInsights_SmartDeck_BlogAssets_300x400_JY_v01_G.jpg

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

การ์ดแต่ละใบมี "ระดับพลังของการ์ด (card power)" เมื่อใช้ในเด็คใดๆ สำหรับคลาสแต่ละคลาส ทั้งนี้ไม่คำนึงถึงโอกาสในการสนับสนุนหรือคอมโบกับการ์ดอื่นๆ ตัวเลขนี้ไม่คงที่ และแปรผันได้ตามปัจจัยต่างๆ ของเด็ค ณ ขณะนั้น อย่างไรก็ตาม การระบุระดับพลังของการ์ดโดยทั่วไปจะมีปัจจัยสำคัญสามประการ:

  • ผลกระทบต่อรูปเกม: การ์ดใบนี้ส่งผลต่ออัตราชนะของเด็คมากแค่ไหน
    • ยกตัวอย่างเช่น วิญญาณธาตุน้ำ (Water Element) มีโอกาสช่วยให้เมจชนะเกมมากกว่าโจรสลัดจอมโหด (Dread Corsair)
  • ชุดการ์ดตามช่วงค่าร่าย: ระบบจะดูการ์ดใบอื่นๆ ที่มีค่าร่ายเท่ากับการ์ดใบนี้
    • หากเป้าหมายของเราคือการค้นหาการ์ดหนึ่งเพื่อเติมการ์ดในชุดการ์ดช่วงค่าร่าย 1 หรือ 2 มานา ผู้ติดตามแห่งอาร์เจนท์ (Argent Squire) ก็อาจจะเป็นตัวเลือกที่ดีสำหรับชุดการ์ดนั้น และในขณะเดียวกัน การ์ดใบนี้ก็เป็นตัวเลือกที่แย่สำหรับชุดการ์ดค่าร่าย 5 มานาอย่างไม่ต้องสงสัย
  • หลีกเลี่ยงการเติมการ์ดลงในชุดการ์ดตามช่วงค่าร่ายจนล้น:
    • หากชุดการ์ดในช่วงค่าร่ายใดๆ มีการ์ดในนั้นอยู่แล้ว 10 ใบ เราจะพยายามหลีกเลี่ยงการเพิ่มการ์ดอื่นๆ ที่มีค่าร่ายในช่วงนั้นๆ เว้นแต่ว่าการ์ดเหล่านี้จะเป็นการ์ดที่ดีกว่าตัวเลือกอื่นๆ อย่างชัดเจน

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

HS_Blog_Divider_Filigree_Bar.png

ปัจจัยอื่นๆ : กฎ คูลดาวน์ และข้อจำกัด

03_27_HS_DeveloperInsights_SmartDeck_BlogAssets_3Steps_600x260_JY_v01.png

นอกเหนือจากคณิตศาสตร์และวิธีการเรียนรู้ด้วยเครื่องจักรขั้นสูงแล้ว เรายังมีกฎเพื่อรักษาคุณภาพของเด็คอีกมากมายเพื่อสนับสนุนกระบวนการจัดเด็คสองชั้น และให้คุณมั่นใจได้ว่าเด็คของคุณมีความสมเหตุสมผล ยกตัวอย่างเช่น ถ้าคุณมี เจ้าชายเคเลเซธ (Prince Keleseth) ในเด็คที่ยังจัดไม่เสร็จ เราจะพยายามหลีกเลี่ยงการแนะนำการ์ดที่มีค่าร่ายสองมานา

ระบบแนะนำเด็คชาญฉลาดยังมี "คูลดาวน์" สำหรับผู้ที่ต้องการลองเด็คที่แตกต่างกันอีกด้วย หากคุณไม่ใส่การ์ดใดๆ ลงในเด็คและลองกดสร้างเด็คที่เราแนะนำรัวๆ ภายในระยะเวลาสั้นๆ เราจะพยายามแนะนำเด็คที่แตกต่างกันทุกครั้งที่คุณคลิกปุ่ม คุณลักษณะนี้จะทำงานเฉพาะกรณีที่เด็คเริ่มต้นว่างเปล่าเท่านั้น

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

HS_Blog_Divider_Gems.png

ลองแบ่งปันเด็คเจ๋งๆ จากระบบแนะนำเด็คชาญฉลาดและถามคำถามที่คุณสงสัยได้ด้วยการแสดงความคิดเห็นด้านล่างได้เลย แล้วพบกันในโรงเตี๊ยม!