การสืบสวนด้วย Profiling ของนักพัฒนาเผยให้เห็น Third-Party Plugin เป็นตัวการที่ทำให้เกมสะดุด

ทีมชุมชน BigGo
การสืบสวนด้วย Profiling ของนักพัฒนาเผยให้เห็น Third-Party Plugin เป็นตัวการที่ทำให้เกมสะดุด

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

นักพัฒนาคนนี้ประสบปัญหาการสะดุดอย่างต่อเนื่อง โดยอัตราเฟรมจะลดลงจาก 160 ไปต่ำสุดที่ 90 FPS ระหว่างการเล่นเกม ในเกมแข่งรถที่เร็วอย่าง Trackmania การลดลงของประสิทธิภาพเช่นนี้สามารถทำให้รถแล่นไปได้มากกว่า 40 เมตรระหว่างเฟรม ทำให้การควบคุมอย่างแม่นยำเป็นไปไม่ได้เลย

รายละเอียดผลกระทบต่อประสิทธิภาพ:

  • อัตราเฟรมเดิม: ประมาณ 160 FPS
  • อัตราเฟรมที่ลดลงเนื่องจากการกระตุก: 110-90 FPS
  • ระยะทางที่เดินทางได้ระหว่างการกระตุก 100ms: มากกว่า 40 เมตร
  • เครื่องมือ profiling ที่ใช้: JetBrains dotTrace

วิธีการ Deep Dive Profiling ได้รับปฏิกิริยาที่หลากหลาย

โดยใช้ JetBrains dotTrace profiler นักพัฒนาได้ทำการวิเคราะห์ประสิทธิภาพของเกมอย่างครอบคลุมโดยไม่มีการเข้าถึง source code การสืบสวนนี้เผยให้เห็นรายละเอียดทางเทคนิคที่น่าสนใจ รวมถึงการมีอยู่ของระบบ overlay หลายระบบและ video decoder thread ลึกลับที่ทำงานระหว่างการเล่นเกม อย่างไรก็ตาม การตอบสนองของชุมชนได้เน้นย้ำถึงข้อผิดพลาดพื้นฐานในวิธีการแก้ไขปัญหา

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

การวิจารณ์ของชุมชนต่อลำดับการแก้ไขปัญหา

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

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

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

การสืบสวนทางเทคนิคเผยให้เห็นรายละเอียดที่น่าสนใจ

แม้จะมีข้อกังวลเกี่ยวกับวิธีการ การสืบสวนทางเทคนิคได้เปิดเผยการค้นพบที่น่าสนใจหลายประการ การ profiling เผยให้เห็นว่า Trackmania มีปฏิสัมพันธ์กับทั้ง Steam และ Ubisoft Connect overlays พร้อมกัน และทำงาน video decoder thread อย่างลึกลับแม้ระหว่างการเล่นเกมจริงมากกว่าแค่ในเมนู

การวิเคราะห์ของนักพัฒนาแสดงให้เห็นว่า OpenPlanet มีระบบเตือนที่ออกแบบมาเพื่อตรวจจับเมื่อปลั๊กอินทำให้เกิดปัญหาประสิทธิภาพ อย่างไรก็ตาม ระบบนี้ล้มเหลวในการระบุปลั๊กอินที่มีปัญหาเพราะการสะดุดเกิดขึ้นทางอ้อมผ่าน game code ทำให้ยากต่อการติดตามกลับไปยังแหล่งที่มาของปลั๊กอินดั้งเดิม

ผลการตรวจสอบทางเทคนิค:

  • เกมมีการเชื่อมต่อกับทั้ง Steam Overlay (overlay64.dll) และ Ubisoft Connect Overlay (d3doverlayrender.dll)
  • มี webmdecoder thread ที่ลึกลับทำงานระหว่างการเล่นเกม
  • ระบบเตือนของ OpenPlanet plugin ไม่สามารถตรวจจับปัญหาประสิทธิภาพทางอ้อมได้
  • ปัญหาได้รับการแก้ไขโดยการถอนการติดตั้ง OpenPlanet modding platform

การแก้ไขและบทเรียนที่ได้เรียนรู้

หลังจากถอนการติดตั้ง OpenPlanet ปัญหาการสะดุดหายไปทันที ยืนยันสาเหตุที่เกี่ยวข้องกับปลั๊กอิน การติดตั้งแพลตฟอร์มใหม่โดยไม่มีปลั๊กอินที่มีปัญหาทำให้การเล่นเกมกลับมาราบรื่น นักพัฒนาสังเกตว่าพวกเขาไม่สามารถระบุได้ว่าปลั๊กอินใดเป็นสาเหตุของปัญหา เนื่องจากพวกเขาไม่มีรายการที่แน่นอนของการดัดแปลงที่ติดตั้งไว้ก่อนหน้านี้

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

การอภิปรายยังเผยให้เห็นคำถามที่กว้างขึ้นเกี่ยวกับความรับผิดชอบของระบบนิเวศปลั๊กอินและความท้าทายในการดีบักปัญหาที่เกิดขึ้นทางอ้อมผ่าน game code ที่ถูกดัดแปลง ซึ่งเครื่องมือตรวจสอบประสิทธิภาพแบบดั้งเดิมอาจไม่สามารถระบุสาเหตุรากได้อย่างชัดเจน

อ้างอิง: Profiling without source code - how I diagnosed Trackmania stuttering