การอัปเดต Arma 3 เวอร์ชัน 2.20 ล่าสุดของ Bohemia Interactive ได้จุดประกายการสนทนาทางเทคนิคที่น่าสนใจเกี่ยวกับหนึ่งในความท้าทายที่ยืนยงที่สุดของวงการเกม นั่นคือการทำให้ระบบปัญญาประดิษฐ์และระบบสคริปต์ทำงานอย่างมีประสิทธิภาพข้ามหลายคอร์ของโปรเซสเซอร์ แม้ว่าการอัปเดตจะนำมาซึ่งการปรับปรุงประสิทธิภาพที่สำคัญผ่านการใช้ multithreading ที่ดีขึ้น แต่การสนทนาของชุมชนเผยให้เห็นข้อมูลเชิงลึกเพิ่มเติมว่าทำไม AI จึงยังคงยากต่อการประมวลผลแบบขนาน
การปรับปรุงของ Arma 3 Update 2.20:
- ความสามารถในการประมวลผลแบบหลายเธรดที่ดีขึ้น
- ระบบพารามิเตอร์ที่ได้รับการปรับปรุงใหม่ตั้งแต่เวอร์ชัน 1.50.128419
- Activities Group Manager (AGM) ใหม่เพื่อการจัดการทรัพยากรที่ดีขึ้น
- ระบบการสตรีมข้อมูลที่ได้รับการปรับปรุง (CPT)
- การประมวลผลแบบเธรดของระบบจำลองอนุภาคที่ได้รับการอัปเดต
- การจัดการพารามิเตอร์บรรทัดคำสั่งที่ดีขึ้น
![]() |
---|
แผนผังการทำงานที่แสดงความสัมพันธ์ระหว่าง main thread และ worker thread ซึ่งสะท้อนถึงการปรับปรุงทางเทคนิคในประสิทธิภาพ threading ของ AI |
ปัญหาหลักของการประมวลผล AI แบบขนาน
ปัญหาพื้นฐานอยู่ที่วิธีการออกแบบระบบ AI ของเกมแบบดั้งเดิม เกมเอนจินส่วนใหญ่ รวมถึงของ Arma 3 ให้ตัวละคร AI เข้าถึงข้อมูลทั้งหมดของโลกเกมได้อย่างสมบูรณ์และทันที สิ่งนี้สร้างคอขวดเพราะเมื่อหน่วย AI หลายตัวพยายามแก้ไขออบเจ็กต์เกมเดียวกันพร้อมกัน ความขัดแย้งจึงเกิดขึ้น ลองนึกภาพว่าเหมือนกับคนหลายคนพยายามแก้ไขเอกสารเดียวกันในเวลาเดียวกัน ความวุ่นวายจะเกิดขึ้นหากไม่มีการประสานงานที่เหมาะสม
นักพัฒนาชุมชนได้ระบุว่าการเลือกออกแบบแบบนี้ แม้จะดูเหมือนมีเหตุผล แต่จริงๆ แล้วป้องกันการประมวลผลแบบขนานที่มีประสิทธิภาพ เมื่อหน่วย AI ต้องโต้ตอบกับทรัพยากรที่ใช้ร่วมกัน เช่น จำนวนกระสุน คะแนนสุขภาพ หรือออบเจ็กต์ในโลกเกม ระบบจะต้องทำการดำเนินการเหล่านี้แบบอนุกรมเพื่อป้องกันการเสียหายของข้อมูล
![]() |
---|
แผนผังการทำงานที่แสดงรายละเอียดกระบวนการต่อเนื่องในการดำเนินงานของ AI โดยเน้นความซับซ้อนในการประสานงานทรัพยากรที่ใช้ร่วมกันระหว่างหน่วย AI |
แนวทางทางเลือกสำหรับการใช้เธรดของ AI
การสนทนาได้เผยให้เห็นโซลูชันที่มีแนวโน้มดีหลายแบบที่นักพัฒนาเกมอื่นๆ อาจพิจารณา แนวทางหนึ่งเกี่ยวข้องกับการให้ตัวละคร AI แต่ละตัวมีสำเนาข้อมูลโลกเกมในเครื่องที่พวกเขาสามารถอ่านได้ ขณะที่กำหนดให้พวกเขาส่งคำขอสำหรับการเปลี่ยนแปลงใดๆ ที่ต้องการทำ วิธีนี้จะขจัดความขัดแย้งโดยตรงที่ทำให้เกิดปัญหาการใช้เธรด
หากตัวละครแต่ละตัวทำสำเนาของโลกสำหรับสิ่งที่พวกเขารู้ จะไม่มีสิ่งใดป้องกันการประมวลผลแบบขนาน แม้ว่าสิ่งนี้จะหมายถึงการใช้หน่วยความจำแบบกำลังสอง แต่คุณสามารถจำกัดสิ่งนี้ได้ หากมีสิ่งต่างๆ เกิดขึ้นมาก เป็นเรื่องสมเหตุสมผลที่ตัวละครจะสูญเสียการติดตามบางส่วน
วิธีการอื่นใช้ระบบที่มีการหน่วงเวลาเฟรม โดยหน่วย AI อ่านข้อมูลจากเฟรมก่อนหน้าขณะเขียนการเปลี่ยนแปลงสำหรับเฟรมปัจจุบัน สิ่งนี้สร้างการแยกตามธรรมชาติระหว่างการดำเนินการอ่านและเขียน แม้ว่าจะสามารถสร้างความท้าทายด้านเวลาสำหรับการโต้ตอบที่ซับซ้อน
แนวทางเทคนิคหลักที่ได้หารือกัน:
- โมเดล Actor-Copy: หน่วย AI แต่ละตัวจะได้รับสำเนาข้อมูลโลกของตัวเอง และส่งคำขอเปลี่ยนแปลง
- ระบบ Frame-Delayed: AI อ่านข้อมูลจากเฟรม N-1 และเขียนข้อมูลไปยังเฟรม N
- การแทนที่ Fork-Join: ระบบคิวแทนการประมวลผลแบบแบตช์
- ขอบเขตการทำธุรกรรม: จุดควบคุมการโต้ตอบระหว่างหน่วย AI
- การแลกเปลี่ยนหน่วยความจำ: การใช้ RAM เพิ่มขึ้นเพื่อการทำงานแบบขนานที่ดีขึ้น
![]() |
---|
แผนภาพของ main thread ที่ทำงานร่วมกับ worker threads แสดงแนวคิดของข้อมูลที่เก็บไว้ในเครื่องในการประมวลผลแบบขนานของ AI |
ความท้าทายในการนำไปใช้ในโลกจริง
การสนทนาของชุมชนเน้นย้ำว่าโซลูชันเหล่านี้ไม่ใช่แค่ทฤษฎี แต่มาพร้อมกับการแลกเปลี่ยนในทางปฏิบัติ การใช้หน่วยความจำเพิ่มขึ้นอย่างมีนัยสำคัญเมื่อหน่วย AI แต่ละตัวรักษามุมมองโลกของตัวเอง นักออกแบบเกมยังต้องยอมรับว่าพฤติกรรม AI อาจจะแม่นยำน้อยลง เนื่องจากหน่วยต่างๆ ทำงานกับข้อมูลที่ล้าสมัยหรือไม่สมบูรณ์เล็กน้อย
ภาษาโปรแกรมอย่าง Rust กำลังทำให้รูปแบบเหล่านี้เข้าถึงได้ง่ายขึ้นโดยบังคับให้นักพัฒนาคิดอย่างรอบคอบเกี่ยวกับความเป็นเจ้าของข้อมูลตั้งแต่เริ่มต้น วินัยที่บังคับโดยคอมไพเลอร์นี้มักนำไปสู่การออกแบบที่สามารถประมวลผลแบบขนานได้ตามธรรมชาติ แม้ว่าจะต้องคิดใหม่เกี่ยวกับแนวทางสถาปัตยกรรมเกมแบบดั้งเดิม
บทเรียนสำหรับการพัฒนาเกม
การอัปเดตประสิทธิภาพของ Arma 3 ทำหน้าที่เป็นกรณีศึกษาสำหรับอุตสาหกรรมเกมในวงกว้าง แม้ว่า Bohemia Interactive จะได้ก้าวหน้าอย่างน่าประทับใจในการปรับปรุงเอนจินอายุ 12 ปีของพวกเขา แต่การสนทนาของชุมชนเผยให้เห็นว่าการตัดสินใจทางสถาปัตยกรรมบางอย่างที่ทำในช่วงต้นของการพัฒนายังคงจำกัดศักยภาพด้านประสิทธิภาพ
เกมเอนจินสมัยใหม่จำเป็นต้องสร้างสมดุลระหว่างความเข้ากันได้แบบย้อนหลังกับความต้องการด้านประสิทธิภาพมากขึ้น เมื่อจำนวนคอร์ของโปรเซสเซอร์เพิ่มขึ้นต่อไปในขณะที่ประสิทธิภาพคอร์เดียวหยุดนิ่ง ความท้าทายด้านการใช้เธรดเหล่านี้จะกลายเป็นสิ่งสำคัญมากขึ้นสำหรับการรักษาประสบการณ์การเล่นเกมที่ราบรื่น
การสนทนาทางเทคนิคที่ดำเนินต่อไปเกี่ยวกับการอัปเดตของ Arma 3 แสดงให้เห็นว่าความเชี่ยวชาญของชุมชนสามารถให้ความกระจ่างแก่ปัญหาทางวิศวกรรมที่ซับซ้อน โดยให้ข้อมูลเชิงลึกที่มีค่าสำหรับนักพัฒนาที่เผชิญกับความท้าทายที่คล้ายกันทั่วทั้งอุตสาหกรรมเกม