1 คะแนน โดย GN⁺ 2024-01-14 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

ปัญหา Steam ของ Valve ที่อยู่มา 10 ปี ทุกคนเร็วกว่า Valve กันหมดหรือ?

  • Valve บางครั้งดูเหมือนจะไม่ตอบสนองต่อฟีดแบ็กจากชุมชนและรายงานบั๊ก
  • เรื่องราวของบั๊กที่อยู่มานาน 10 ปี

tl;dr

  • วิธีแก้ยอดนิยมหลายอย่างที่ใช้เพื่อแก้ปัญหา No user logon ของ Counter-Strike ซึ่งคงอยู่มานานกว่า 10 ปีนั้น แท้จริงแล้วไม่ได้แก้ที่ต้นตอของปัญหา
  • หากคุณเจอบทความนี้ผ่าน Google อย่าลองวิธีต่อไปนี้:
    • ติดตั้งเกมใหม่
    • ตรวจสอบไฟล์เกม
    • รีสตาร์ต Steam
    • รีสตาร์ตคอมพิวเตอร์
    • ปิดใช้งาน WiFi

Introduction

  • Counter-Strike เป็นเกมชื่อดังที่พัฒนาโดย Valve
  • เมื่อไม่นานมานี้ Counter-Strike 2 (CS2) ได้เปิดตัวและเข้ามาแทนที่ Counter-Strike: Global Offensive (CS:GO)
  • CS2 มีบั๊กจำนวนมาก ทำให้ประสบการณ์การเล่นไม่ดีนัก
  • Valve ไม่ได้นำ CS2 เข้าไปรวมในโปรแกรมบั๊กบาวน์ตี HackerOne จึงไม่มีการจ่ายรางวัลสำหรับรายงานบั๊กที่เกี่ยวข้องกับ CS2

No user logon

  • บั๊กที่ชุมชนรายงานกันมาหลายปียังคงไม่ได้รับการแก้ไขและยังมีอยู่ใน CS2
  • ข้อผิดพลาด No user logon เกิดขึ้นแบบสุ่มระหว่างเล่นเกม
  • ปัญหานี้ถูกรายงานหลายครั้งในหลายฟอรัมและในฟอรัมซัพพอร์ตอย่างเป็นทางการของ Valve
  • วิธีแก้ที่มีการแนะนำนั้นไม่ได้แก้ปัญหาได้จริง

Esportal specific

  • Esportal เองก็เจอปัญหานี้มาหลายปี และทำได้เพียงลดความถี่ในการเกิดลง ไม่ได้แก้ปัญหาจริง
  • ใน CS2 ตอนแรกดูเหมือนว่าปัญหาจะถูกแก้แล้ว แต่ในสัปดาห์แรกของเดือนมกราคม 2024 รายงานปัญหาก็เพิ่มขึ้นอีกครั้ง

The symptoms

  • ข้อผิดพลาด No user logon มักเกิดขึ้น 2-3 นาทีหลังจากผู้เล่นเชื่อมต่อเข้าเกม
  • อาจเกี่ยวข้องกับอาการที่สกินจะปรากฏขึ้นหลังเริ่มเกมไปแล้วไม่กี่นาที

Validation of the hypothesis

  • มีความเป็นไปได้สูงว่าเป็นปัญหาที่เกี่ยวข้องกับการยืนยันตัวตนของ Steam
  • เวลาที่ใช้จน STEAM USERID validated สำเร็จ ก่อนวันที่ 3 มกราคมอยู่ที่ 2-3 วินาที แต่หลังจากนั้นเพิ่มเป็นประมาณ 1 นาที 20 วินาที

NETWORK_DISCONNECT_STEAM_LOGON

  • ดูเหมือนจะเป็นบั๊กที่เกี่ยวข้องกับการยืนยันตัวตนของ Steam
  • พบล็อก STEAMAUTH: Client Bob received failure code 8

Steam3 validation

  • เซิร์ฟเวอร์ Steam3 มีหน้าที่รับผิดชอบการยืนยันตัวตนผู้ใช้
  • เกมเซิร์ฟเวอร์จะขอให้เซิร์ฟเวอร์ Steam3 ตรวจสอบว่า Steam ID นั้นถูกต้องหรือไม่
  • ระหว่างที่เซิร์ฟเวอร์ Steam3 กำลังตรวจสอบ ผู้เล่นยังเล่นเกมต่อได้ แต่สกินจะยังไม่ถูกกำหนดให้

Making it trustable

  • จำเป็นต้องมีกระบวนการตรวจสอบว่า CS2.exe เชื่อถือได้หรือไม่
  • Steam.exe รู้ว่าบัญชีใดกำลังล็อกอินอยู่ในขณะนั้น และจะตรวจสอบว่าตรงกับ Steam ID ที่ส่งมาจาก CS2.exe หรือไม่

NETWORK_DISCONNECT_LOOPSHUTDOWN

  • ยังมีเหตุผลของการตัดการเชื่อมต่ออีกแบบหนึ่งคือ NETWORK_DISCONNECT_LOOPSHUTDOWN
  • สิ่งนี้หมายความว่าเกมเองเป็นผู้ทำให้เกิดความพยายามเชื่อมต่อใหม่โดยอัตโนมัติ

Loops in the Source engine

  • Source engine มีลูปที่ทำงานจนกว่าจะบรรลุเป้าหมายบางอย่าง
  • CS2.exe รันลูปหลายตัว และสุดท้ายจะไปรันลูป game

The disconnection

  • เมื่อหนึ่งในลูปจบลง การเชื่อมต่ออาจถูกตัดด้วย NETWORK_DISCONNECT_LOOPSHUTDOWN

CS2 startup procedure

  • เมื่อ CS2.exe เริ่มทำงาน มันจะรันหลายลูป และลูป levelload จะเริ่มการตรวจสอบ Steam ID ก่อนเปลี่ยนไปเป็นลูป game

ความเห็นของ GN⁺:

  1. บทความนี้ให้การวิเคราะห์เชิงลึกเกี่ยวกับบั๊ก No user logon ที่ยังไม่ได้รับการแก้ไขมาอย่างยาวนานในซีรีส์ Counter-Strike ของ Valve ซึ่งช่วยให้เข้าใจความยากของการพัฒนาและบำรุงรักษาเกม
  2. ประเด็นที่ Valve ดูเหมือนไม่ตอบสนองต่อฟีดแบ็กจากชุมชนและรายงานบั๊กอย่างเหมาะสม เน้นย้ำความสำคัญของการสื่อสารระหว่างผู้พัฒนาเกมกับผู้ใช้
  3. บทความนี้แสดงให้เห็นความซับซ้อนของวิศวกรรมซอฟต์แวร์และความท้าทายในกระบวนการติดตามและแก้ไขบั๊กได้เป็นอย่างดี ซึ่งเน้นถึงความจำเป็นของแนวทางที่เป็นระบบในการแก้ปัญหาบั๊ก

1 ความคิดเห็น

 
GN⁺ 2024-01-14
ความคิดเห็นจาก Hacker News
  • ความคิดเห็นแรกอธิบายระบบ session ticket ของ Steam โดยระบุว่าเกมไคลเอนต์จะขอ session ticket จากเซิร์ฟเวอร์ Steam และส่งให้กับเกมเซิร์ฟเวอร์เพื่อยืนยัน Steam ID เกมเซิร์ฟเวอร์ต้องตรวจสอบ ticket นี้ผ่านเว็บ API ของ Steam และชี้ว่าไคลเอนต์ CS2 ดูเหมือนจะจัดการไม่ได้เมื่อเกิดความล่าช้าในการรับ session ticket

    "คำอธิบายเกี่ยวกับระบบ session ticket ของ Steam และการชี้ปัญหาการจัดการความล่าช้าของไคลเอนต์ CS2"

  • ความคิดเห็นที่สองชี้ว่าข้อสรุปของบทความยังไม่ชัดเจน พร้อมกล่าวถึงปัญหาในวิธีการเริ่มต้น Counter-Strike และความเป็นไปได้ที่งานบำรุงรักษาในวอชิงตันจะก่อปัญหาแก่ผู้เล่นทั่วโลก อีกทั้งอธิบายว่าการยืนยัน Steam ID เกิดขึ้นเป็นขั้นตอนสุดท้ายก่อนเริ่ม game loop ดังนั้นเมื่อเซิร์ฟเวอร์ช้าระหว่างการบำรุงรักษาก็อาจขัดขวางการเริ่มเกมได้

    "การวิเคราะห์ผลกระทบของวิธีเริ่มต้น Counter-Strike และงานบำรุงรักษาที่มีต่อการเกิดปัญหา"

  • ความคิดเห็นที่สามชี้ถึงบั๊กที่ทำให้การยืนยันตัวตนก่อนเริ่มเกมแบบผู้เล่นหลายคนไม่ใช่สิ่งจำเป็น

    "การชี้ถึงการขาดความจำเป็นในการยืนยันตัวตนให้เสร็จก่อนเริ่มเกมหลายผู้เล่น"

  • ความคิดเห็นที่สี่สงสัยว่าสามารถสืบหาสาเหตุที่เกมไคลเอนต์แครชโดยไม่คาดคิดด้วยวิธีเดียวกันได้หรือไม่ และกล่าวถึงงานวิจัยเกี่ยวกับการลดเวลาโหลดของ GTA V

    "การกล่าวถึงการสืบหาสาเหตุการแครชของเกมไคลเอนต์และงานวิจัยลดเวลาโหลด GTA V"

  • ความคิดเห็นที่ห้าชี้ว่าสำนวนของบทความโอ้อวดเกินไป และเสนอให้เข้าสู่ประเด็นสำคัญให้เร็วขึ้น

    "การเน้นว่าสำนวนบทความเกินจริงและความสำคัญของการสื่อสารประเด็นหลัก"

  • ความคิดเห็นที่หกเสนอให้เพิ่มสรุปสั้น ๆ สำหรับการแก้ปัญหาไว้ในช่วงต้นของบทความ

    "ข้อเสนอให้เพิ่มสรุปสั้น ๆ เพื่อการแก้ปัญหา"

  • ความคิดเห็นที่เจ็ดถามว่า levelloadloop ทำงานเฉพาะตอนเริ่มเกมหรือทำงานตอนเชื่อมต่อเซิร์ฟเวอร์และโหลดแผนที่ด้วย

    "คำถามเกี่ยวกับช่วงเวลาที่ levelloadloop ทำงาน"

  • ความคิดเห็นที่แปดหวังให้ประสิทธิภาพของแอป Steam บน macOS ดีขึ้น

    "ความต้องการให้ปรับปรุงประสิทธิภาพของแอป Steam บน macOS"

  • ความคิดเห็นที่เก้าชี้ถึงปัญหาความปลอดภัยของ Valve และกล่าวถึงข้อเท็จจริงที่ว่า CS:GO ถูกตัดออกจากขอบเขตสำหรับรายงานฉบับใหม่

    "การกล่าวถึงปัญหาความปลอดภัยของ Valve และการตัด CS:GO ออกจากขอบเขต"

  • ความคิดเห็นสุดท้ายแบ่งปันประสบการณ์ในอดีตที่เคยสร้างเครื่องมือแสดงรายชื่อเซิร์ฟเวอร์และคะแนนของผู้เล่นที่กำลังเล่นอยู่ พร้อมตั้งข้อสังเกตว่าบั๊กเก่าอาจยังคงมีอยู่

    "การกล่าวถึงประสบการณ์พัฒนาเครื่องมือแสดงรายชื่อเซิร์ฟเวอร์ในอดีตและความเป็นไปได้ที่บั๊กเก่ายังคงอยู่"