เล่นคนเดียวแล้วสามในสี่ปราสาทจะถูกป้องกันโดยเครื่องจักร ขุนศึกคอมพิวเตอร์แต่ละตนรันลูปสั้น ๆ ชุดเดียวกัน คือหาลูกบอลที่ควรค่าแก่การกลัว เดาว่ามันจะข้ามกำแพงของตนตรงไหน เลื่อนไปรับมัน และช่องว่างระหว่างขุนศึกที่กินง่ายกับขุนศึกที่น่าสะพรึงก็ลงเอยอยู่ที่ตัวเลขสี่ตัว
เขียนและเรียบเรียงเป็นภาษาอังกฤษ ฉบับภาษาไทยนี้จัดทำขึ้นด้วยการแปลด้วยเครื่อง ในจุดที่ความแม่นยำมีความสำคัญ ให้ถือต้นฉบับภาษาอังกฤษเป็นหลัก อ่านต้นฉบับภาษาอังกฤษ →
งานแรกของขุนศึก ซึ่งทำหนึ่งร้อยยี่สิบครั้งต่อวินาที คือการคัดแยกลำดับความสำคัญ เมื่อมีลูกบอลลอยอยู่ในสนามได้ถึงสองลูก AI ต้องตัดสินว่าลูกไหนคู่ควรกับโล่ของมัน มันให้คะแนนลูกบอลทุกลูกที่ยังทำงานอยู่และไม่ได้ถูกถือไว้ ด้วยระยะห่างจากราชาของตนเอง แล้วหักโบนัสคงที่ 250 หน่วยออกจากลูกที่กำลังมุ่งหน้ามายังมุมของตนจริง ๆ ส่วนลูกที่กำลังเคลื่อนออกห่างจะถูกปฏิบัติราวกับว่ามันอยู่ไกลกว่าความเป็นจริงไปอีก 250 หน่วย 1 ลูกที่ได้คะแนนต่ำที่สุดคือลูกที่ชนะความสนใจของโล่
ผลลัพธ์คือผู้ป้องกันที่ไม่ตื่นตระหนกกับลูกบอลซึ่งลอยผ่านไปเฉย ๆ อย่างไม่มีพิษภัย แต่จะจับจ้องลูกที่อยู่ใกล้กว่าและกำลังพุ่งเข้ามาทันที มันเป็นแบบจำลองหยาบ ๆ ของสิ่งที่มนุษย์ทำโดยไม่ต้องคิด คือมองสิ่งที่กำลังพุ่งเข้าหาตัว และเมินสิ่งที่กำลังจากไป การตัดสินทั้งหมดนี้คือผลคูณจุด (dot product) เพียงค่าเดียวระหว่างความเร็วของลูกบอลกับทิศทางที่ชี้ไปยังราชา ค่าบวกแปลว่า “เล็งมาที่ข้า” และเท่านั้นก็พอแล้ว
เมื่อเลือกภัยคุกคามได้แล้ว ขุนศึกต้องตัดสินว่าจะไปอยู่ตรงไหนบนรางแนวทแยงของตน มันไม่ได้แก้เส้นทางการสะท้อนทั้งหมด ไม่มีการไล่รอยการสะท้อน ไม่มีการพยากรณ์การกระดอนจากผนัง มันเอาตำแหน่งของลูกบอล ดันไปข้างหน้าอีกก้าวสั้น ๆ ตามความเร็วปัจจุบันของมัน (เล็งนำ 0.12 วินาที) แล้วฉายจุดในอนาคตนั้นลงบนรางตรง ๆ เพื่อให้ได้เศษส่วนเป้าหมายระหว่าง 0 ถึง 1 1
นี่คือการทำนายแบบตื้นเขินโดยเจตนา และมันคือเหตุผลที่ AI ตัวนี้เอาชนะได้ เพราะมันเล็งนำเพียงหนึ่งในแปดวินาทีและไม่เคยคาดการณ์การกระดอน ลูกบอลที่จะมาถึงโดยผ่านการกระทบผนังจึงหลอกมันได้ มันผูกมัดตัวเองไว้กับทิศที่ลูกบอลชี้อยู่ในขณะนี้ มนุษย์ที่ยิงลูกกระทบขอบสนามก็กำลังใช้ประโยชน์จากจุดบอดนี้พอดี เครื่องจักรตอบสนองต่อปัจจุบันด้วยการมองล่วงหน้าเพียงเส้นยาแดง มันไม่ได้วางแผน
คอมพิวเตอร์ไม่ได้คำนวณอนาคตของลูกบอล มันเพียงโน้มตัวไปข้างหน้าหนึ่งในแปดวินาที ชี้โล่ไปยังจุดที่ลูกบอลจะอยู่หากไม่มีอะไรมาขวาง แล้วปล่อยให้ทุกสิ่งที่เข้ามาขวางกลายเป็นโอกาสของคุณ
ความยากทั้งสามระดับใช้เนื้อโค้ดชุดเดียวกันทุกประการ สิ่งที่เปลี่ยนไประหว่างง่าย ปานกลาง และยาก คือแถวของตัวเลขปรับจูนสี่ตัว 1 ความสั่นสุ่มเพิ่มความคลาดเคลื่อนแบบสุ่มให้แก่เป้าหมายของโล่ การเล็งของขุนศึกระดับง่ายจึงเถลไถลไปเกือบหนึ่งในห้าของรางของมัน ขณะที่ระดับยากแทบจะเป๊ะ ระยะตอบสนองกำหนดว่าลูกบอลต้องเข้ามาใกล้แค่ไหนก่อนที่ขุนศึกจะยอมติดตามมัน ระดับง่ายจะเมินทุกอย่างที่ห่างจากราชาของตนเกิน 420 หน่วย ซึ่งน้อยกว่าครึ่งหนึ่งของความกว้างกระดานอยู่เล็กน้อย ส่วนระดับยากติดตามได้ทั่วทั้งสนาม โอกาสรับลูกคือความน่าจะเป็นที่มันจะคว้าลูกบอลซึ่งเข้ามาใกล้โล่พอที่จะรับได้ และการเล็งใส่คู่แข่งคือสวิตช์ตัวเดียวที่ตัดสินว่าขุนศึกจะเล่นเกมรุกหรือไม่
| ปุ่มปรับ | ง่าย | ปานกลาง | ยาก |
|---|---|---|---|
| ความสั่นสุ่มของการเล็ง (เศษส่วนของราง) | 0.18 | 0.07 | 0.015 |
| ระยะตอบสนอง (หน่วย) | 420 | 700 | 2,000 |
| โอกาสรับลูก | 0% | 25% | 55% |
| เล็งใส่คู่แข่งไหม | ไม่ | ไม่ | ใช่ |
ค่าทั้งสี่มาจากตารางปรับจูนเล็ก ๆ ตารางเดียวภายในเอนจินเกม Bulwark หนึ่งแถวต่อหนึ่งระดับ ระยะตอบสนองของระดับยากถูกเขียนไว้เป็นสองเท่าของความกว้างสนาม และสนามเป็นจัตุรัสขนาด 1,000 หน่วย ดังนั้น 2,000 หน่วยจึงหมายถึง “ติดตามตลอดเวลา” 1
ขุนศึกระดับง่ายหรือปานกลางไม่เคยรับลูกโดยตั้งใจจะโจมตี ระดับง่ายไม่เคยรับลูกเลยแม้แต่ครั้งเดียว ส่วนระดับปานกลางก็รับเพียงนาน ๆ ครั้ง โดยไม่มีแผนว่าจะทำอย่างไรกับลูกบอลเมื่อได้มันมาแล้ว แต่พอสับสวิตช์เล็งใส่คู่แข่ง ซึ่งเป็นสิ่งที่มีเฉพาะในระดับยากเท่านั้น AI ก็เลิกเป็นฝ่ายตั้งรับอย่างเดียว เมื่อมันถือลูกบอลไว้ มันจะมองข้ามกระดานออกไป เลือกคู่แข่งที่บอบช้ำที่สุด (ผู้ที่เหลืออิฐน้อยที่สุด) แล้วเล็งไปทางนั้น 1
มันทำเช่นนี้ได้โดยไม่ต้องใช้การค้นหาเส้นทางใด ๆ เลย มันสุ่มตัวอย่างตำแหน่งผู้สมัครสิบเอ็ดตำแหน่งตลอดรางของตนเอง และสำหรับแต่ละตำแหน่งก็จำลองคณิตศาสตร์การปล่อยลูกของเอนจินขึ้นมาใหม่ เพื่อดูว่าการยิงจากจุดนั้นจะพุ่งไปในทิศใด แล้วเก็บตำแหน่งที่เวกเตอร์ขาออกชี้ตรงไปยังเหยื่อที่เลือกไว้มากที่สุด 1 มันคือการไล่ลองทุกทางบนตัวเลือกไม่กี่ทางมากกว่าจะเป็นความฉลาด แต่มันก็อดทนกับสิ่งนี้ คือเมื่อเลือกจุดได้แล้ว ขุนศึกจะถือลูกบอลไว้จนกว่าโล่จะเลื่อนไปถึงจุดนั้นจริง ๆ และจะปล่อยก็ต่อเมื่อไปถึงแล้ว หรือถือไว้นานพอจนการรอต่อไปมีต้นทุนสูงกว่าคุณค่าของการยิงนั้น เจตนานั้นเป็นเชิงยุทธศาสตร์อย่างไม่ต้องสงสัย เป็นสิ่งที่มนุษย์ซึ่งกำลังล่าเหยื่อที่ฆ่าได้ง่ายจะทำเป๊ะ ๆ การเลือกเป้าหมายด้วยเกณฑ์ “อิฐเหลือน้อยที่สุด” เท่ากับหันผู้ป้องกันอิสระสามตนไปยังผู้ที่กำลังเป็นฝ่ายแพ้อยู่แล้ว
ทุกสิ่งที่ “สุ่ม” ซึ่งขุนศึกทำ ไม่ว่าจะเป็นความสั่นสุ่มในการเล็งหรือการโยนหัวก้อยว่าจะรับลูกหรือไม่ ล้วนถูกดึงมาจากตัวสร้างเลขสุ่มที่มีค่าซีด เป็นรูทีนกะทัดรัดที่รู้จักกันในชื่อ mulberry32 ซึ่งเปลี่ยนเลขตั้งต้นเพียงตัวเดียวให้กลายเป็นสายค่าสุ่มเทียมที่ยาวและทำซ้ำได้ 2 ป้อนค่าซีดเดิมให้มัน แล้วมันก็จะผลิตลำดับเดิมออกมาตลอดกาล แมตช์สดจะเอาค่าซีดมาจากนาฬิกา จึงไม่มีสองเกมใดเปิดฉากเหมือนกัน แต่ถ้าป้อนค่าซีดเดิมกลับเข้าไป แมตช์นั้นก็จะดำเนินซ้ำอย่างเป๊ะ ๆ ทั้งมุมยิงเดิม ความสั่นคลอนเดิม และการรับลูกเดิม
ความตายตัวนั้นไม่ใช่รายละเอียดเชิงผิวเผิน มันคือสิ่งที่ทำให้เกมทดสอบได้ ชุดทดสอบของเกมเล่นแมตช์คอมพิวเตอร์ปะทะคอมพิวเตอร์ทั้งแมตช์จากค่าซีดที่ตรึงไว้ และคาดหวังผลลัพธ์เดิมทุกครั้ง และมันคือสิ่งที่ทำให้การจำลองทั้งหมด รวมถึงเคอร์เซอร์ของตัวสร้างเลขสุ่มด้วย ถูกอัดลงใน JSON แล้วสร้างขึ้นใหม่ได้ เพื่อให้เมื่อเล่นออนไลน์ โฮสต์สตรีมสถานะของตนออกไป และผู้เล่นคนอื่นแต่ละคนก็สร้างกระดานที่เหมือนกันเป๊ะขึ้นมาใหม่ได้ ขุนศึกเหล่านี้รู้สึกเหมือนมีชีวิตเพราะความผิดพลาดของพวกมันดูเป็นมนุษย์ แต่ลึกลงไป “สัญชาตญาณ” ของพวกมันคือความสัมพันธ์เวียนบังเกิดทางเลขคณิตสั้น ๆ ที่ใครก็หมุนย้อนกลับไปยังจุดเริ่มต้นได้ เครื่องจักรที่เฝ้าปราสาท เอาเข้าจริงแล้วต้องการเพียงตัวเลขไม่กี่ตัวกับสายธารของโชคที่ทำซ้ำได้ 2