เจาะลึกผู้พัฒนา: ระบบคะแนนและการจับคู่ใน PvP สำหรับโหมดทหารรับจ้างของ Hearthstone
สวัสดี! ผมชื่อเถียน เป็นหัวหน้านักวิทยาการข้อมูลอาวุโสในทีมงาน Hearthstone ในบล็อกโพสต์นี้ ผมจะพูดถึงรายละเอียดเบื้องหลังระบบคะแนนและการจับคู่ในสังเวียนต่อสู้ PvP ของโหมดเกมใหม่ล่าสุดของเรา นั่นคือโหมดทหารรับจ้าง!
ระบบคะแนนและการจับคู่ของโหมดทหารรับจ้างเป็นระบบที่ซับซ้อนที่สุดที่เราเคยใช้ในโหมดเกมของเรา! แต่แกนหลักของระบบนี้มีสองแนวคิดง่ายๆ ดังนี้:
- สำหรับระบบคะแนน เป้าหมายของเราคือการทำให้คะแนนดังกล่าวสื่อถึงทักษะการเล่นของผู้เล่นให้มากที่สุด แทนที่จะเป็นการสื่อถึงเลเวลทหารรับจ้าง เลเวลความสามารถ/อุปกรณ์ หรือการจัดทีม
- สำหรับระบบจับคู่ เป้าหมายหลักของเราคือการจับคู่ให้เกิดเกมที่ “ยุติธรรม” โดยใช้ระยะเวลารอคิวที่เหมาะสม ซึ่งจะคำนวณจากคะแนน เลเวลทหารรับจ้าง เลเวลความสามารถ/อุปกรณ์ และสายในปาร์ตี้ของคุณ
มีปัจจัยหลายประการที่ส่งผลต่อวิธีที่เราอัพเดตคะแนนหลังจบเกมและวิธีค้นหาคู่ต่อสู้ในช่วงจับคู่ ซึ่งรวมถึงคะแนนของคุณ เลเวลของทหารรับจ้างของคุณ ระดับความสามารถและอุปกรณ์ของทหารรับจ้างของคุณ การแบ่งสายในปาร์ตี้ของคุณ และระยะเวลาที่คุณรอคิว ต่อไปเราจะมาพูดถึงปัจจัยแต่ละอย่างกัน
คะแนน
คะแนนในระบบนี้มีสองค่าคล้ายๆ กับในโหมด Battlegrounds และโหมดดวลเดือด ได้แก่คะแนนภายใน (internal rating) และคะแนนภายนอก (external rating)
คะแนนภายในเป็นค่าที่ระบบเชื่อว่าเป็นตัวแทนของระดับทักษะปัจจุบันของคุณ และจะไม่ถูกรีเซ็ตเมื่อเริ่มต้นฤดูกาลใหม่ คะแนนส่วนนี้จะถูกกำหนดหลังจากที่คุณเล่นเกมวัดระดับเริ่มแรกครบจำนวนที่กำหนด หลังจากนั้นคะแนนจะค่อยๆ ปรับไปเมื่อคุณเล่นไปเรื่อยๆ (หรือเมื่อคุณไม่ได้แวะไปเล่นในสังเวียนต่อสู้เป็นเวลานาน) คะแนนส่วนนี้จะไม่แสดงให้คุณเห็น
คะแนนภายนอกคือตัวเลขคะแนนที่คุณจะเห็น ซึ่งจะถูกรีเซ็ตทุกครั้งที่เริ่มฤดูกาลใหม่เพื่อสร้างการเดิมพันและความก้าวหน้าที่เห็นได้ชัดในแต่ละฤดูกาล ยิ่งคุณเล่นบ่อยๆ ในฤดูกาลนั้น คะแนนส่วนนี้ก็จะเข้าใกล้ค่าที่ระบบเชื่อว่าเป็นตัวแทนของระดับทักษะปัจจุบันของคุณมากขึ้นเรื่อยๆ
กระดานจัดอันดับจะใช้คะแนนภายนอกของคุณ ในขณะที่ระบบจับคู่จะใช้คะแนนภายในของคุณ ความแตกต่างระหว่างคะแนนภายในของคุณกับคะแนนภายในของคู่ต่อสู้เป็นปัจจัยสำคัญที่ระบบใช้ในการคำนวณโอกาสชนะของคุณก่อนเริ่มแต่ละเกม (จะพูดถึงปัจจัยอื่นๆ ในหัวข้อถัดไป) หลังจบเกม ระบบจะนำโอกาสชนะดังกล่าวมาเปรียบเทียบกับผลลัพธ์จริงเพื่อคำนวณการเปลี่ยนแปลงคะแนน
หากคุณต้องการศึกษาข้อมูลเกี่ยวกับระบบคะแนนแบบคู่ (dual-rating) คุณสามารถอ่านบล็อกก่อนหน้าที่ผมอธิบายระบบเดียวกันในโหมด Battlegrounds ได้ (https://playhearthstone.com/en-us/news/23523064)
เลเวลของทหารรับจ้าง
เลเวลของทหารรับจ้างแต่ละตัวในปาร์ตี้ของคุณมีบทบาทสำคัญสำหรับทั้งการอัพเดตคะแนนหลังจบเกมและการจับคู่ก่อนที่เกมจะเริ่ม ตัวอย่างเช่น ระบบจะพยายามกำหนดให้คุณเผชิญหน้ากับคนที่มีทหารรับจ้างเลเวลเท่ากับคุณ (โดยเฉพาะอย่างยิ่งถ้าคะแนนและปัจจัยอื่นๆ เท่ากันด้วย) แต่ถ้าระบบจับคู่คุณกับคู่ต่อสู้ที่มีปาร์ตี้เลเวลสูงกว่า นั่นจะทำให้โอกาสชนะของคุณลดลงด้วย และถ้าโอกาสชนะลดลง ก็หมายความว่าคุณจะได้รับคะแนนเพิ่มขึ้นถ้าคุณชนะเกมนั้น หรือเสียคะแนนน้อยลงถ้าคุณแพ้เกมนั้น
แน่นอนว่าผู้เล่นจะไม่มีปาร์ตี้ที่มีเลเวลเท่ากันเป๊ะเสมอไป เราจึงสร้างสูตรสำหรับใช้ประเมินเมื่อสถานการณ์ทั่วไปแบบนั้นเกิดขึ้น ในทางคณิตศาสตร์ สูตรที่เราใช้จะคำนวณเลเวลสูงสุด เลเวลโดยเฉลี่ย การกระจายของข้อมูล (variation) และความเบ้ (skewness) ของทหารรับจ้างในปาร์ตี้เพื่อสร้าง “ตัวแทน (proxy)” สำหรับความแข็งแกร่งของปาร์ตี้ทหารรับจ้าง เราจะเรียกค่านี้ว่า “คะแนนเลเวล (level score)” ของคุณ
หลังจบแต่ละเกม คะแนนเลเวลของคุณจะได้รับการพิจารณาควบคู่ไปกับคะแนนภายในที่สัมพันธ์กัน รวมถึงปัจจัยอื่นๆ ที่ได้กล่าวถึงในบทความนี้ เพื่อกำหนด “ค่าชดเชยคะแนน (rating compensation value)” ที่เป็นตัวกำหนดว่าคุณจะได้รับหรือเสียคะแนนจากเกมนั้นเท่าไร
ระดับความสามารถของทหารรับจ้าง
ระบบจะนำระดับความสามารถของทหารรับจ้างแต่ละตัวมาพิจารณาทั้งในระบบจับคู่และระบบคะแนน เช่นเดียวกับคะแนนเลเวลของปาร์ตี้ของคุณ ระบบจะคำนวณ “คะแนนความสามารถ (ability score)” เพื่อใช้ประเมินว่าความสามารถของทหารรับจ้างของคุณนั้นทรงพลังแค่ไหน คะแนนความสามารถนั้นจะถูกแปลงโดยฟังก์ชันที่ไม่ใช่เชิงเส้นตรง (non-linear function) เพื่อช่วยทำนายโอกาสชนะระหว่างคุณกับคู่ต่อสู้ และเพื่อคำนวณการอัพเดตคะแนนหลังจบเกม
โปรดทราบว่าคะแนนความสามารถของคุณจะมีความสำคัญน้อยกว่ามากเมื่อทหารรับจ้างของคุณและคู่ต่อสู้ทั้งหมดมีเลเวลสูงสุดเท่ากันหมด (เลเวลสูงสุดในช่วงเปิดตัวคือเลเวล 30) ภายใต้สถานการณ์เหล่านั้น ระบบจะให้น้ำหนักกับปัจจัยอื่นๆ มากกว่า รวมถึงคะแนนภายในที่สัมพันธ์กัน
ระดับอุปกรณ์ของทหารรับจ้าง
อัลกอริธึมสำหรับการคำนวณคะแนนและโอกาสชนะที่เกี่ยวกับอุปกรณ์ของทหารรับจ้างของคุณนั้นคล้ายกับระดับความสามารถที่กล่าวไว้ข้างต้น แต่มีพารามิเตอร์ต่างกัน ข้อแตกต่างที่สำคัญประการหนึ่งคือ ทหารรับจ้างของคุณไม่จำเป็นต้องสวมใส่อุปกรณ์ใดๆ และหากทหารรับจ้างของคุณไม่มีอุปกรณ์ ระบบจะมองว่าทหารรับจ้างตัวนั้นเลือกใช้อุปกรณ์ “ระดับ 0”
สายของทหารรับจ้าง
ตอนนี้คุณน่าจะทราบแล้วว่าทหารรับจ้างแบ่งออกเป็นสามสายด้วยกัน ได้แก่ นักสู้ นักเวท และนักคุ้มครอง ทหารรับจ้างแต่ละสายสร้างความเสียหายสองเท่าให้ทหารรับจ้างสายหนึ่ง และได้รับความเสียหายสองเท่าจากทหารรับจ้างอีกสายหนึ่ง
สายของทหารรับจ้างไม่ส่งผลต่อการอัพเดตคะแนนหลังจบเกมของคุณ แต่จะส่งผลต่อระบบจับคู่ ผลกระทบนี้จะส่งผลน้อยกว่าเลเวลและระดับความสามารถ/อุปกรณ์ของปาร์ตี้ของคุณอย่างมาก แต่เราก็จะยังนำสายของทหารรับจ้างมาคำนวณเพื่อลดโอกาสเกิดเกมที่ “สุดโต่ง” เกินไป และก่อให้เกิดประสบการณ์การเล่นที่ไม่สนุกนัก เช่น เกมที่นักสู้หกตัวเจอกับนักเวทหกตัว หรือเกมที่นักคุ้มครองหกตัวเจอกับนักคุ้มครองหกตัว เป็นต้น เราใช้แนวคิดที่คล้ายคลึงกับแนวคิดทางคณิตศาสตร์ที่มีชื่อว่า “เอนโทรปีของข้อมูล (information entropy)” เพื่อบรรลุเป้าหมายนี้ ยิ่งค่าเอนโทรปีสูง ก็ยิ่งหมายความว่าในปาร์ตี้มีสายของทหารรับจ้างที่หลากหลายมาก จากนั้นเรานำคะแนนเอนโทรปีมาคูณด้วยฟังก์ชันลักษณะเฉพาะ (characteristic function) เพื่อตรวจสอบและยืนยันว่าการคำนวณเหล่านี้จะมีผลเฉพาะเกมที่สุดโต่งเท่านั้น เป้าหมายของเราคือการหาสมดุลที่เหมาะสมที่เปิดโอกาสให้ผู้เล่นสามารถเลือกใช้ทหารรับจ้างที่ตัวเองต้องการได้ โดยที่กำหนดแนวทางให้ผู้เล่นยังคงต้องคำนึงถึงและใช้ประโยชน์จากระบบสายที่เป็นหนึ่งในระบบหลักของโหมดนี้อยู่
เวลารอคิวและคู่ต่อสู้ที่เป็น AI
เวลาที่ใช้ในการรอคิวถือเป็นปัจจัยสำคัญสำหรับระบบจับคู่ทั้งหมดทั้งมวล ถึงแม้ว่าการจับคู่เพื่อสร้างเกมที่มีคุณภาพดีนั้นเป็นสิ่งสำคัญสำหรับการเล่นที่สนุก แต่หากต้องใช้เวลารอคิวนาน ประสบการณ์การเล่นก็จะได้รับผลกระทบเชิงลบได้เช่นกัน เนื่องจากว่าระบบจับคู่ของโหมดทหารรับจ้างมีปัจจัยและตัวแปรมากมาย เราจึงต้องการหลีกเลี่ยงกรณีที่ผู้เล่นต้องรอคิวเป็นเวลานานผิดปกติเพื่อค้นหาคู่ต่อสู้ที่อยู่ในระดับใกล้เคียงกัน
ในโหมดทหารรับจ้าง ณ ปัจจุบัน หากคุณรอคิวนานกว่า 1-1.5 นาที และคะแนนภายในและคะแนนภายนอกของคุณต่ำกว่าเกณฑ์ที่กำหนด (เกณฑ์สำหรับคะแนนภายนอกอยู่ที่ 7000) คุณจะได้เล่นกับคู่ต่อสู้ที่เป็น AI เกณฑ์ดังกล่าวจะช่วยให้ผู้เล่นปกติได้เล่นเกมโดยรอคิวไม่นาน ในขณะที่ผู้เล่นที่จริงจังมากๆ จะยังมีโอกาสได้แข่งขันกับคนอื่นเพื่อชิงตำแหน่งสูงสุดในกระดานจัดอันดับ
ในขณะนี้ เรามี AI ที่มีระดับความฉลาดเพียงระดับเดียวเท่านั้น เราจึงต้องปรับระดับความยากของคู่ต่อสู้ที่เป็น AI ด้วยการปรับเลเวลของปาร์ตี้ที่ AI ใช้เพื่อให้เหมาะสมกับคะแนนภายในของคุณ หากคุณเลือกใช้ปาร์ตี้ที่มีเลเวลหลากหลายมากๆ และระบบจับคู่คุณกับคู่ต่อสู้ที่เป็น AI ทีมของ AI จะมีเลเวลเหมือนกับเลเวลทีมของของคุณ (แทนที่จะสุ่มเลือกเลเวลเฉลี่ย) แล้วเลเวลของปาร์ตี้ AI จะถูกปรับโดยอิงจากคะแนนของคุณ การอัพเดตคะแนนหลังจบเกมของคุณจะแตกต่างกันไปด้วยถ้าคุณสู้กับคู่ต่อสู้ AI เมื่อเทียบกับคู่ต่อสู้ทั่วไป
หมายเหตุเพิ่มเติม
ระบบอัพเดตคะแนนและระบบจับคู่ของเราไม่ได้พิจารณาตัวเลือกทหารรับจ้าง ความสามารถ หรืออุปกรณ์ที่คุณนำเข้ามาในสังเวียนต่อสู้แบบเฉพาะเจาะจง ทหารรับจ้างสองตัวที่มีเลเวลเท่ากัน ระดับความสามารถและอุปกรณ์เท่ากัน และสายเดียวกันจะได้รับการคำนวณเหมือนๆ กัน ระบบจะไม่คำนวณว่า ระหว่างทิรันเดอกับเร็กซ์ซาร์ ทหารรับจ้างตัวใดแข็งแกร่งกว่า “ด้วยตัวมันเอง” หรือว่าทหารรับจ้างตัวใดกำลังโดดเด่นในเมต้า เราเลือกที่จะปล่อยให้กรณีเหล่านี้เป็นสิ่งที่ชุมชนผู้เล่นได้ค้นหา
สุดท้ายแต่ไม่ท้ายสุด ผมอยากจะบอกว่ามีไฮเปอร์พารามิเตอร์ (hyper-parameter) จำนวนมากที่ควบคุมระบบคะแนน/จับคู่ ซึ่งส่วนใหญ่เราได้ไฮเปอร์พารามิเตอร์เหล่านี้มาจากการจำลองการต่อสู้ระหว่าง AI จำนวนมหาศาลเพื่อการคาดการณ์ เราจะตรวจสอบระบบคะแนนและการจับคู่อย่างใกล้ชิดหลังจากที่เปิดให้เล่นโหมดนี้ และอัพเดตอัลกอริธึมและ/หรือค่าตัวแปรโดยอิงจากข้อมูลการเล่นบนเซิร์ฟเวอร์จริง เรารับฟังความคิดเห็นของคุณอย่างต่อเนื่อง ดังนั้นโปรดแสดงความคิดเห็นเกี่ยวกับระบบคะแนนและจับคู่ได้เลย
เราหวังว่าคุณจะได้สนุกกับการสร้างปาร์ตี้ มุ่งหน้าไปที่สังเวียนต่อสู้ และเริ่มไต่อันดับในโหมดทหารรับจ้าง แล้วพบกันในโรงเตี๊ยม!