เมื่อผมสร้างบั๊ก แต่กลับกลายเป็นระบบหลักของเกม · khram
ตอนที่ 58
บทที่ 58 ใครบอกให้คุณต้องใช้ fake-AI ด้วยล่ะ?
โดยไม่รู้ตัว กู้ฝานได้เริ่มใช้ทักษะการโยนความผิดครั้งใหญ่ขึ้นมาอีกครั้ง
แม้ว่าผิวเผินจะดูเหมือนเขาอาสาแบกรับความรับผิดชอบไว้บ้าง แต่ความรับผิดชอบเพียงเล็กน้อยนั้นแทบไม่มีผลอะไรเลย เพราะตัวการหลักของความผิดพลาดครั้งนี้ยังคงถูกโยนไปที่ลิลิธอย่างเต็มๆ
ทว่า จู่ๆ สีหน้าของลิลิธก็เปลี่ยนเป็นเฉียบคมขึ้นมา
“เดี๋ยวนะ เหมือนจะมีอะไรบางอย่างไม่ถูกต้อง”
ลิลิธดูเหมือนจะค้นพบจุดบอดบางอย่าง เธอลุกขึ้นยืนแล้วก้าวเดินอย่างรวดเร็วราวกับมีวิญญาณนักสืบเข้าสิง
“เรื่อง ‘ถุงแพร’ หรือ ‘ปัญหาการแยกแยะระหว่างกลยุทธ์มังกรหลับกับกลยุทธ์ทั่วไป’ เราพักไว้ก่อน”
“พูดเรื่อง ‘ดูดาว’ ก่อน!”
“กู้ฝาน ถ้าฉันจำไม่ผิด ‘ดูดาว’ เดิมทีออกแบบมาเพื่อผู้เล่นเท่านั้น หน้าที่ของมันมีแค่การแสดงแผงคุณสมบัติของ NPC บนหน้าจอให้ผู้เล่นเห็นเท่านั้น”
“ถ้าคุณไม่ได้เขียนโค้ดเป็นพิเศษ ฟังก์ชันนี้จะส่งผลต่อ NPC ได้ยังไง? AI ไม่มีตา และมองไม่เห็นแผงคุณสมบัติ แล้วการตัดสินใจของพวกมันถูก ‘ดูดาว’ ส่งผลกระทบได้อย่างไรกัน?”
ลิลิธจ้องมองกู้ฝานด้วยความสงสัยอย่างเต็มเปี่ยม
“ตอนที่ผู้เล่นใช้ ‘ถุงแพร’ คุณไม่ได้ทำให้กลยุทธ์มังกรหลับอันอื่นกลายเป็นสีเทา และไม่ได้ใส่หน้ากากป้องกันไม่ให้ผู้เล่นคลิก เรื่องนี้ฉันทนได้ เพราะในแผนงานออกแบบของฉันไม่ได้เขียนไว้ จะบอกว่าเป็นช่องโหว่ในการออกแบบก็ได้ ฉันจึงไม่ตำหนิคุณมากนัก”
“แต่ ‘ดูดาว’ มีสิทธิ์อะไรถึงส่งผลต่อ AI? นอกจากคุณจะตั้งใจทำแล้ว ยังมีคำอธิบายอื่นที่สมเหตุสมผลอีกเหรอ!”
เห็นได้ชัดว่าในตอนนี้ ความสงสัยที่ลิลิธมีต่อกู้ฝานพุ่งขึ้นสู่จุดสูงสุดทันที
แม้แต่คนที่ไม่ค่อยเข้าใจเรื่องการเขียนโปรแกรมอย่างเธอ ก็เริ่มสงสัยว่า BUG ตัวนี้มันดูเหลือเชื่อเกินไป หรืออาจจะเรียกได้ว่าไม่สมเหตุสมผลอย่างยิ่ง!
นั่นสิ การออกแบบที่ตั้งใจให้ใช้กับผู้เล่น จะส่งผลต่อ NPC ได้อย่างไร?
หาก BUG นั้นยังอยู่ในขอบเขตของกลไกเกม ก็ยังพอจะบอกได้ว่าเป็นเรื่องบังเอิญ
แต่ถ้า BUG ตัวหนึ่งจู่ๆ ก็มีความสามารถพิเศษที่อยู่นอกเหนือกลไกเกมล่ะ?
นั่นต้องเป็นเพราะโปรแกรมเมอร์แอบใส่ ‘ของส่วนตัว’ ลงไปในโค้ดอย่างแน่นอน!
ลิลิธรุกไล่ด้วยความมั่นใจเต็มเปี่ยม ถึงขั้นที่ในใจเริ่มคำนวณวิธีคิดบัญชีรวมกับกู้ฝานแล้ว
ทว่า กู้ฝานกลับดูมีเหตุผลและมั่นใจยิ่งกว่าเธอเสียอีก
“ทำไม ‘ดูดาว’ จะไม่ส่งผลต่อ AI ตัวอื่นล่ะ? คุณคิดแบบนั้นสิถึงจะแปลก!”
“เรื่องนี้เกี่ยวข้องโดยตรงกับกลไกพื้นฐานที่คุณออกแบบไว้เลยนะ!”
รูม่านตาของลิลิธสั่นไหวทันที ความโอหังก่อนหน้านี้ถูกฟาดจนราบคาบ
เธอแทบไม่เชื่อหูตัวเอง “คุณพูดเรื่องอะไรน่ะ?”
กู้ฝานถอนหายใจ ดูเหมือนจะระอาใจกับยัยนักออกแบบสุนัขที่ไม่มีความรู้เรื่องโค้ดเลยอย่างลิลิธ
“ผมถามหน่อย ตัวละครทั้งหมดในเกมใช้ fake-AI ในการควบคุมการเคลื่อนไหว นี่คือสิ่งที่คุณต้องการ ใช่ไหม?”
ลิลิธพยักหน้า “ใช่”
กู้ฝาน “คุณต้องการให้การเริ่มเกมแต่ละครั้งมีความสุ่มในระดับหนึ่ง AI เหล่านี้ไม่เพียงแต่ต้องทำให้การดำเนินเกมสอดคล้องกับแนวทางประวัติศาสตร์ในภาพรวม แต่ในรายละเอียดต้องมีความเป็นไปได้หลากหลายรูปแบบ เพื่อไม่ให้ผู้เล่นสามารถใช้บทสรุปเฉพาะทางมาลอกคำตอบเพื่อผ่านด่านได้ เรื่องนี้ก็ถูกต้องใช่ไหม?”
ลิลิธ “อืม ก็ไม่ผิด แต่เรื่องพวกนี้มันเกี่ยวอะไรกับฟังก์ชัน ‘ดูดาว’ ด้วย!”
กู้ฝานส่ายหน้าอย่างเด็ดขาด “เกี่ยวมากเลยล่ะ!”
“คุณคิดว่าแค่เอาเทมเพลตของ fake-AI มาสวมทับแล้วจะใช้งานฟังก์ชันนี้ได้เลยเหรอ? ไม่ต้องมีการพัฒนาและปรับจูนในภายหลังเลยหรือไง?”
ลิลิธอึ้งไป “ไม่ได้เหรอ?”
กู้ฝานพูดด้วยความระอา “คิดอะไรอยู่ แน่นอนว่าไม่ได้!”
“ง่ายๆ เลย สมมติว่าผมบอก fake-AI ว่า ตอนนี้คุณรับบทเป็นเฉาเชา ในช่วงเวลาที่ชวนหลิวเป้ยดื่มสุราต้มลูกท้อเพื่อสนทนาเรื่องวีรบุรุษ คุณควรตัดสินใจอย่างไร? ซึ่ง fake-AI มีโอกาสสูงมากที่จะสั่งกำจัดหลิวเป้ยทิ้งทันที”
“เพราะ fake-AI เวอร์ชันต้นฉบับกินข้อมูลประวัติศาสตร์มามหาศาล มันสามารถตัดสินได้ทันทีว่าหลิวเป้ยคือศัตรูที่น่ากลัวที่สุดในชีวิต ดังนั้นมันจึงต้องกำจัดหลิวเป้ยทิ้งแน่นอน”
“แต่ถ้าเป็นแบบนั้น มันก็ไม่ตรงตามข้อกำหนดที่คุณเสนอมา!”
“เห็นได้ชัดว่า สิ่งที่เราต้องการในเกมไม่ใช่ ‘เฉาเชาที่แสดงโดย fake-AI’ แบบธรรมดา แต่คือ ‘เฉาเชาที่แสดงโดย fake-AI และรับรู้ข้อมูลประวัติศาสตร์เฉพาะปัจจุบันเท่านั้น’!”
“ด้วยวิธีนี้ เขาถึงจะตัดสินว่าหยวนเซ่า, หยวนซู่, เถาเชียน, หลิวเปี่ยว, ลิโป้ และคนอื่นๆ เป็นศัตรูหลักของตน แทนที่จะสั่งฆ่าหลิวเป้ยทิ้งตั้งแต่เริ่ม”
ลิลิธเริ่มมึนงงเล็กน้อย “แล้วยังไงต่อ?”
กู้ฝานถอนหายใจ ดูเหมือนจะปวดหัวแทนกับการออกแบบที่เต็มไปด้วยช่องโหว่ของลิลิธ “ดังนั้น เพื่ออุดช่องโหว่ในการออกแบบของคุณ และเพื่อให้ฟังก์ชันนี้สมบูรณ์ยิ่งขึ้น ผมต้องพยายามอย่างหนักเพื่อปิดกั้นข้อมูลส่วน ‘การหยั่งรู้อนาคต’ ใน fake-AI เพื่อให้ AI เหล่านี้ใช้สถานการณ์ปัจจุบันในการตัดสินใจให้ได้มากที่สุด”
“เพื่อให้ได้ผลลัพธ์แบบนี้ โปรแกรมเมอร์สามคนของเราต้องทำงานล่วงเวลาจนคอมพิวเตอร์แทบจะพ่นควันออกมาเลย!”
ลิลิธยิ่งมึนงงหนักกว่าเดิม “โอเคๆ ฉันรู้แล้วว่าพวกคุณลำบากมาก แต่ก็ยังคงคำถามเดิม เรื่องนี้มันเกี่ยวอะไรกับ ‘กลยุทธ์มังกรหลับ’?”
กู้ฝานอธิบายต่อ “จุดสำคัญอยู่ที่วิธีการทำงานของ AI ตัวนี้นี่แหละ!”
“อย่างที่ผมบอกไป เราปิดกั้นข้อมูลการหยั่งรู้อนาคตของ fake-AI เพื่อให้พวกมันตัดสินใจได้สอดคล้องกับแนวทางประวัติศาสตร์ตามสถานการณ์ปัจจุบัน”
“แต่ในร่างการออกแบบของคุณเขียนไว้ว่า ขุนพลต้องมีตัวเลขเจ็ดมิติและข้อมูลประวัติชีวิตด้วย”
“ถ้า fake-AI สามารถอ่านข้อมูลขุนพลและประวัติชีวิตในโปรแกรมเกมได้ มันก็จะหยั่งรู้อนาคตได้อีกครั้งน่ะสิ?”
“ดังนั้น ผมจึงจงใจเข้ารหัสข้อมูลเหล่านี้เพื่อซ่อนไว้ภายในโปรแกรม ด้วยวิธีนี้ fake-AI จะไม่มีทางอ่านข้อมูลเหล่านี้ได้”
“ส่วนฟังก์ชัน ‘ดูดาว’ จริงๆ แล้วไม่ใช่การ ‘แสดงข้อมูลหลังบ้าน’ แต่คือการ ‘ส่งข้อมูลหลังบ้าน’!”
“เพราะข้อมูลเหล่านี้อยู่ในสถานะเข้ารหัสภายในโปรแกรม ดังนั้นฟังก์ชัน ‘ดูดาว’ แท้จริงแล้วคือ ‘การถอดรหัสข้อมูลที่ซ่อนอยู่ในโปรแกรม แล้วส่งต่อไปยังขุนพลที่ระบุไว้’”
ลิลิธขัดจังหวะด้วยความสงสัย “เดี๋ยวนะ ทำไมต้องส่งให้ขุนพลที่ระบุไว้ ไม่ส่งให้ ‘ผู้เล่น’ ล่ะ?”
กู้ฝานอธิบายว่า “ก็เหตุผลแรกสุดนั่นแหละ! เพราะขุนพลแต่ละตัวถูกควบคุมโดย fake-AI ที่แตกต่างกัน รูปแบบการเคลื่อนไหวของผู้เล่นและ AI ไม่มีความแตกต่างกันในเชิงสาระสำคัญ ดังนั้นจึงใช้การเข้ารหัสขุนพลที่ผู้เล่นและ AI ควบคุมไว้ในชุดเดียวกัน”
“จูเก่อเลี่ยงที่ผู้เล่นควบคุมคือรหัส 001 ส่วนหลิวเป้ย, เฉาเชา และขุนพลอื่นๆ ที่ fake-AI ควบคุมจะเป็นรหัส 002, 003 ตามลำดับ ในคลังรหัสขุนพลไม่มีรหัสที่ระบุว่าเป็น ‘ผู้เล่น’ โดยเฉพาะ”
“ฟังก์ชัน ‘ดูดาว’ พูดง่ายๆ ก็คือการถอดรหัสข้อมูลเหล่านี้แล้วแพ็กส่งไปให้จูเก่อเลี่ยงรหัส 001 หรือจะบอกว่า โปรแกรมระบบอนุญาตให้ขุนพลรหัส 001 ตรวจสอบข้อมูลขุนพลทั้งหมดที่ถูกซ่อนไว้ก็ได้”
“ดังนั้นภายในสี่เทิร์น ผู้เล่นจึงได้รับสิทธิ์ดังกล่าว เมื่อคลิกที่ขุนพลตัวอื่นจึงเห็นข้อมูลรายละเอียดได้”
“แต่เพราะช่องโหว่ในการออกแบบ ในร่างการออกแบบไม่ได้เขียนว่า ‘ดูดาวไม่สามารถส่งผลต่อขุนพลอื่นนอกจากรหัส 001 ได้’ ตอนเราเขียนโค้ดจึงไม่ได้สร้างข้อจำกัดนี้ไว้เป็นพิเศษ”
“ตัวอย่างเช่น รหัส 002 คือหลิวเป้ย หากผู้เล่นใช้ถุงแพรแล้วหลิวเป้ยได้รับผลของดูดาว ระบบก็จะส่งข้อมูลขุนพลทั้งหมดไปให้ขุนพลรหัส 002”
“ซึ่งขุนพลรหัส 002 แท้จริงแล้วคือ fake-AI ที่กำลังประมวลผลข้อมูลต่างๆ เพื่อตัดสินใจในขั้นต่อไป”
“และในจังหวะสำคัญนั้นเอง ระบบก็ส่งข้อมูลมหาศาลไปให้ ทั้งค่าความจงรักภักดี, ค่าคุณสมบัติ และประวัติชีวิตของขุนพลคนอื่นๆ”
“ดังนั้น AI ย่อมต้องปรับการตัดสินใจของตนเองตามข้อมูลเหล่านี้...”
ลิลิธถึงกับอ้าปากค้าง ตอนนี้เธอเริ่มเข้าใจสาเหตุของ BUG ตัวนี้คร่าวๆ แล้ว แต่ยังไม่อยากยอมรับง่ายๆ ว่าเป็นปัญหาของตัวเอง จึงพยายามโต้แย้งอีกครั้ง
“แต่ทำไมคุณต้องทำให้ฟังก์ชันนี้มันซับซ้อนขนาดนี้ด้วย? ทำเป็นแค่เอฟเฟกต์การแสดงผลธรรมดาไม่ได้เหรอ?”
กู้ฝานส่ายหน้า “ไม่ได้หรอก!”
“เหตุผลเดิมที่บอกไป fake-AI รวบรวมข้อมูลเพื่อคิดอยู่ตลอดเวลา ถ้าไม่ใช่การ ‘เข้ารหัสแล้วส่งข้อมูลแบบระบุเป้าหมาย’ แต่เป็นการ ‘โยนข้อมูลเหล่านี้ไว้ในโปรแกรมโดยไม่เข้ารหัส’ มันก็เท่ากับว่า fake-AI สามารถอ่านข้อมูลเหล่านี้ได้ตลอดเวลา”
“ถ้าเป็นแบบนั้น ก็เท่ากับว่า NPC ทุกตัวจะมีผลของดูดาวติดตัวถาวรเลยนะ!”
“แบบนั้นมันจะไม่แย่กว่าสถานการณ์ตอนนี้อีกร้อยเท่าเลยเหรอ?”
ลิลิธสับสนอย่างสมบูรณ์ เธอหงอยลงทันที ผมทวินเทลลู่ลงขณะที่เธอหดตัวเงียบๆ อยู่บนโซฟาบีนแบ็กที่มุมห้อง “สรุปคือ... รากเหง้าของทั้งหมดนี้ คือการ ‘ใช้ fake-AI’? แล้ว BUG ที่ตามมาเป็นพรวน ก็เพื่อที่จะทำตามข้อกำหนดการออกแบบนี้อย่างเคร่งครัด จนเกิดผลกระทบลูกโซ่ขึ้นมาใช่ไหม?”
กู้ฝานพยักหน้า แล้วตอบอย่างมั่นใจว่า “ใช่ครับ”







